如何跟領導解釋爲什麼選擇SpringCloud alibaba作爲微服務開發框架

什麼是微服務

提到微服務不得不提Martin Fowler在2014年3月25日發表的文章 Microservices,裏面給出了微服務的定義。後續國內所有關於微服務的介紹都是基於這篇文章的翻譯,或加上自己的理解而成。其中最重要的一段如下:

In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

翻譯過來就是:微服務這種架構風格就是把一組小服務演化成爲一個單一的應用的一種方法。每個應用都運行在自己的進程中,並通過輕量級的機制保持通信,就像HTTP這樣的API。這些服務要基於業務場景,並使用自動化佈署工具進行獨立的發佈。可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的數據存儲。

如何實現微服務

相對於單體式架構的簡單粗暴,微服務架構將應用打散,形成多個微服務進行獨立開發、測試、部署與運維。雖然從管理與邏輯上更符合業務需要,但微服務架構也帶來了諸多急需解決的核心問題:

  1. 如何發現新服務節點以及檢查服務節點的狀態?
  2. 如何發現服務及負載均衡如何實現?
  3. 服務間如何進行消息通信?
  4. 如何對使用者暴露服務 API?
  5. 如何集中管理衆多服務節點的配置文件?
  6. 如何收集服務節點的日誌並統一管理?
  7. 如何實現服務間調用鏈路追蹤?
  8. 如何對系統進行鏈路保護,避免微服務雪崩?

可以發現,上述這些問題並不是針對某種語言或某種技術的,任何軟件廠商要構建微服務架構就必須面對這些問題,要麼獨立開發要麼將已有多種技術整合形成整體解決方案。好在經過多年沉澱,業內已經有了標準答案,下圖清晰的說明微服務架構需要的標準組件。

image-20210516161831055

API網關: 封裝了系統內部架構,爲每個客戶端提供一個定製的 API。在微服務架構中,服務網關的核心要點是,所有的客戶端和消費端都通過統一的網關接入微服務,在網關層處理所有的非業務功能。
image-20210527110557470

爲什麼選擇SpringCloud

首先,Spring Cloud 具備一個天生的優勢,因爲它是 Spring 家庭的一員,而 Spring 在 Java EE 開發領域的強大地位,給 Spring Cloud 起到很好的推動作用。同時,Spring Cloud 所基於的 Spring Boot,已經成爲 Java EE 領域中最流行的開發框架,用來簡化 Spring 應用程序的框架搭建和開發過程。

其次,技術組件的完備性是我們選擇 Spring Cloud 的主要原因。Spring Cloud 中包含了開發一個完整的微服務系統所需的幾乎所有技術組件,包括服務註冊和發現、API 網關、配置中心、消息處理、負載均衡、熔斷器、數據監控等常見技術組件都可以基於 Spring Boot 快速集成到業務系統中。

以下爲SpringCloud 中常用的技術組件
image-20210516164338280

爲什麼選擇SpringCloud alibaba

首先, SpringCloud中的技術組件是集衆家之長,如註冊中心 Eureka,Zuul等都是依賴於Netflix的,這也導致它受制於第三方廠商。如Zuul宣佈停止維護,Spring機構便不得不尋找替代品或自研;Eureka2.x 閉源不允許使用;

其次,Springcloud作爲國外產品引入到國內後出現了水土不服,如SpringCloud Config默認將文件存在Github上,且沒有維護界面,國內軟件公司很少會同意這麼做。比如我們部門就是使用了Apollo配置中心替代了原生的SpringCloud Config。

Spring Cloud Alibaba是國產的微服務開發一站式解決方案,與原有 Spring Cloud 兼容的同時對微服務生態進行擴展,通過添加少量的配置註解,便可實現更符合國情的微服務架構,當前Spring Cloud Alibaba已經是直接隸屬於 Spring Cloud 的子項目。官網是:https://spring.io/projects/spring-cloud-alibaba#overview
image-20210516170419147

Spring Cloud Alibaba 對服務註冊、配置中心與負載均衡功能都整合進 Nacos,有圖形化界面,簡化了微服務架構的複雜度,出問題的概率也會降低。原有的服務保護組件也調整爲 Sentinel,相較Hystrix功能更強大,使用也更加友好。同時還支持了對Dubbo的調用,而且還有Seata用於支持分佈式事務。

求贊求關注

飄渺Jam,一位寫代碼的架構師,做架構的程序員,他的公衆號主要分享Java後端,SpringCloud微服務架構,數據庫等方向的文章,如果你對微服務比較感興趣,建議掃描下方二維碼加個關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章