日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
微服務(wù)架構(gòu),配置中心的技術(shù)選型

 目前公司內(nèi)部微服務(wù)架構(gòu)基礎(chǔ)設(shè)施建設(shè)中,技術(shù)選型以Spring Cloud技術(shù)為主,也被大家俗稱作“全家桶”。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供禪城網(wǎng)站建設(shè)、禪城做網(wǎng)站、禪城網(wǎng)站設(shè)計(jì)、禪城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、禪城企業(yè)網(wǎng)站模板建站服務(wù),十多年禪城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

        因其具備微服務(wù)架構(gòu)體系中所需的各個(gè)服務(wù)組件,比如服務(wù)注冊(cè)發(fā)現(xiàn)(如Spring Cloud Eureka、Zookeeper、Consul)、API網(wǎng)關(guān)路由服務(wù)(Spring Cloud Zuul),客戶端負(fù)載均衡(Spring Cloud Ribbon,Zuul默認(rèn)集成了Ribbon)、服務(wù)容錯(cuò)保護(hù)(Spring Cloud Hystrix),消息總線 (Spring Cloud Bus)、分布式配置中心(Spring Cloud Config)、消息驅(qū)動(dòng)的微服務(wù)(Spring Cloud Stream)、分布式鏈路跟蹤服務(wù)(Spring Cloud Sleuth)?!?/p>

本篇主要圍繞其中一個(gè)組件 分布式配置中心 展開討論。

Spring Cloud Config配置中心介紹&架構(gòu)

在微服務(wù)架構(gòu)體系中配置中心是比較重要的組件之一,Spring Cloud官方自身提供了Spring Cloud Config分布式配置中心,由它來提供集中化的外部配置支持,它分為客戶端和服務(wù)端兩個(gè)部分。

其中服務(wù)端稱作配置中心,是一個(gè)獨(dú)立的微服務(wù)應(yīng)用,用來連接倉(cāng)庫(kù)(如Git、Svn)并未客戶端提供獲取配置的接口;而客戶端是各微服務(wù)應(yīng)用,通過指定配置中心地址從遠(yuǎn)端獲取配置內(nèi)容,啟動(dòng)時(shí)加載配置信息到應(yīng)用上下文中。

因Spring Cloud Config實(shí)現(xiàn)的配置中心默認(rèn)采用了Git來存儲(chǔ)配置信息,所以版本控制管理也是基于Git倉(cāng)庫(kù)本身的特性來支持的 。

對(duì)該組件調(diào)研后,主要采用基于消息總線的架構(gòu)方式,架構(gòu)圖如下所示:

基于消息總線的配置中心架構(gòu)中需要依賴外部的MQ組件,如Rabbit、Kafka 實(shí)現(xiàn)遠(yuǎn)程環(huán)境事件變更通知,客戶端實(shí)時(shí)配置變更可以基于Git Hook功能實(shí)現(xiàn)。

同時(shí)架構(gòu)圖中看到最右側(cè),有一個(gè)Self scheduleing refresher 這個(gè)是我在實(shí)踐中自己新增的一個(gè)擴(kuò)展功能,目的是當(dāng)依賴的消息組件出現(xiàn)問題時(shí),此時(shí)如果Git倉(cāng)庫(kù)配置發(fā)生了變更,會(huì)導(dǎo)致部分或所有客戶端可能無法獲取到最新配置,這樣就造成了客戶端應(yīng)用配置數(shù)據(jù)無法達(dá)到最終一致性,進(jìn)而引起線上問題。

        Self scheduleing refresher 是一個(gè)定時(shí)任務(wù),默認(rèn)5分鐘執(zhí)行一次,執(zhí)行時(shí)會(huì)判斷本地的Git倉(cāng)庫(kù)版本與遠(yuǎn)程Git倉(cāng)庫(kù)版本如果不一致,則會(huì)從配置中心獲取最新配置進(jìn)行加載,保障了配置最終一致性。”

經(jīng)過實(shí)際使用你會(huì)發(fā)現(xiàn)Spring Cloud Config這個(gè)配置中心并不是非常好用,如果是小規(guī)模的項(xiàng)目可以使用問題不大,但它并不適用于中大型的企業(yè)級(jí)的配置管理。

因此,我對(duì)業(yè)界開源的配置中心做個(gè)對(duì)比后最終選擇了攜程開源的Apollo配置中心解決了微服務(wù)架構(gòu)配置管理和其他項(xiàng)目中配置管理痛點(diǎn)。

下面就針對(duì)Spring Cloud Config和Apollo配置中心做個(gè)更加直觀的比對(duì):

Apollo VS Spring Cloud Config

