天天看點

SpringCloudAlibaba(一):概述與重要元件

前一篇提到了我們為什麼要替換PHP語言采用Java語言。而Java語言的架構選型上來說有太多的選擇,常見的有Dubbo,SpringCloud等。我們選擇了SpringCloudAlibaba。替換PHP語言到SpringCloudAlibaba是個大工程,主要是業務遷移部分。讨論之初我也确認過是否遷移原有的業務,得到的明确答複是 遷移。 那麼這麼來說也就簡單了,複雜的就是工期問題了。

SpringCloudAlibaba是什麼?

SpringCloud Alibaba是Alibaba結合自身的微服務實踐開源的一套微服務全家桶,在SpringCloud項目中進行孵化并且畢業。既然是SpringCloud的項目那麼阿裡雲其實包含其商業化的産品。 例如Nacos在阿裡雲就有其商業化的版本 MSE。 同時SpringCloud Alibaba的相關元件是經曆過雙十一大促考驗的産品。穩定性較高。

SpringCloud Alibaba與SpringCloud

SpringCloud Alibaba是SpringCloud的子項目,其實很多相關的文章都提到了SpringCloud Alibaba與SpringCloud的關系,其中有很多的論點都比較有意思。大家可以去搜尋一下。

SpringCloud Alibaba是依賴SpringCloud相關的标準實作的一套微服務的架構。結合阿裡巴巴的相關實踐與阿裡雲的相關服務實作的一些元件得以更快的實作相關産品業務。

SpringCloud Alibaba主要功能

  • 分布式配置

    分布式系統的外部配置管理,配置中心可視化、分環境配置控制。配置動态更新能力。

  • 服務注冊與發現

    适配SpringCloud标準的服務注冊與服務發現管理。

  • 服務限流與降級

    可通過控制台進行實時的修改限流降級的規則,實時的Metrics監控。支援多種協定

  • 消息驅動

    基于RocketMQ實作消息驅動的業務場景開發。

  • 分布式事物 開源Seata使用@GlobalTransactional注解,零侵入的實作分布式事物的支援。

SpringCloud Alibaba核心元件

Nacos (配置中心與服務注冊與發現)

Nacos實作了服務的配置中心與服務注冊發現的功能,Nacos可以通過可視化的配置降低相關的學習與維護成本,實作動态的配置管理與分環境的配置中心控制。 同時Nacos提供了基于http/RCP的服務注冊與發現功能。

Sentinel (分布式流控)

Sentinel是面向分布式微服務架構的輕量級高可用的流控元件,以流量作為切入點,從流量控制,熔斷降級,系統負載保護等次元幫助使用者保證服務的穩定性。常用與實作限流、熔斷降級等政策。

RocketMQ (消息隊列)

RocketMQ基于Java的高性能、高吞吐量的消息隊列,在SpringCloud Alibaba生态用于實作消息驅動的業務開發,常見的消息隊列有Kafka、RocketMQ、RabbitMQ等,相關的比較文檔可以自行去翻閱。

Seata (分布式事物)

既然是微服務的産品,那麼肯定會用到分布式事物。Seata就是阿裡巴巴開源的一個高性能分布式事物的解決方案。

Dubbo (RPC)

Dubbo已經在圈内很火了,SpringCloud Alibaba基于上面提到的Nacos服務注冊中心也同樣整合了Dubbo。

其他

SpringCloud Alibaba還有一些其他的元件選擇,例如schedulerX、SMS、OSS等。但是由于其主要是阿裡雲的商業化産品就不再過多的進行介紹。內建其商業化産品時才能用到。

總結

SpringCloud Alibaba是基于SpringCloud标準由阿裡巴巴實作的微服務全家桶,可插拔的方式實作元件的替換,在某些場景中我們需要的元件可以自由進行選擇。例如需要分布式鍊路跟蹤我們可以增加sleuth元件用于實作分布式鍊路跟蹤業務等。

很多人提到SpringCloudAlibaba的商業問題,記得當年SpringCloudAlibaba推出第一版的時候我也評論了...賣産品全家桶。不可否認是有那麼一些,但是其實它本身的很多元件又不一定非要選擇商業版本。這個可以自由進行選擇。