當前位置:
首頁 > 最新 > 螞蟻金服SOFA-Boot整合SOFA-RPC

螞蟻金服SOFA-Boot整合SOFA-RPC

前言

上文介紹了 SOFARPC 的簡單使用。在生產環境中,通常會將 SOFARPC 整合到 SpringBoot 中。螞蟻金服提供了 SOFABoot 框架,SOFABoot 是螞蟻金服開源的基於 Spring Boot 的研發框架,它在 Spring Boot 的基礎上,提供了諸如 Readiness Check,類隔離,日誌空間隔離等等能力。

在增強了 Spring Boot 的同時,SOFABoot 提供了讓用戶可以在 Spring Boot 中非常方便地使用 SOFA 中間件的能力。當前 SOFABoot 的 2.3.1 版本是基於 Spring Boot 1.4.2.RELEASE 來構建的。


正文

SOFABoot 在 Spring Boot 的基礎上,提供了以下能力:

1.1. 擴展 Spring Boot 的健康檢查

在 Spring Boot 健康檢查能力的基礎上,提供了 Readiness Check 的能力,保證應用實例安全上線。

1.2. 日誌空間隔離能力

中間件框架自動發現應用的日誌實現依賴並獨立列印日誌,避免中間件和應用日誌實現綁定,通過 sofa-common-tools 實現。

1.3. 提供類隔離的能力

基於 SOFAArk 框架提供類隔離能力,方便使用者解決各種類衝突問題。

1.4. 中間件的集成管理

統一管控、提供中間件統一易用的編程介面、每一個 SOFA 中間件都是獨立可插拔的組件。

1.5. 完全兼容 Spring Boot

SOFABoot 基於 Spring Boot 的基礎上進行構建,並且完全兼容 Spring Boot。


要使用 SOFABoot,需要先準備好基礎環境,SOFABoot 依賴以下環境:

JDK7 或 JDK8

需要採用 Apache Maven 3.2.5 或者以上的版本來編譯


SOFABoot 是直接構建在 Spring Boot 之上,因此可以使用 Spring Boot 的工程生成工具來生成。添加一個 Web 的依賴,以便最後在瀏覽器中查看效果。


在創建好一個 Spring Boot 的工程之後,接下來就需要引入 SOFABoot 的依賴。首先,需要將上文中生成的 Spring Boot 工程的 zip 包解壓後,修改 maven 項目的配置文件 pom.xml。

替換 spring-boot-starter-parent 為相應版本的 sofaboot-dependencies,例如:

替換為:


引入相關依賴

添加 SOFABoot 健康檢查擴展能力的依賴:

最後,在工程的 application.properties 文件下添加一個 SOFABoot 必須要使用的參數。

spring.application.name:用於標示當前應用的名稱

logging path:用於指定日誌的輸出目錄

運行 main() 方法,項目啟動以後,控制台的日誌輸出如下:

查看健康狀態

在瀏覽器中輸入 http://localhost:8080/sofaboot/versions 來查看當前 SOFABoot 中使用 Maven 插件生成的版本信息匯總,結果類似如下:

在瀏覽器中輸入 http://localhost:8080/health/readiness 查看應用 Readiness Check 的狀況,類似如下:

表示應用 的就緒狀態是健康的。

在瀏覽器中輸入 http://localhost:8080/health 來查看應用的運行時健康狀態(可能會隨著時間發生變化,Spring Boot原生自帶功能)。

查看日誌

在上面的 application.properties 裡面,我們配置的日誌列印目錄是 ./logs 即當前應用的根目錄(我們可以根據自己的實踐需要配置),在當前工程的根目錄下可以看到類似如下結構的日誌文件:

如果應用啟動失敗或者健康檢查返回失敗,可以通過相應的日誌文件找到錯誤的原因,有些需要關注 common-error.log 日誌。


引入相關依賴

SOFABoot 使用一系列後綴為 -sofa-boot-starter 來標示一個中間件服務,如果想要使用某個中間件,直接添加對應的依賴即可。進一步引入 SOFA-RPC 的 starter 依賴:

選擇 Zookeeper 作為服務註冊列表,在 pom.xml 文件中引入相關依賴:

注意將 zkclient 重複的依賴排除在外,以免引起衝突。

配置 zookeeper 集群

在 application.properties 中進一步配置 zookeeper 的地址信息。

為了方便起見,本地使用 docker 環境對 zookeeper 集群進行容器編排。多個 zookeeper 節點通過逗號分隔,file 參數指定當 zookeeper 不可用時,可以利用本地緩存文件進行服務發現。

編寫 docker-compose.yml 文件如下:

進入 docker-compose.yml 所在文件目錄, 運行 啟動3台 zookeeper 容器。啟動完成後,運行 查看進程狀態如下:

zookeeper 容器集群啟動完成,如果想要查看集群 leader,可以運行 進入容器運行 逐一查看。這裡加以不累述!

XSD管理

在要使用的 XML 配置文件中將頭部 xsd 文件的聲明設置為如下,這樣就能夠使用 SOFABoot 定義的 XML 元素進行開發。


編寫服務介面和實現類

HelloSyncService.java

HelloSyncServiceImpl.java

編寫服務提供方配置文件

simple-server-example.xml

通過 元素將該服務發布,其中 屬性表示發布的服務實例,interface 屬性表示該服務的介面。

sofa:binding.bolt: 服務通過 bolt 協協議通道發布,底層基於 Netty 實現。

sofa:binding.rest: 服務通過 http 協議發布。

sofa:binding.dubbo: 服務基於 dubbo 的協議通道發布。

編寫服務提供方啟動程序

SimpleServerApplication.java

編寫服務消費方配置文件

simple-client-example.xml

編寫服務提供方啟動程序

SimpleClientApplication.java

分別啟動服務端和客戶端

客戶端控制台輸出日誌如下:

對於同一個服務,在服務發布方配置時,可在以 中通過 提供多種協議通道配置;在服務消費方配置時,可以在 中通過 提供對不同通道服務的引用。


小結

本文引入了 SOFA-Boot 框架,對 SOFA-Boot 的將康檢查功能和日誌管理的使用進行了簡單說明,然後在 SOFA-Boot 環境中引入了 SOFA-RPC 框架,並提供了一個完整的服務發布和註冊的示常式序。

關於 SOFA-RPC 更豐富、強大的功能介紹,下篇敬請期待!

本帳號將持續分享後端技術乾貨,包括虛擬機基礎,多線程編程,高性能框架,非同步、緩存和消息中間件,分散式和微服務,架構學習和進階等學習資料和文章。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

讓我們,認真地年輕優雅地老去
那些冷門「膜法」

TAG:全球大搜羅 |