回覆列表
-
1 # 此生唯一
-
2 # 使用者5702379994320
微服務架構系統靈活性,健壯性,擴充套件性好,特別適合需求變化迅速的場景。但系統複雜度高,部署,管理難度大。微服務除了開發期框架之外,還有需要一系列的執行期中介軟體支撐,如API閘道器,服務註冊中心,統一配置中心等。 目前國內比較成熟的吧,東軟有一支團隊在做,他們網站是 https://platform.neusoft.com/
我們公司使用的就是微服務加分庫分表,一般來說如果應用系統出現效能瓶頸或者業務程式碼耦合過重,可考慮使用微服務架構,而後端的資料庫通常使用讀寫分離,雙主互備或者是分庫分表來實現效能的提升和資料服務的高可用。
在資料分佈在不同的資料庫伺服器的帶來良好效能的同時,新的問題也隨之而來,比如說資料一致性的保證,效能監控,資料存取複雜等,而較為突出的就是資料跨庫問題!資料分佈在不同的節點上,導致原來的連線查詢需要跨庫,欄位的主鍵難以保證唯一,跨庫的事務處理複雜,下面逐一解決:
1,連線查詢(join)問題:因為庫表分佈在不同的機器上,連線查詢失效。
解決辦法:
①,程式碼解決:根據某個欄位進行hash的方式進行分庫分表,保證落在一個庫中的類似表中(比如aa_00.t_user_0000和aa_00.t_member_0000),然後基於這樣的規則在程式碼中進行連線查詢語句書寫!
②,同步:將常用的,需要的欄位同步到一個庫中進行聯合查詢!
2,唯一主鍵:如果使用傳統的自增等方式,多庫中的主鍵id勢必重複,所以需要對唯一性加以控制!
解決方法:UUID(根據機器ID,時間等),redis(單執行緒保證不重複),snowflake演算法!
3,分散式事務:
1,TCC:try控制業務程式碼流程,Confirm確認事務的正確性,cancel取消失敗的事務!
2,基於訊息系統的一致性方案:單節點事務完成後,透過傳送訊息保證事務提交,如果失敗可透過重試,任務補償等方式保證資料一致性!
總的來說,分散式系統有著很多以往不存在的問題,還需要具體問題具體分析,可一起交流,更多的技術分享,敬請關注。。。