分佈式系統所帶來的技術問題

公司是採用這種分佈式系統的方式來構建公司的一個大規模系統的,那麼這個時候會涉及到哪些技術問題?spring

(1)分佈式服務框架

你若是要讓不一樣的子系統或者服務之間互相通訊,首先必須有一套分佈式服務框架。緩存

也就是各個服務能夠互相感知到對方在哪裏,能夠發送請求過去,能夠經過HTTP或者RPC的方式。數據結構

在這裏,最多見的技術就是dubbo以及spring cloud,固然大廠通常都是本身有服務框架框架

(2)分佈式事務

一旦你的系統拆分爲了多個子系統以後,那麼一個貫穿全局的分佈式事務應該怎麼來實現?分佈式

這個你須要瞭解TCC、最終一致性、2PC等分佈式事務的實現方案和開源技術。日誌

(3)分佈式鎖

不一樣的系統之間若是須要在全局加鎖獲取某個資源的鎖定,此時應該怎麼來作?中間件

畢竟你們不是在一個JVM裏了,不可能用synchronized來在多個子系統之間實現鎖吧,是否是?隊列

(4)分佈式緩存

若是你原來就是個單塊系統,那麼你實際上是能夠在單個JVM裏進行本地緩存就能夠了,好比搞一個HashMap來緩存一些數據。進程

可是如今你有不少個子系統,他們若是要共享一個緩存,你應該怎麼辦?是否是須要引入Redis等緩存系統?事務

(5)分佈式消息系統

在單塊系統內,就一個JVM進程內部,你能夠用相似LinkedList之類的數據結構做爲一個本地內存裏的隊列。

可是多個子系統之間要進行消息隊列的傳遞呢?那是否是要引入相似RabbitMQ之類的分佈式消息中間件?

(6)分佈式搜索系統

若是在單塊系統內,你能夠好比在本地就基於Lucene來開發一個全文檢索模塊,可是若是是分佈式系統下的不少子系統,你還能直接基於Lucene嗎?

明顯不行,你須要在系統裏引入一個外部的分佈式搜索系統,好比Elasticsearch。

(7)其餘不少的技術

好比說分佈式配置中心、分佈式日誌中心、分佈式監控告警中心、分佈式會話,等等,都是分佈式系統場景下你須要使用和了解的一些技術。

由於沿用單塊系統時代的那些技術已經不行了,好比說你單塊系統的時候,直接在本地用一個properties文件存放本身的配置便可,日誌也寫到本地便可。

總結

系統一旦分佈式了以後,通訊、緩存、消息、事務、鎖、配置、日誌、監控、會話,等等各類原來單塊系統場景下很容易解決的問題,都會變得很複雜,須要引入大量外部的技術。

相關文章
相關標籤/搜索