通過以上對(duì)比圖發(fā)現(xiàn)Spring Cloud Config缺陷還是挺大的,比如最后一條高可用,Apollo配置中心客戶端應(yīng)用加載配置后本地會(huì)生成緩存文件,即使配置中心所有的服務(wù)都掛掉,只是配置無法更新,但是不影響你的服務(wù)啟動(dòng)。

而這Spring Cloud Config是無法做到的,有人會(huì)說我們可以在應(yīng)用classpath下添加應(yīng)用配置文件作為「兜底使用」,這樣做首先配置不會(huì)自動(dòng)同步,而且也不是Spring Cloud Config自身的功能。

另外還有一個(gè)原因是因?yàn)楝F(xiàn)階段項(xiàng)目中也使用了一些自研的配置中心,但都差強(qiáng)人意,有的配置中心僅支持xml格式的,無法支持KV形式;還有的配置中心是基于JMX開發(fā)的,但只支持屬性配置推送。

所以經(jīng)過對(duì)Apollo配置中心的調(diào)研和使用發(fā)現(xiàn)這款產(chǎn)品不僅適用于微服務(wù)配置管理場(chǎng)景,同時(shí)也支持多種配置格式,如xml、json、yml,還支持多語(yǔ)言客戶端的接入,在配置服務(wù)治理方面也是很完善的,在攜程內(nèi)部已經(jīng)支撐10萬+的實(shí)例運(yùn)行,成熟又穩(wěn)定!

開源配置中心對(duì)比

下面這個(gè)圖詳細(xì)的開源配置中心對(duì)比圖:

在上述幾個(gè)開源配置中心里,Apollo社區(qū)是非?;钴S的,不斷更新迭代。

在Apollo出現(xiàn)之前百度開源的disconf配置中心使用的更多些,disconf最新代碼更新時(shí)間還是2年前的,且與Apollo的對(duì)比社區(qū)活躍度有所下降。

Apollo配置中心介紹&架構(gòu)

Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。

服務(wù)端基于Spring Boot和Spring Cloud開發(fā),不依賴外部容器,便于部署。

Java客戶端不依賴任何框架,能夠運(yùn)行于所有Java運(yùn)行時(shí)環(huán)境,同時(shí)對(duì)Spring/Spring Boot環(huán)境也有額外支持。

原生支持Java和.Net客戶端,同時(shí)也支持其他語(yǔ)言客戶端,目前已支持Go、PHP、Python、NodeJS、C++。

主要功能特性:

  •  統(tǒng)一管理不同環(huán)境、不同集群的配置
  •  配置修改實(shí)時(shí)生效(熱發(fā)布)
  •  版本發(fā)布管理
  •  灰度發(fā)布
  •  權(quán)限管理、發(fā)布審核、操作審計(jì)
  •  客戶端配置信息監(jiān)控
  •  提供Java和.Net原生客戶端
  •  提供開放平臺(tái)API
  •  部署簡(jiǎn)單,依賴少

Apollo總體架構(gòu)設(shè)計(jì):

各組件作用說明:

Apollo HA高可用設(shè)計(jì):

Apollo客戶端架構(gòu):

客戶端架構(gòu)原理:

1.推拉結(jié)合方式

  •  客戶端與配置中心保持一個(gè)長(zhǎng)連接,配置實(shí)時(shí)推送
  •  定時(shí)拉配置(默認(rèn)5分鐘)

2.本地緩存

  •  配置緩存在內(nèi)存
  •  本地緩存一份配置文件

3.應(yīng)用程序

  •  通過Apollo客戶端獲取最新配置
  •  訂閱配置更新通知

Apollo核心概念:

application (應(yīng)用)

每個(gè)應(yīng)用都需要有唯一的身份標(biāo)識(shí) -- appId

environment (環(huán)境)

Apollo客戶端通過不同環(huán)境獲取對(duì)應(yīng)配置

cluster (集群)

一個(gè)應(yīng)用下不同實(shí)例的分組,不同的cluster,可以有不同的配置。

比如北京機(jī)房和天津機(jī)房可以有不一樣的kafka或zk地址配置。

namespace (命名空間)

一個(gè)應(yīng)用下不同配置的分組,不同的namespace的類似于不同的文件。

如:數(shù)據(jù)庫(kù)配置,RPC配置等。支持繼承公共組件的配置。

配置分類

  •  私有類型(private):只能被所屬應(yīng)用獲取
  •  公共類型(public):必須全局唯一。使用場(chǎng)景:部門/小組級(jí)別共享配置,中間件客戶端配置。
  •  關(guān)聯(lián)類型(繼承類型):私有繼承公有配置并覆蓋;定制公共組件配置場(chǎng)景。

配置項(xiàng)(Item)

默認(rèn)和公共配置使用properties格式;私有配置支持properties/json/xml/yaml/yml格式。

定位方式:app+cluster+namespace+item_key

