亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringCloud Alibaba框架介紹

 更新時間:2023年04月12日 10:17:05   作者:拒絕冗余  
spring cloud是一個基于springboot實現(xiàn)的微服務(wù)架構(gòu)開發(fā)工具,目前主流的SpringCloud分為SpringCloud Netflix和阿里云開源的SpringCloud Alibaba兩個系列,本文主要介紹SpringCloud Alibaba框架,感興趣的朋友可以參考一下

前言

spring cloud是一個基于springboot實現(xiàn)的微服務(wù)架構(gòu)開發(fā)工具,使用springcloud框架進行微服務(wù)業(yè)務(wù)開發(fā)是java后端開發(fā)必備技能,目前主流的SpringCloud分為SpringCloud Netflix和阿里云開源的SpringCloud Alibaba兩個系列,由于博主一直用的是springcloud alibaba,所以本文以此為例總結(jié)一下SpringCloud Alibaba都有哪些組件及各自的作用。本文非實戰(zhàn)文章,但是參考了冰河老師的《SpringCloud Alibaba實戰(zhàn)》一書。

1.集成Nacos實現(xiàn)服務(wù)的自動注冊與發(fā)現(xiàn)

如果系統(tǒng)采用了微服務(wù)的架構(gòu)模式,隨著微服務(wù)數(shù)量的不斷增多,服務(wù)之間的調(diào)用關(guān)系會變得縱橫交錯,需要引入服務(wù)治理的功能。服務(wù)治理也是在微服務(wù)架構(gòu)模式下的一種最核心和最基本的模塊,主要用來實現(xiàn)各個微服務(wù)的自動注冊與發(fā)現(xiàn)。能夠?qū)崿F(xiàn)注冊中心功能的組件有:Zookeeper、Eureka、Consul、Etcd、Nacos等。SpringCloud Alibaba框架用的是nacos。

Nacos除了提供服務(wù)注冊與發(fā)現(xiàn)功能外,還有一個重要功能是作為配置中心統(tǒng)一管理各服務(wù)的配置數(shù)據(jù)。集成nacos后只需要在application.yml文件中加入nacos配置即可,其余的配置加到nacos中,可以在線編輯修改發(fā)布,不需要重啟對應(yīng)的服務(wù)。

2. Feign負載均衡

Ribbon負載均衡是使用RestTemplate加上@loadBalance注解就可以通過服務(wù)名加上負載均衡策略去調(diào)用遠程的服務(wù)。
但是這樣實現(xiàn)的負載均衡仍然需要在業(yè)務(wù)代碼中調(diào)用遠程接口,有點low。OpenFeign組件是這種負載均衡實現(xiàn)方式的升級,面向接口編程,也就是說,咱們把注冊中心中每一個服務(wù)都以一個接口的形式體現(xiàn)。
@FeignClient注解把一個龐大的微服務(wù)抽象成了一個接口,@FeignClient(value = “xxxxx”)中的value 屬性具體指定是哪個微服務(wù)。
那么OpenFeign底層會幫我們通過微服務(wù)的服務(wù)名去獲取到我們最關(guān)心的服務(wù)IP+Port,然后通過接口中的方法上配的@GetMapping(“/xxx/xxx”)來定位到具體方法。我們服務(wù)的消費者只需要調(diào)用這個接口中的方法,配合Ribbon使用,那么底層就會自動的調(diào)用遠方的服務(wù),負載均衡策略默認使用的是Ribbon中的輪詢機制。

注:OpenFeign和Feign的區(qū)別:

Feign是SpringCloud中的一個輕量級RestFul的Http客戶端,內(nèi)置了Ribbon,用于客戶端負載均衡,使用方法是使用Feign的注解去修飾一個接口,客戶端調(diào)用這個接口那么久是調(diào)用遠程的微服務(wù)了。
OpenFeign在Feign的基礎(chǔ)上支持了SpringMVC的注解,如@RequestMapping等。OpenFeign的@FeigenClient注解可以解析SpringMvc的@RequestMapping注解下的接口,通過動態(tài)代理的方式產(chǎn)生實現(xiàn)類,實現(xiàn)類中進行負載均衡的微服務(wù)遠程調(diào)用!

3.使用Sentinel實現(xiàn)了接口的限流

Sentinel 從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務(wù)的穩(wěn)定性,它分為兩個部分:

  1. 核心庫(Java 客戶端)不依賴任何框架/庫,同時對 Dubbo / Spring Cloud 等框架也有較好的支持,整合時在項目的pom.xml文件中引入Sentinel的依賴即可。
  2. 控制臺(Dashboard)基于 Spring Boot 開發(fā),從官網(wǎng)下載的是后臺打好的jar包,可以直接運行,不需要額外的 Tomcat 等應(yīng) 用容器。

