spring cloud tencent:框架概括及组件详解(一)
0.引言
近期騰訊開源了自己的spring cloud體系技術,稱職的技術從業者除做好自己的本職工作外,還需要緊跟技術潮流,實時了解前沿技術,所以本期我們就來一起學習spring cloud tencent的技術體系
1. 框架概括
如果大家已經熟悉spring cloud技術體系再來學習spring cloud tencent的話,會比較輕松,如果你還沒有掌握spring cloud技術體系,那么更加建議先將spring cloud的基礎組件學習完成后再來學習spring cloud tencent,畢竟當前主流仍然是spring cloud、spring cloud alibaba
快速入門spring cloud alibaba可以參考我之前的專欄:
從零開始學習微服務
以下內容基于spring cloud tencent官方文檔
1.1 框架介紹
框架本身是標準的微服務框架,包含了網關/路由、配置中心、注冊中心等基礎組件,也包含了限流模塊、熔斷模塊等。框架本身是基于Polaris(北極星)服務的,Polaris服務整合了以上所有組件,提供了一站式微服務綜合解決方案
我們可以基于spring cloud tencent快速搭建微服務項目框架。
其配置中心、注冊中心、熔斷限流配置中心服務端管理后臺如圖所示。我們將在后續帶大家實際搭建。
1.2 組成組件
spring cloud tencent本身是微服務框架,所以離不開微服務的基礎組件:
-
注冊中心 Spring Cloud Tencent Discovery
-
配置中心 Spring Cloud Tencent Config
-
網關/路由 Spring Cloud Tencent Router
-
服務限流 Spring Cloud Tencent Rate Limit
-
服務熔斷 Spring Cloud Tencent CircuitBreaker
-
組間調用 Feign或RestTemplate,這點與spring cloud一致
但這里與spring cloud不同的是,以上的注冊中心、配置中心、路由、服務限流、熔斷降級實際上都是通過Polaris服務來完成的,也就是說比起spring cloud alibaba,我們不需要再單獨安裝nacos,sentinel等服務,只需要安裝一個Polaris即可,妥妥的‘一個打5個’
1.3 項目目錄結構
spring cloud tencent項目的相關依賴已經上傳到maven中央倉庫,我們只需要引入依賴即可,同時分布式微服務框架的搭建也不需要我們再手動的創建網關模塊、各類基礎模塊等,只需要在github上下載spring cloud tencent提供的框架源碼,更加方便快捷
其框架自帶的模塊包括以下幾個:
2. 組件介紹
2.1 注冊中心
discovery使用文檔
注冊中心同樣分成服務端和客戶端,服務端基于Polaris,客戶端只需要引入依賴即可,更加詳細的配置我們將在下一章的實操搭建中演示
<dependencies><dependency><groupId>com.tencent.cloud</groupId><artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId></dependency> </dependencies>與nacos的服務模型一樣,polaris的服務模型也分成了三層:命名空間、服務、服務實例
基于命名空間我們就可以實現不同環境的服務隔離了。polaris默認提供了2個命名空間:Polaris和default。其中Polaris命名空間用來存放Polaris的系統服務
polaris注冊中心控制臺如圖所示
值得一提的是poralis提供了服務別名服務,即可以自定義別名,然后讓這個別名指向一個服務,訪問這個別名等同于訪問這個服務名,可以設置多個別名指向同一個服務,這樣可以更加靈活的實現服務請求
2.2 配置中心
config使用文檔
配置中心也分成服務端和客戶端,服務端就是我們的polaris服務,客戶端只需要引入以下依賴即可
<dependency><groupId>com.tencent.cloud</groupId><artifactId>spring-cloud-starter-tencent-polaris-config</artifactId> </dependency>通過配置中心可以更加方便的管理微服務的配置文件,并且實現動態刷新配置文件的作用
與nacos有所差別的是poralis配置文件的創建,需要先創建命名空間
再創建一個分組
最后點擊分組名進入分組,才能創建服務配置文件
他在每個配置文件之上掛載了一個分組,實際上這種方式更加適用于多服務架構,更加方便配置文件管理
2.3 路由/網關
poralis提供了路由的功能,實際就是通過設定的規則來進行動態的請求轉發。通過該功能我們可以實現多測試環境隔離、全鏈路灰度、金絲雀測試、A/B測試等功能
poralis配置路由也非常簡單,只需要在控制臺的服務列表,點擊進入對應服務,然后在路由規則頁面設置即可
除此之外,polaris還支持強悍的就近路由能力,也就是說他能夠根據訪問者的地理位置,轉發請求到距離最近的服務上,這不就是CDN的區域就近訪問功能嗎。
如此我們就可以輕松實現我們的異地多活、跨機房容災方案了!
安裝好CMDB插件后,我們在控制臺,服務列表,編輯服務中即可直接開啟就近訪問
2.4 服務限流
當面臨流量峰值、惡意攻擊時,我們不得不限制最大并發量,以此來保證我們一部分用戶的正常使用,這就是服務限流。
以往的spring cloud中我們需要使用hytrix、setinel或者通過guava包結合redis實現限流,今天什么都不用了, polaris就能搞定。
其配置在控制臺的服務列表,點擊進入對應服務,然后在限流規則頁面設置即可
2.5 服務熔斷降級
當服務報錯時,我們需要通過熔斷降級的手段來避免單個或某幾個服務報錯而導致整個業務不能使用的情況
以往我們可以使用sentinel、hytrix來實現熔斷降級,但今天,還是它——poralis,他又來了
在poralis中配置熔斷降級也很簡單,同樣在服務實例的熔斷規則中配置
2.6 組間調用
spring cloud tencent的組件調用依然采用feign來實現,這里就不再詳細講解了,如果還不了解feign組件的,可以看看往期的文章:
微服務如何通信?組件通信組件:feign詳解
3. 兼容性
考慮大量企業還在使用eureka作為服務發現、注冊中心,polaris還提供了兼容eureka客戶端的功能,polaris通過暴露8761端口,來實現了eureka客戶端的無縫切換,只需要在配置文件中將ip改為polaris服務的ip即可
eureka:client:serviceUrl:defaultZone: http://127.0.0.1:8761/eureka/5. 權限控制
微服務開發中,常常分組開發,不同的人開發不同的模塊,因此我們經常需要通過權限來把控不同服務在polaris上的操作權限,體貼的polaris自然也想到了
它提供了鑒權功能,可以方便的管理用戶的訪問權限。它基于命名空間和服務資源兩個維度來進行權限把控
權限配置也相當簡單,只需要在權限控制模塊操作即可
總結
那么本期,我們針對spring cloud tencent的分享就到此結束了,下一期我們將來實際操作從零完整的搭建一套spring cloud tencent框架,有興趣的小伙伴不妨點個關注,不迷路~
總結
以上是生活随笔為你收集整理的spring cloud tencent:框架概括及组件详解(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信支付之App支付
- 下一篇: 爬取东方财富的十大成交股