2016-10-22 53 views
2

我一直在探索對即將出現在Spring下一個版本中的非阻塞異步響應Web應用程序的支持。讓我感到驚訝的是,大多數應用程序傾向於與關係數據庫進行交互。因此,只要JDBC是一個同步阻塞API,並且所有主要的關係數據庫仍然缺乏專有的異步驅動程序,那麼整個反應性事件可能仍然超前於其時間。您如何使用MySQL X DevAPI的Java連接池?

然後幾乎是偶然的,我發現最新版本的MySQL支持被稱爲「X DevAPI」的東西,它包含在當前的MySQL JDBC驅動程序中(雖然它是額外的類,不在JDBC規範中)。

我還沒有聽說過有關X DevAPI的任何吹噓,以及那裏的小文檔似乎強調了將MongoDB替換爲文檔存儲的用例。但是,該庫還包含以非阻塞異步方式訪問MySQL關係數據庫的功能。

不幸的是,唯一的文檔示例是基本的「Hello World」用例。一個static void main方法從頭開始建立一個新的MySQL X會話,並在最後關閉它。

我很好奇,如果這個新的API準備好更實際的使用。具體來說,是否支持連接池?無論是通過第三方庫,還是通過一些沒有很好記錄的原生MySQL庫?

或者我可以在這裏丟失一些基本的東西,連接池根本就沒有必要,因爲X DevAPI在封面或其他東西下多路傳輸?

回答

0

根據documentation會有兩種類型的會話:

  • XSESSION。這是會話的首選類型,因爲它根據dev blog post的無狀態。目前,它只能連接到MySQL的一個節點,但作爲MySQL的8版本則有望work with multiple nodes

儘管MySQL X的當前版本支持連接到單個節點XSessions,未來版本可能延長這覆蓋了多個節點。準備對使用XSession的應用程序進行縮放:更改一些連接參數並完成代碼更改。

  • NodeSession。由於XSession只提供了sql函數的一個子集,應該有一種方法來執行原始的sql。 SQL是有狀態的,NodeSession也是如此。

使用NodeSession的應用程序建立到單個節點的連接。要使用NodeSession擴展應用程序,只要有可能,就必須用XSession替換NodeSession的使用。

X協議需要安裝X插件,因此您可以在Java中使用X DevApi檢查Docker使用的my sample repo