微服務(alibaba系列)必備架構nacos、seata、sentinel理論瞭解

1.Nacos

官網地址:https://nacos.io/zh-cn/

文檔地址:https://nacos.io/zh-cn/docs/what-is-nacos.html

nacos支持dubbo和spring-cloud。主要常用的功能是承擔註冊中心和配置中心的功能

註冊中心:是微服務的必須的依靠

配置中心:可以把一些代碼yml或者其他配置文件的內容配置到nacos中保存,當nacos中的配置信息發生改變,nacos自帶動態刷新。不用重啓微服務就能使配置生效

各種註冊中心比較:

服務註冊框架 CAP模型 web控制檯
eureka AP 支持
zookeeper CP 不支持
consul CP 支持
nacos AP/CP(支持切換) 支持

C:Consistency(強一致性)

A:Availability(可用性)

P:Partition tolerance(分區容錯性)

當前微服務註冊中心都會支持分區容錯性

下載啓動後可以通過 http://localhost:8848/nacos 直接訪問  默認賬戶密碼都是nacos

Nacos默認自帶的是嵌入式數據庫derby ruguo  需要做更加安全 的持久化配置可以修改nacos\conf下的配置文件修改爲mysql連接信息

集羣搭建瞭解(以下爲官網架構圖)

首先在三臺nacos中配置好三臺各自的集羣信息,然後實際上就是通過nginx代理  負載均衡三臺nacos

在項目代碼中只需要向nginx地址註冊服務信息即可

2.Seata

官網地址:http://seata.io/zh-cn/

文檔地址:http://seata.io/zh-cn/docs/overview/what-is-seata.html

seata是用於解決分佈式事務的數據一致性問題的框架。在我們的微服務中多個業務模塊微服務甚至多個數據庫的互相調用,如果發生異常則無法控制其他微服務的數據回滾。這個時候需要一個能統一控制微服務之間的調用事物協調的框架Seata。(單機版無分佈式事務問題)

主要組件

Transaction ID全局唯一的事務ID+TC、TM、RM三個組件

TC - 事務協調者:維護全局和分支事務的狀態,驅動全局事務提交或回滾。

TM - 事務管理器:定義全局事務的範圍:開始全局事務、提交或回滾全局事務。

RM - 資源管理器:管理分支事務處理的資源,與TC交談以註冊分支事務和報告分支事務的狀態,並驅動分支事務提交或回滾。

官網處理過程圖形

使用:通過官網文檔集成到項目中之後,只需要在service層方法上打一個註解 @GlobalTransactional

3.Sentinel

官網地址:https://github.com/alibaba/Sentinel

文檔地址:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

Sentinel: 分佈式系統的流量防衛兵

Sentinel 是什麼?

隨着微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。(官網原話)

https://github.com/alibaba/Sentinel/releases 下載運行jar

java -jar sentinel-dashboard-1.7.1.jar  運行

訪問sentinel管理界面   http://localhost:8080  登錄賬戶密碼均爲 sentinel

web可視化界面

流量控制:

        閾值類型:

                 可以通過新增某個接口的流量控制 

                  QPS(每秒請求數量):當前調用api的QPS達到閾值進行限流

                  線程數:當前調用api的線程數達到閾值進行限流

         流控模式:

                   直接:api自己到閾值條件,直接限流

                   關聯:當關聯資源達到閾值就限流自己

                   鏈路:指定調用鏈路上的流量達到閾值就限流

          流控效果:

                    快速失敗:直接提示失敗

                    warm up: 根據codeFactor(冷加載因子,源碼中默認3),從閾值/codeFactor,經過預熱時長,才慢慢達到                                         閾值

                     排隊等待:字面意思排隊等待

直接通過web控制檯新增流控配置

 

降級熔斷:

熱點參數限流: 資源名使用@SentinalResource的屬性取名(注意所有的sentinal控制檯配置出錯都走這個註解)

系統自適應限流:

持久化:把限流配置保存在Nacos的配置中心中就可以做到持久化,當服務重啓,接口資源被重新調用過一次之後,就會出現在sentinal的控制檯限流規則中

使用一下maven和配置

<!-- SpringCloud ailibaba sentinel-datasource-nacos 持久化需要用到-->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
spring:
 cloud:
   
    sentinel:
      transport:
        #配置Sentin dashboard地址
        dashboard: localhost:8080
        # 默認8719端口,假如被佔用了會自動從8719端口+1進行掃描,直到找到未被佔用的 端口
        port: 8719
          datasource:
            ds1:
              nacos:
                server-addr: localhost:8848
                dataId: sentinel-service
                groupId: DEFAULT_GROUP
                data-type: json
                rule-type: flow

  • resource:資源名
  • limitApp:流控針對的調用來源,default不區分來源
  • grade:限流閾值類型(0-根據併發數量來限流 1-根據QPS來進行流量控制)
  • count:限流閾值
  • strategy:調用關係限流策略
  • controlBehavior:流量控制效果(直接拒絕、WarmUP、勻速排隊)
  • clusterMode:是否集羣模式

註解簡紹:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章