摘要:并不會(huì)在微服務(wù)框架中有其它的注冊(cè)機(jī)制。微服務(wù)框架本身不會(huì)維護(hù)服務(wù)組件的啟動(dòng)順序,這一問(wèn)題可以由來(lái)解決。啟動(dòng)先后邏輯為被依賴的服務(wù)先啟動(dòng),只有當(dāng)前服務(wù)所依賴的服務(wù)全部正常啟動(dòng)后,才會(huì)開(kāi)始啟動(dòng)流程。
概述
這篇文檔,著重解決一個(gè)問(wèn)題:Spring Cloud 融合于 Rainbond 原生 Service Mesh 的正確姿勢(shì)是什么樣子的。
Rainbond 原生支持 Service Mesh 微服務(wù)架構(gòu)。也就是說(shuō),無(wú)論原來(lái)是什么,只要部署在 Rainbond 上,那么就天然的成為了 Service Mesh 微服務(wù)。這也是 Service Mesh 微服務(wù)架構(gòu)的一大特點(diǎn):對(duì)原應(yīng)用無(wú)侵入。
Spring Cloud 部署在 Rainbond 上后,整套業(yè)務(wù)即是完整的 Spring Cloud 微服務(wù),又是一套 Service Mesh 微服務(wù)。那么如何使業(yè)務(wù)系統(tǒng)即保留了原有 Spring Cloud 微服務(wù)架構(gòu)的特點(diǎn),又能享受到 Service Mesh 帶來(lái)的種種好處呢?這就涉及到了Spring Cloud 微服務(wù)與 Service Mesh 的融合。
融合的核心思想,就是 Spring Cloud 框架維護(hù)的功能,保持不變; Spring Cloud 框架無(wú)法維護(hù)的功能,交給 Service Mesh 和 Rainbond。
Spring Cloud 不維護(hù)什么
我不會(huì)去深入討論 Spring Cloud 微服務(wù)框架都維護(hù)了什么,這樣的帖子網(wǎng)上有很多。
在這里,我想說(shuō)明的是,當(dāng)讀者選擇將自己原有的 Spring Cloud 微服務(wù)部署在 Rainbond 時(shí),有哪些工作應(yīng)該由 Rainbond 來(lái)完成。
向 eureka 的注冊(cè)
eureka 注冊(cè)中心,是 Spring Cloud 微服務(wù)框架中,標(biāo)準(zhǔn)的注冊(cè)中心解決方案。微服務(wù)框架中的 Service provider(服務(wù)提供者) 將自己的服務(wù)地址注冊(cè)于 eureka 中,供 Service consumer(服務(wù)消費(fèi)者) 遠(yuǎn)程調(diào)用。這種服務(wù)注冊(cè)與發(fā)現(xiàn)的機(jī)制,是微服務(wù)架構(gòu)中為了將原來(lái)的一站式服務(wù)拆解為若干個(gè)獨(dú)立的服務(wù)并相互解耦,卻又能相互交互所設(shè)計(jì)的?;谶@種機(jī)制,所有的 Spring Cloud 微服務(wù)組件,可以動(dòng)態(tài)的獲悉自己需要的 Service Provider 的服務(wù)地址;也可以搖身一變,將自己注冊(cè)為 Service Provider 對(duì)其他組件提供服務(wù)。
然而,就是這么一種靈活的服務(wù)注冊(cè)/發(fā)現(xiàn)機(jī)制,卻不會(huì)維護(hù)其它服務(wù)組件向 eureka 自身注冊(cè)這一動(dòng)作。向 eureka 注冊(cè)的地址,往往是在配置文件里配置的,例如碼云6K+星Spring Cloud項(xiàng)目 PIG后臺(tái)管理框架 中,設(shè)定的 eureka 注冊(cè)方式如下:
https://gitee.com/log4j/pig/b...
# 注冊(cè)中心配置 eureka: instance: prefer-ip-address: true client: service-url: defaultZone: http://pig:pig@pig-eureka:8761/eureka/
{{% notice info %}}
Rainbond 中會(huì)將無(wú)法解析的域名,如 pig-eureka 解析為 127.0.0.1
{{% /notice %}}
在 Rainbond 中,可以借助于依賴關(guān)系,將微服務(wù)組件和 eureka 連接起來(lái),幫助 Spring Cloud 完成注冊(cè)這一動(dòng)作:
eureka 本身開(kāi)啟端口對(duì)內(nèi)服務(wù),向 Rainbond 平臺(tái)完成自身 Service Mesh 層的服務(wù)注冊(cè)
其它微服務(wù)組件通過(guò)依賴關(guān)系連接 eureka ,即可在不做任何變更的情況下,完成向 eureka 的服務(wù)注冊(cè)以及服務(wù)訂閱
對(duì)接各類中間件
一套完整的 Spring Cloud 微服務(wù)體系中,必然會(huì)采用多種數(shù)據(jù)中間件。以 PIG 為例,搭配使用 MySQL 作為數(shù)據(jù)存儲(chǔ)、 REDIS 作為緩存。而在 Spring Cloud 中,這類中間件的對(duì)接方式也是通過(guò)配置文件配置的。并不會(huì)在微服務(wù)框架中有其它的注冊(cè)機(jī)制。那么同理可以由 Rainbond 的依賴關(guān)系來(lái)將微服務(wù)與服務(wù)中間件連接起來(lái)。
服務(wù)組件啟動(dòng)順序
Spring Cloud 微服務(wù)組件的啟動(dòng)順序是比較重要的,一個(gè)組件在所依賴的服務(wù)沒(méi)有啟動(dòng)前自行啟動(dòng),是可能引起錯(cuò)誤的。Spring Cloud 微服務(wù)框架本身不會(huì)維護(hù)服務(wù)組件的啟動(dòng)順序,這一問(wèn)題可以由 Rainbond 來(lái)解決。
在 Rainbond 5.1 版本后,我們支持了基于依賴關(guān)系的啟動(dòng)順序控制。啟動(dòng)先后邏輯為被依賴的服務(wù)先啟動(dòng),只有當(dāng)前服務(wù)所依賴的服務(wù)全部正常啟動(dòng)后,才會(huì)開(kāi)始啟動(dòng)流程。
{{% notice warning %}}
必須指出的是,在這個(gè)啟動(dòng)控制鏈條中,pig-gateway 指向 pig-auth 的依賴關(guān)系,其意義只作為啟動(dòng)順序控制策略,不作為正常的依賴關(guān)系使用。
{{% /notice %}}
Spring Cloud 適配 Rainbond
為了將 Spring Cloud 更好的融入到 Rainbond 的體系中來(lái),建議使用下面的配置來(lái)進(jìn)行適配:
注冊(cè)IP
在保留了 eureka 這種 Spring Cloud 原生的服務(wù)注冊(cè)發(fā)現(xiàn)機(jī)制的前提下,我們需要所有的微服務(wù)組件組冊(cè)自己的真實(shí)IP作為服務(wù)地址。微服務(wù)組件間的組網(wǎng)策略,Rainbond 會(huì)自行解決,關(guān)鍵配置類比如下:
https://gitee.com/log4j/pig/b...
# 注冊(cè)中心配置 eureka: instance: prefer-ip-address: true
心跳檢測(cè)與快速下線
Rainbond 支持每個(gè)微服務(wù)組件的全生命周期管理。在我們對(duì)某個(gè)組件進(jìn)行配置并點(diǎn)擊更新后,我們希望在 eureka 中,在新實(shí)例上線后,已經(jīng)被關(guān)閉銷毀的舊實(shí)例可以快速下線,確保注冊(cè)中心中的服務(wù)注冊(cè)地址沒(méi)有不可用項(xiàng)。關(guān)鍵配置如下:
# eureka server配置 eureka: server: enable-self-preservation: false #關(guān)閉自我保護(hù) eviction-interval-timer-in-ms: 4000 #清理間隔(單位毫秒,默認(rèn)是60*1000) # eureka client配置 eureka: instance: lease-expiration-duration-in-seconds: 30 #服務(wù)過(guò)期時(shí)間配置,超過(guò)這個(gè)時(shí)間沒(méi)有接收到心跳EurekaServer就會(huì)將這個(gè)實(shí)例剔除 lease-renewal-interval-in-seconds: 10 #服務(wù)刷新時(shí)間配置,每隔這個(gè)時(shí)間會(huì)主動(dòng)心跳一次
{{% notice warning %}}
上述配置適用于于測(cè)試場(chǎng)景以及調(diào)試場(chǎng)景。如果服務(wù)已經(jīng)趨于穩(wěn)定,并決定應(yīng)用于生產(chǎn)環(huán)境,則建議自行設(shè)置合適的配置方案。
{{% /notice %}}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/27797.html
摘要:小編一哥們和我吐槽自家的煩惱原本一個(gè)有錢有閑的證券行業(yè)經(jīng)理一年前被老板派去支持創(chuàng)新業(yè)務(wù)探索因?yàn)樾滦蜆I(yè)務(wù)在不斷加速鋪開(kāi)當(dāng)前的單體式應(yīng)用復(fù)雜度越來(lái)越高業(yè)務(wù)上線過(guò)程繁瑣流程冗長(zhǎng)資源分配耗時(shí)較多更新頻率越來(lái)越低人員也越來(lái)越顯得捉襟見(jiàn)肘這哥們于是開(kāi)始 小編一哥們和我吐槽自家的煩惱原本一個(gè)有錢有閑的證券行業(yè)IT經(jīng)理一年前被老板派去支持創(chuàng)新業(yè)務(wù)探索因?yàn)樾滦蜆I(yè)務(wù)在不斷加速鋪開(kāi)當(dāng)前的單體式應(yīng)用復(fù)雜度越來(lái)...
摘要:服務(wù)網(wǎng)關(guān)服務(wù)網(wǎng)關(guān)涵蓋的功能包括路由,鑒權(quán),限流,熔斷,降級(jí)等對(duì)入站請(qǐng)求的統(tǒng)一攔截處理。具體可以進(jìn)一步劃分為外部網(wǎng)關(guān)面向互聯(lián)網(wǎng)和內(nèi)部網(wǎng)關(guān)面向服務(wù)內(nèi)部管理。應(yīng)用服務(wù)應(yīng)用服務(wù)是企業(yè)業(yè)務(wù)核心。到此實(shí)際上已經(jīng)完成服務(wù)遷移工作。 導(dǎo)讀 Spring Cloud基于Spring Boot開(kāi)發(fā),提供一套完整的微服務(wù)解決方案,具體包括服務(wù)注冊(cè)與發(fā)現(xiàn),配置中心,全鏈路監(jiān)控,API...
摘要:原文鏈接時(shí)代,架構(gòu)該怎么跟進(jìn),來(lái)自于微信公眾號(hào)次靈均閣作為核心開(kāi)發(fā)者,請(qǐng)先簡(jiǎn)單介紹下自己答大家好,我是小馬哥,一名學(xué)習(xí)當(dāng)爸爸的父親,勸退師,項(xiàng)目架構(gòu)師,編程思想的作者。因此,需求的來(lái)源不再已阿里為絕對(duì)主導(dǎo),社區(qū)共建和共制的發(fā)展模式已成事實(shí)。 原文鏈接:Service Mesh 時(shí)代,Dubbo 架構(gòu)該怎么跟進(jìn)?,來(lái)自于微信公眾號(hào):次靈均閣 作為 Duboo 核心開(kāi)發(fā)者,請(qǐng)先簡(jiǎn)單介紹下...
摘要:原文鏈接時(shí)代,架構(gòu)該怎么跟進(jìn),來(lái)自于微信公眾號(hào)次靈均閣作為核心開(kāi)發(fā)者,請(qǐng)先簡(jiǎn)單介紹下自己答大家好,我是小馬哥,一名學(xué)習(xí)當(dāng)爸爸的父親,勸退師,項(xiàng)目架構(gòu)師,編程思想的作者。因此,需求的來(lái)源不再已阿里為絕對(duì)主導(dǎo),社區(qū)共建和共制的發(fā)展模式已成事實(shí)。 原文鏈接:Service Mesh 時(shí)代,Dubbo 架構(gòu)該怎么跟進(jìn)?,來(lái)自于微信公眾號(hào):次靈均閣 作為 Duboo 核心開(kāi)發(fā)者,請(qǐng)先簡(jiǎn)單介紹下...
閱讀 850·2023-04-25 20:47
閱讀 2625·2019-08-30 15:53
閱讀 1038·2019-08-26 14:05
閱讀 982·2019-08-26 11:59
閱讀 1780·2019-08-26 11:43
閱讀 1829·2019-08-26 10:57
閱讀 1446·2019-08-23 18:23
閱讀 2925·2019-08-23 12:57