權(quán)限管理

  •  系統(tǒng)管理員擁有所有的權(quán)限
  •  創(chuàng)建者可以代為創(chuàng)建項(xiàng)目,責(zé)任人默認(rèn)是項(xiàng)目管理員,一般創(chuàng)建者=責(zé)任人
  •  項(xiàng)目管理員可創(chuàng)建集群,Namespace,管理項(xiàng)目和Namespace權(quán)限
  •  編輯權(quán)限只能編輯不能發(fā)布
  •   布權(quán)限只能發(fā)布不能編輯
  •  普通用戶可以搜索查看所有項(xiàng)目配置,但沒有相關(guān)操作權(quán)限

Apollo配置中使用及擴(kuò)展

使用Apollo配置中心后,做了進(jìn)一步的功能開發(fā)擴(kuò)展,接入公司的SSO和郵件通知接入。

基于Spring Cloud Config微服務(wù)架構(gòu)體系中,如果之前使用了Spring Cloud Config配置中心,也可以通過下列方式平滑的遷移到Apollo配置中心。

Spring Cloud微服務(wù)項(xiàng)目在pom.xml中引入如下依賴:

 
 
 
 
  1.   
  2.      com.letv.micro.apollo  
  3.     micro-apollo-spring-boot-starter  
  4.     1.0-SNAPSHOT  
  5.  

該源碼參考Github:

        https://github.com/david1228/micro-apollo-spring-boot-starter”

需要自行編譯打成jar包使用。

這個(gè)jar包對(duì)Spring Cloud配置刷新機(jī)制集成Apollo客戶端做了進(jìn)一步封裝,實(shí)現(xiàn)的主要功能如下:

1、在Apollo配置中心發(fā)布配置后,微服務(wù)應(yīng)用客戶端監(jiān)聽配置變更,包括默認(rèn)的配置和公共的配置,通過ContextRefresher中的refresh()方法完成應(yīng)用環(huán)境上下文的配置刷新。

2、支持對(duì)日志級(jí)別和日志路徑文件的動(dòng)態(tài)配置變更。[Apollo Client無法很好的支持日志級(jí)別和日志路徑文件的變更,因日志的LoggingApplicationListener加載優(yōu)先級(jí)高,Apollo配置加載滯后。

上述jar包已上傳公司的Maven私服。具體配置使用示例可以參考「4.Apollo配置中心使用示例」

引入micro-apollo-spring-boot-starter之后,可以將spring-cloud-stater-config依賴從pom.xml中去掉了。

Apollo配置中心公共配置命名規(guī)范:

公共配置建議統(tǒng)一放到新創(chuàng)建的項(xiàng)目中,該項(xiàng)目中存放Spring Cloud相關(guān)的公共組件的配置,比如Eureka、Zipkin、Stream等配置,比如Eureka地址可能是多個(gè)微服務(wù)應(yīng)用共用的,便于在該項(xiàng)目中統(tǒng)一對(duì)配置進(jìn)行管理。

創(chuàng)建項(xiàng)目時(shí),選擇的部門如為「微服務(wù)公共平臺(tái)(dpms)」

各微服務(wù)應(yīng)用項(xiàng)目創(chuàng)建后可以添加Namespace,選擇關(guān)聯(lián)公共配置。

公共配置命名規(guī)則:{部門前綴}.application  或者 {部門前綴}.application-{具體的細(xì)分配置}

當(dāng)Apollo配置發(fā)布后,若需讓Spring Cloud配置實(shí)現(xiàn)動(dòng)態(tài)加載,公共配置命名必須以application關(guān)鍵字開頭,在上述依賴的jar包中會(huì)對(duì)這類命名的Namespace做配置變更監(jiān)聽。

例如:

  •  dpms.application-eureka 存放eureka相關(guān)配置
  •  或 dpms.application-zipkin 存放zipkin相關(guān)配置
  •  或 dpms.application  存放Spring Cloud所有的公共相關(guān)配置
  •  其他微服務(wù)應(yīng)用關(guān)聯(lián)公共配置后,默認(rèn)使用的公共配置項(xiàng)。
  •  你也可以對(duì)公共配置所有參數(shù)做覆蓋,覆蓋后優(yōu)先獲取本項(xiàng)目中的配置,這個(gè)特性在Apolo的公共配置界面能夠直觀的展示出來。

以上就是對(duì)為什么要選擇Apollo配置中心的一些介紹,相信你的項(xiàng)目中可能也遇到了類似的配置管理問題或痛點(diǎn),強(qiáng)烈建議使用Apollo配置中心作為你的配置管理基礎(chǔ)服務(wù)使用。

關(guān)于Apollo更詳盡的文檔請(qǐng)參考Github:

        https://github.com/ctripcorp/apollo


新聞標(biāo)題:微服務(wù)架構(gòu),配置中心的技術(shù)選型
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/cogopoi.html