成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

泥瓦匠進(jìn)階:連接池原理設(shè)計(jì)并不難

hiyang / 1290人閱讀

摘要:三連接池實(shí)現(xiàn)原理連接池原理,可以具體看下阿里巴巴包的源碼連接池實(shí)現(xiàn)原理也不難,即德魯伊連接池,可以核心設(shè)計(jì)接口服務(wù)啟動(dòng),會(huì)創(chuàng)建一批指定數(shù)量的連接放入數(shù)組這樣每次請(qǐng)求,不會(huì)新建一個(gè)連接。

摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號(hào):泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝!

目錄

連接

連接池產(chǎn)生原因

連接池實(shí)現(xiàn)原理

小結(jié)

TEMPERANCE:Eat not to dullness;drink not to elevation. 
節(jié)制:食不過飽,飲不過量。
一、連接

什么是連接?
連接,代表上游對(duì)下游的通信或會(huì)話。比如客戶端連接服務(wù)器、服務(wù)器連接數(shù)據(jù)存儲(chǔ)等

連接其通信的基本步驟,很類似 HTTP 操作:

上游對(duì)下游建立一個(gè)連接(客戶端與服務(wù)器需要建立連接。比如點(diǎn)擊某個(gè)超級(jí)鏈接)

上游通過連接,發(fā)送請(qǐng)求(建立連接后,客戶端發(fā)送請(qǐng)求給服務(wù)器)

上游通過連接,收到響應(yīng)(服務(wù)器接到請(qǐng)求后,響應(yīng)其響應(yīng)信息)

上游關(guān)閉連接,釋放連接資源(客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機(jī)與服務(wù)器斷開連接)

再深入點(diǎn),HTTP 持久連接是什么?HTTP 持久連接是指用同一個(gè) HTTP 底層的 TCP 連接來發(fā)送/接收多個(gè) HTTP 請(qǐng)求/響應(yīng)。擴(kuò)展點(diǎn),只需要在頭部設(shè)置:

Connection: Keep-Alive

為什么要有持久連接?每次都是從建立連接開始也可以達(dá)到結(jié)果,并且最后是關(guān)閉連接釋放資源。這就是引出連接池產(chǎn)生原因。

二、連接池產(chǎn)生原因

先看一下常見的 mysql-connector-java 包驅(qū)動(dòng)下面 ConnectionImpl 源碼:

trackConnection()

execSQL()
commit()

close()

對(duì) MySQL 多半是進(jìn)行連接(connection),增刪改查并提交(execSQL、commit),關(guān)閉連接(close)操作,然后實(shí)現(xiàn)業(yè)務(wù)相關(guān)邏輯。其操作也很清晰:

建立連接

發(fā)送請(qǐng)求(數(shù)據(jù)的 CRUD 操作)

關(guān)閉連接

但,為啥會(huì)需要有連接池?
其實(shí)在業(yè)務(wù)量流量不大,并發(fā)量也不大的情況下,連接臨時(shí)建立完全可以。
但并發(fā)量起來,達(dá)到百級(jí)、千級(jí),其中建立連接、關(guān)閉連接的操作會(huì)造成性能瓶頸,所以得考慮連接池來優(yōu)化上述 1 和 3 操作:

取出連接(業(yè)務(wù)服務(wù)啟動(dòng)時(shí),初始化若干個(gè)連接,放在連接存儲(chǔ)中)

發(fā)送請(qǐng)求(當(dāng)有請(qǐng)求,從連接存儲(chǔ)中中取出)

放回連接(執(zhí)行完畢,連接放回連接存儲(chǔ)中)

這里對(duì)連接存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu),并維護(hù)連接,就是連接池。

三、連接池實(shí)現(xiàn)原理

連接池原理,可以具體看下阿里巴巴 Druid 包的 DruidDataSource 源碼:

DruidConnectionHolder[] connections;

createConnection()
getConnection()
recycle()

連接池實(shí)現(xiàn)原理也不難,DruidDataSource 即德魯伊連接池,可以核心設(shè)計(jì)接口:

createConnection:服務(wù)啟動(dòng) init ,會(huì)創(chuàng)建一批指定數(shù)量的連接放入 connections 數(shù)組

getConnection:這樣每次請(qǐng)求,不會(huì)新建一個(gè)連接。而是從 DruidConnectionHolder[] connections 數(shù)組中取出一個(gè)連接

recycle:每次請(qǐng)求結(jié)束后,不是關(guān)閉連接,而是回收連接到 connections 數(shù)組

其中有個(gè)重入鎖 ReetrantLock,具體作用如下:

獲取一個(gè)連接,鎖住

返回該連接,使用連接

使用完畢,回收連接,并釋放鎖

四、小結(jié)

核心連接池也就這么點(diǎn)東西,具體還需要考慮其他點(diǎn)如下:

連接池連接設(shè)計(jì)遵守 LRU 策略,性能的關(guān)鍵點(diǎn)是連接是否 LRU 方式重用。LRU 資料:https://yq.aliyun.com/article...

通過 Hash 去連接,實(shí)現(xiàn)串行化

可以自動(dòng)擴(kuò)容連接數(shù)

連接數(shù)過多,可以自動(dòng)關(guān)閉連接,釋放資源

等等

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/73966.html

相關(guān)文章

  • 那些年我看過的書 —— 致敬我的大學(xué)生活 —— Say Good Bye !

    摘要:開頭正式開啟我入職的里程,現(xiàn)在已是工作了一個(gè)星期了,這個(gè)星期算是我入職的過渡期,算是知道了學(xué)校生活和工作的差距了,總之,盡快習(xí)慣這種生活吧。當(dāng)時(shí)是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎(chǔ)上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...

    xiaoqibTn 評(píng)論0 收藏0
  • 品阿里 Java 開發(fā)手冊(cè)有感

    摘要:并發(fā)處理書摘第一,線程必須通過線程池來提供,不允許顯式創(chuàng)建線程。具體行鎖,表鎖大家可以自行百度了解。因?yàn)樗嵌x的標(biāo)準(zhǔn)統(tǒng)計(jì)行數(shù)的預(yù)發(fā)。二者得保留事故服務(wù)器現(xiàn)場。最后感謝小冊(cè)子阿里巴巴開發(fā)手冊(cè),感覺不錯(cuò)。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號(hào):泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! showImg(https://segment...

    bang590 評(píng)論0 收藏0
  • 架構(gòu)~微服務(wù) - 收藏集 - 掘金

    摘要:它就是史上最簡單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過去消費(fèi)服務(wù),這篇文章主要講述通過去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處本文提綱一、自動(dòng)配置二、自定義屬性三、ran...

    church 評(píng)論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實(shí)現(xiàn)在軟件開發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點(diǎn)如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計(jì)模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過的點(diǎn)點(diǎn)滴滴,依然清楚的記得當(dāng)初愛情萌芽的模樣…… Java 進(jìn)階面試問題列表 -...

    chengtao1633 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<