成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

泥瓦匠進階:連接池原理設計并不難

hiyang / 1241人閱讀

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

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

目錄

連接

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

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

小結

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

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

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

上游對下游建立一個連接(客戶端與服務器需要建立連接。比如點擊某個超級鏈接)

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

上游通過連接,收到響應(服務器接到請求后,響應其響應信息)

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

再深入點,HTTP 持久連接是什么?HTTP 持久連接是指用同一個 HTTP 底層的 TCP 連接來發(fā)送/接收多個 HTTP 請求/響應。擴展點,只需要在頭部設置:

Connection: Keep-Alive

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

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

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

trackConnection()

execSQL()
commit()

close()

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

建立連接

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

關閉連接

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

取出連接(業(yè)務服務啟動時,初始化若干個連接,放在連接存儲中)

發(fā)送請求(當有請求,從連接存儲中中取出)

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

這里對連接存儲的數(shù)據(jù)結構,并維護連接,就是連接池。

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

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

DruidConnectionHolder[] connections;

createConnection()
getConnection()
recycle()

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

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

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

recycle:每次請求結束后,不是關閉連接,而是回收連接到 connections 數(shù)組

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

獲取一個連接,鎖住

返回該連接,使用連接

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

四、小結

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

連接池連接設計遵守 LRU 策略,性能的關鍵點是連接是否 LRU 方式重用。LRU 資料:https://yq.aliyun.com/article...

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

可以自動擴容連接數(shù)

連接數(shù)過多,可以自動關閉連接,釋放資源

等等

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73966.html

相關文章

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

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

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

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

    bang590 評論0 收藏0
  • 架構~微服務 - 收藏集 - 掘金

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

    church 評論0 收藏0
  • Java深入-框架技巧

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

    chengtao1633 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<