集成sentinel的服務(wù)中接口被調(diào)用后,可以從sentinel控制臺看到它自動攔截到了每個接口,點擊該接口就可以進行各種限流配置,如設(shè)置QPS閾值、并發(fā)流程數(shù)等。
注意:因為Sentinel是懶加載機制,所以需要訪問一下接口,再去訪問Sentinel 才有數(shù)據(jù),并不是直接啟動Sentinel就有的。

4.Feign整合Sentinel實現(xiàn)容錯

系統(tǒng)中微服務(wù)數(shù)量較多時可能發(fā)生某些服務(wù)中斷或者訪問異常的情況,導致其他調(diào)用此服務(wù)的微服務(wù)也出現(xiàn)異常,從而系統(tǒng)可能出現(xiàn)不可用的情況,所以有必要添加服務(wù)容錯機制。具體實現(xiàn)方式是在微服務(wù)中添加sentinel依賴并在Feign中增加如下配置:

feign:
sentinel:
enabled: true

容錯類需要實現(xiàn)一個被容錯的接口,并實現(xiàn)這個接口的方法,比如要為userService中的方法容錯就要先建一個容錯類userServiceFallBack類實現(xiàn)UserService接口,接口方法具體實現(xiàn)是userService服務(wù)中斷或異常后的處理邏輯,比如返回各默認的對象等。接下來,在被遠程調(diào)用的微服務(wù)的UserService 接口上的@FeignClient注解上指定容錯類,如下所示。

@FeignClient(value = “server-user”, fallback = UserServiceFallBack.class)

5.API網(wǎng)關(guān)

API網(wǎng)關(guān),其實就是整個系統(tǒng)的統(tǒng)一入口。網(wǎng)關(guān)會封裝微服務(wù)的內(nèi)部結(jié)構(gòu),為客戶端提供統(tǒng)一的入口服務(wù),同時,一些與具體業(yè)務(wù)邏輯無關(guān)的通用邏輯可以在網(wǎng)關(guān)中實現(xiàn),比如認證、授權(quán)、路由轉(zhuǎn)發(fā)、限流、監(jiān)控等。目前,比較主流的API網(wǎng)關(guān)有:Nginx+Lua、Kong網(wǎng)關(guān)、Zuul網(wǎng)關(guān)(Netflix開源的網(wǎng)關(guān))、Apache Shenyu網(wǎng)關(guān)、SpringCloud Gateway網(wǎng)關(guān)。SpringCloud Alibaba技術(shù)棧中,并沒有單獨實現(xiàn)網(wǎng)關(guān)的組件,一般使用SpringCloud Gateway實現(xiàn)網(wǎng)關(guān)功能。
客戶端請求到 Gateway 網(wǎng)關(guān),會先經(jīng)過 Gateway Handler Mapping 進行請求和路由匹配。匹配成功后再發(fā)送到 Gateway Web Handler 處理,然后會經(jīng)過特定的過濾器鏈,經(jīng)過所有前置過濾后,會發(fā)送代理請求。請求結(jié)果返回后,最后會執(zhí)行所有的后置過濾器。
在實際應(yīng)用中,我們可以增加一個網(wǎng)關(guān)微服務(wù),然后集成nacos服務(wù),這樣就能通過網(wǎng)關(guān)端口來統(tǒng)一訪問注冊到nacos中的其他微服務(wù),也可以集成Sentinel在網(wǎng)關(guān)服務(wù)中實現(xiàn)限流。

6.Sleuth整合ZipKin實現(xiàn)鏈路追蹤

為什么要實現(xiàn)鏈路跟蹤?單體架構(gòu)中可以使用AOP在調(diào)用具體的業(yè)務(wù)邏輯前后分別打印一下時間即可計算出整體的調(diào)用時間,使用 AOP捕獲異常也可知道是哪里的調(diào)用導致的異常。但是在分布式微服務(wù)場景下,使用AOP技術(shù)是無法追蹤到各個微服務(wù)的調(diào)用情況的,也就無法知道系統(tǒng)中處理一次請求的整體調(diào)用鏈路。
每個微服務(wù)只需要添加Sleuth的依賴,就可以在命令行查看鏈路追蹤情況。

  • Sleuth支持抽樣采集數(shù)據(jù)。尤其是在高并發(fā)場景下,如果采集所有的數(shù)據(jù),那么采集的數(shù)據(jù)量就太大了,非常耗費系統(tǒng)的性能,通常的做法是可以減少一部分數(shù)據(jù)量,配置如下:
