[英]How to improve on this connection pool design?
首先,我正在開發自己的DBCP(數據庫連接池)實現,
我不會接受使用c3p0之類的第三方DBCP的任何建議。
我將生產者-消費者設計模型用作DBCP的主要設計模板。
PRODUCER | CONSUMER
Pn, ... P3, P2, P1 >> << C1, C2, C3, ... Cn
對於生產者和消費者,我都使用LinkedList隊列。
將由最大數量的SQLConnectionWrapper實例填充。 我已采取步驟確保連接在隊列中是唯一的。 在.close()之后,連接將
我使用管家線程來刪除隊列中的陳舊/過期的連接,並生成新的連接以保持配置的最小連接數。
它將由FutureTask實例填充。 使用我的DBCP的應用會調用
Connection conn = dbcp.getConnection(long timeout);
這將,
這種設計可以進一步改進嗎? 有什么明顯的缺點嗎?
我的首要任務是在並發使用環境中保持穩定性。 我從當前的測試中了解到,由於涉及2個隊列,因此需要雙方同步。
目前,我正在探索以下想法:
既然您已經說過,您將不接受任何第三方資源池建議。 我想你的意思是任何第三方連接池。
您可以看到的類似於apache commons連接池 ,它為任何對象提供池化功能。 因此,雖然我的意思不是冒犯,也不想讓你失望,但我認為你正在嘗試重新發明方向盤。
話雖如此,上面的鏈接提供了通用池的非常高級的設計。 檢查如何使用游泳池,您將對發生的事情有一個清晰的認識,也將對您的設計有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.