現在處於 PaaS、雲原生、Service Mesh 甚至中臺的時代,java微服務的基本組件選型都有哪些呢?
今天簡單介紹下分佈式數據訪問層(DAS)Java的選擇。
說是數據訪問層,其實最開始的訴求是“獨寫分離” , “分庫分表” 這些功能性需求。
真正開源而且好用的其實不多,分別介紹一個。
中間件分為很多類型,但是一般有2種思路。
第一種: 基於客戶端(client)實現 , 第二種: 基於代理(proxy)實現
就數據訪問層中間件來說,中小型、熱度低的比較多,但是普遍應用的卻不多。
一方面,作為一個很早就有需求的中間件,大廠都自研了,自研的不太可能公開。
另一方面,這部分的中間件相對苦活累活多,寫出來也不夠炫,因此不是很多人願意研究。
數據訪問層可選組件舉例:
基於客戶端實現,目前最流行的是 Sharding-jdbc ,由噹噹開源。
現在做的很不錯,已改名為 Sharding-sphere,並且進入 apache 孵化,未來前景很好。
目前github 有 9.6k star (
https://github.com/apache/incubator-shardingsphere)
這種方式不需要額外搭建單獨的組件,直接在客戶端生效,相對簡單輕量,建議中小規模場景採用。
基於代理實現,目前基本沒得選,只能選擇阿里之前開源的Cobar演化來的 MyCAT。
有出過相關的書籍,並且做著聲稱社區也很活躍,而具體使用感受則見仁見智。
目前github 有 7.5k star(
https://github.com/MyCATApache/Mycat-Server)
這種方式運維成本是相對較高的,建議有一定運維能力的中型、大型團隊採用,且一定要重視,如果踩坑則要有一定的改造和自研能力。