微服務(wù)框架

1:Spring Cloud

  • Spring Cloud Config :配置管理工具,支持git存儲配置內(nèi)容,可以使用它實(shí)現(xiàn)應(yīng)用配置的外部華存儲,并支持客戶的配置信息刷新、加密、解密配置內(nèi)容等。
  • Spring Cloud netflix: 核心組件,對多個(gè)Netflix OSS 開源套件進(jìn)行整合。

    Eureka:服務(wù)治理組件,包含服務(wù)注冊中心,服務(wù)注冊于發(fā)現(xiàn)機(jī)制的實(shí)現(xiàn)。
    Hystrix:容錯(cuò)管理組件,實(shí)現(xiàn)斷路器模式,幫助服務(wù)以來中出現(xiàn)的延遲和為故障提供強(qiáng)大的容錯(cuò)能力。
    Ribbon:客戶的負(fù)載均衡的服務(wù)調(diào)用組件。
    Feign:基于Ribbon 和 Hystrix的生命是服務(wù)調(diào)用組件
    Zuul:網(wǎng)關(guān)組件,提供智能路由,訪問過濾等功能。
    Archaius:外部化配置組件。

  • Spring Cloud Bus:事件、消息中線,用于傳播集群中的狀態(tài)變化或事件,以出發(fā)后續(xù)的處理,比如用來動態(tài)刷新配置等。
  • Spring Cloud Cluster:針對ZoonKeeper、Redis、Hazelcast、Consul的選舉算法和通用狀態(tài)模式的實(shí)現(xiàn)。
  • Spring Cloud Cloudfoundry: 與Pivotal Cloudfoundry的整合支持。
  • Spring Cloud Consul:服務(wù)發(fā)現(xiàn)與配置管理工具。
  • Spring Cloud Stream:通過Redis、Rabbit或者Kafka實(shí)現(xiàn)消費(fèi)微服務(wù),可以通過簡單的聲明式模型來發(fā)送和接收消息。
  • Spring Cloud Zookeeper:基于ZooKeeper的服務(wù)發(fā)現(xiàn)與配置管理組件。
  • Spring Cloud Starters:Spring Cloud的基礎(chǔ)組件,它是基于Spring Boot 風(fēng)格項(xiàng)目的基礎(chǔ)依賴模塊。

2:Spring Cloud的構(gòu)建是基于Spring Boot實(shí)現(xiàn)。

3:問題,Spring Boot 打包成jar來部署,通過 java -jar的命令來直接啟動一個(gè)標(biāo)準(zhǔn)的Web應(yīng)用,為什么可以這樣呢?

4:多環(huán)境配置

在SpringBoot中,多環(huán)境配置的文件名需滿足application-{profile}.properties的格式,其中{profile}對應(yīng)你的環(huán)境標(biāo)識

  • application-dev.properties :開發(fā)環(huán)境,這里包含常用的配置,比如數(shù)據(jù)庫配置信息等
  • application-test.properties :測試環(huán)境,......
  • application-prod.properties :生產(chǎn)環(huán)境,......

至于哪個(gè)配置文件會被加載,需要在application.properties文件中通過spring.profiles.active屬性來設(shè)置,其值對應(yīng)配置文件中的{profile}的值。如spring.profiles.active=test就會加載application-test.properties配置文件的內(nèi)容

上面的配置方式,是基于開發(fā)人員來配置的,但是到后期如果運(yùn)維人員要來修改這個(gè)properties文件就顯得復(fù)雜了,運(yùn)維人員需要獲取這個(gè)代碼里面的properties文件來修改,顯然這是不合理的。所以,就出現(xiàn)了很多將配置內(nèi)容外部化的框架和工具,比如 Spring Cloud Config,百度的disconf等

4:監(jiān)控與管理

Spring Boot 提供了一個(gè)特殊的依賴, spring-boot-starter-actuator,引入該模塊能夠自動為Spring Boot構(gòu)建的應(yīng)用提供一系列用于監(jiān)控的端點(diǎn)。

引入actuator之后,模塊中已經(jīng)實(shí)現(xiàn)的原生端點(diǎn),可以分為三大類

  • 應(yīng)用配置類: 獲取應(yīng)用程序中加載的應(yīng)用配置,環(huán)境變量,自動化配置報(bào)告等與Spring Boot 應(yīng)用密切相關(guān)的配置類信息。

    http://localhost:8080/autoconfig
    http://localhost:8080/beans
    http://localhost:8080/configprops
    http://localhost:8080/env
    http://localhost:8080/mappings
    http://localhost:8080/info
    

上面這些信息需要用到的時(shí)候再去查詢,可以說這些是生成的一個(gè)靜態(tài)報(bào)告,系統(tǒng)一旦啟動這些信息就基本決定了。接下來,我們討論另外一個(gè)度量標(biāo)準(zhǔn)

  • 度量指標(biāo)類

度量指標(biāo)提供的是一些動態(tài)信息,比如內(nèi)存使用情況,Http請求統(tǒng)計(jì),外部資源指標(biāo)等,這些信息對于我們監(jiān)控微服務(wù)架構(gòu)監(jiān)控非常有意義。

http://localhost:8080/metrics : 該端點(diǎn)用來返回當(dāng)前應(yīng)用的各類重要度量指標(biāo), 比如內(nèi)存信息,  線程信息,垃圾回收信息等。
http://localhost:8080/health
  • 操作控制類: 提供了對應(yīng)用的關(guān)閉等操作功能。

5:服務(wù)治理

  • 構(gòu)建服務(wù)注冊中心
  • 服務(wù)注冊于服務(wù)發(fā)現(xiàn)
  • Eureka的基礎(chǔ)架構(gòu)
  • Eureka的服務(wù)治理機(jī)制
  • Eureka的配置

服務(wù)治理 包括 服務(wù)注冊 和 服務(wù)發(fā)現(xiàn)

注冊中心
需要維護(hù)類似下面的一個(gè)服務(wù)清單。服務(wù)中心還需要以心跳的方式去監(jiān)測清單中的服務(wù)是否可用,若不可用需要從服務(wù)中心剔除,達(dá)到排出故障服務(wù)的效果。


image.png

服務(wù)發(fā)現(xiàn)
由于在服務(wù)治理框架下運(yùn)作,服務(wù)間的調(diào)用不再通過指定具體的示例地址來調(diào)用,而是通過服務(wù)名發(fā)起請求調(diào)用實(shí)現(xiàn)。服務(wù)調(diào)用方向注冊中心請求,注冊中心返回實(shí)例給調(diào)用方。

Spring Cloud Eureka,使用Netflix Eureka來實(shí)現(xiàn)服務(wù)注冊于發(fā)現(xiàn)。包含了服務(wù)端和客戶端。服務(wù)端和客戶端都用java來寫的。如果是其他語言,需要自己實(shí)現(xiàn)響應(yīng)語言的客戶端,比如我們項(xiàng)目中的golang。

Eureka 服務(wù)端,我們也稱為服務(wù)注冊中心。
Eureka客戶端,主要處理服務(wù)的注冊于發(fā)現(xiàn)。客戶端通過注解和參數(shù)配置的方式,嵌入在客戶端應(yīng)用程序的代碼中,在應(yīng)用程序運(yùn)行時(shí),Eureka客戶端向注冊中心注冊自身提供的服務(wù)并周期性的發(fā)送心跳來更新它的服務(wù)租約。同時(shí),它也能從服務(wù)端查詢當(dāng)前注冊的服務(wù)信息并把它們緩存到本地周期性的刷新服務(wù)狀態(tài)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容