sleuth:
	enabled: true
	sampler.percentage: 1.0 #request采樣率
  • Sleuth支持對異步任務(wù)的鏈路追蹤,在項目中使用@Async注解開啟一個異步任務(wù)后,Sleuth會為異步任務(wù)重新生成一個Span。

 在實際項目中通過查看日志的情況來了解系統(tǒng)調(diào)用的鏈路情況效率太差了,一般會將Sleuth和ZipKin進行整合,利用ZipKin將日志進行聚合,將鏈路日志進行可視化展示,并支持全文檢索。Zipkin總體上分為服務(wù)端和客戶端,我們需要下載并啟動ZipKin服務(wù)端的Jar包(默認監(jiān)聽的端口號為9411),在各微服務(wù)中集成ZipKin的客戶端(添加ZipKin依賴)。

通過ZipKin能夠查看服務(wù)的調(diào)用鏈路,并且能夠查看分析具體微服務(wù)的調(diào)用情況,找出系統(tǒng)的瓶頸點,進而進行針對性的優(yōu)化。另外,ZipKin中也支持下載系統(tǒng)調(diào)用鏈路的Json數(shù)據(jù),可以將數(shù)據(jù)保存到ElasticSearch、Cassandra或者MySQL中。

7.消息隊列MQ

通過消息隊列,我們可以實現(xiàn)多個進程之間的通信,例如,可以實現(xiàn)多個微服務(wù)之間的消息通信。MQ的最簡模型就是生產(chǎn)者生產(chǎn)消息,將消息發(fā)送到MQ,消息消費者訂閱MQ,消費消息。使用的比較多的MQ包含RabbitMQ、Kafka和RocketMQ。
引入MQ最大的優(yōu)點就是異步解耦和流量削峰,但是引入MQ后也有很多需要注意的事項和問題,主要包括:系統(tǒng)的整體可用性降低、系統(tǒng)的復(fù)雜度變高、引入了消息一致性的問題。

到此這篇關(guān)于SpringCloud Alibaba框架介紹的文章就介紹到這了,更多相關(guān)SpringCloud Alibaba框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java連接zookeeper實現(xiàn)zookeeper教程

    java連接zookeeper實現(xiàn)zookeeper教程

    這篇文章主要介紹了java連接zookeeper實現(xiàn)zookeeper教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringSecurity注銷設(shè)置的方法

    SpringSecurity注銷設(shè)置的方法

    這篇文章主要為大家詳細介紹了SpringSecurity注銷設(shè)置的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • java中的AWT事件處理問題

    java中的AWT事件處理問題

    這篇文章主要介紹了java中的AWT事件處理問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • hadoop 詳解如何實現(xiàn)數(shù)據(jù)排序

    hadoop 詳解如何實現(xiàn)數(shù)據(jù)排序

    在很多業(yè)務(wù)場景下,需要對原始的數(shù)據(jù)讀取分析后,將輸出的結(jié)果按照指定的業(yè)務(wù)字段進行排序輸出,方便上層應(yīng)用對結(jié)果數(shù)據(jù)進行展示或使用,減少二次排序的成本
    2022-02-02
  • java跟蹤執(zhí)行的sql語句示例分享

    java跟蹤執(zhí)行的sql語句示例分享

    這篇文章主要介紹了java跟蹤執(zhí)行的sql語句示例分享,需要的朋友可以參考下
    2014-03-03
  • SpringBoot項目@Async方法問題解決方案

    SpringBoot項目@Async方法問題解決方案

    這篇文章主要介紹了SpringBoot項目@Async方法問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 使用Spring Boot上傳文件功能

    使用Spring Boot上傳文件功能

    上傳文件是互聯(lián)網(wǎng)中常應(yīng)用的場景之一,最典型的情況就是上傳頭像等,今天就帶著大家做一個Spring Boot上傳文件的小案例,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-01-01
  • Java Stream的基本概念以及創(chuàng)建方法

    Java Stream的基本概念以及創(chuàng)建方法

    這篇文章主要介紹了Java Stream的基本概念以及創(chuàng)建方法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-08-08
  • Java泛型機制與反射原理相關(guān)知識總結(jié)

    Java泛型機制與反射原理相關(guān)知識總結(jié)

    今天帶大家學習的是關(guān)于Java進階的相關(guān)知識,文章圍繞著Java泛型機制與反射原理展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • springboot 集成cas5.3 實現(xiàn)sso單點登錄詳細流程

    springboot 集成cas5.3 實現(xiàn)sso單點登錄詳細流程

    SSO的定義是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。單點登錄是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一,本文給大家介紹springboot 集成cas5.3 實現(xiàn)sso單點登錄功能,感興趣的朋友一起看看吧
    2021-10-10

最新評論