當前位置:編程學習大全網 - 源碼下載 - 開源推薦-C++開發的微服務框架Tars

開源推薦-C++開發的微服務框架Tars

Tars致力於建設微服務技術生態,在底層基礎設施、服務框架、上層應用以及DevOps等方面,都做了較為深入的研發。

2020年3月10日,Linux基金會正式宣布旗下的TARS開源項目成立TARS子基金會。這是壹個 專註於微服務領域 的開源基金會,致力於幫助企業擁抱微服務體系架構,解決在使用微服務方面可能出現的問題。這是首個 起源於中國開源項目 的國際開源基金會,也是Linux基金會下 唯壹聚焦微服務技術生態 的子基金會。

Tars基金會裏目前收錄了9個項目,分為5部分:工具集(Tars Lab)、服務治理(Service Governance)、微服務開發框架(Development Framwork)、存儲(DCache)和基礎設施(Infrustructure)。

1、Tars Lab

Tars Lab項目提供了壓力測試TarsJMeter,基準測試集TarsBenchmark和壹些開發工具包。TarsJavaStart,可以生成服務端和客戶端的TarsJava腳手架,快速開始Tars服務的開發。TarsTools,是壹款支持多種IDE的JetBrains插件,為實現編輯Jce/Tars文件使用的(支持Intellij IDEA、Android Studio、PhpStorm、WebStorm、GoLand、CLion等)。

2、服務治理

服務治理包含了2個項目:TSeer專註於處理服務註冊與發現;TarsGateway是基於Tars框架開發的微服務網關,除具備網關的基礎功能外,還可以自動將HTTP轉換成Tars-RPC協議。

3、微服務開發框架

這部分只包含Tars壹個項目,核心模塊由C++開發,提供了多語言開發框架,默認rpc調用,是Tars基金會的核心項目。其他項目都是圍繞這個項目研發的。

4、微服務存儲

這部分只包含DCache壹個項目,它是基於Tars框架開發的 分布式***享內存存儲系統 ,支持常用的kv數據結構、支持二級索引、支持在線擴縮容、支持自動持久化到後端db等特性。DCache依賴Tars框架的運行,但也得益於Tars,使得存儲服務的運維成本幾乎為0。

5、微服務基礎設施

這是壹個將Tars與K8S融合使用的項目,致力於將Tars融入到K8S生態中。

在這方面還有壹個更優秀的項目K8SFramework,致力於將Tars與K8S深度融合,相信未來會納入到基金會中。

| Tars的前世今生

Tars的前身是騰訊內部的TAF框架,已經經過了10年的驗證,穩定運行與1.6w+服務器,100多個業務線中。

據統計, Tars已在超過 120 家公司、 261200 臺服務器上穩定運行。

在分布式環境下,所有的微服務(包括DCache的服務)都可以通過框架自帶的控制臺-TarsWeb進行管理, 可以做到所有服務狀態可監控,可以在控制臺上進行啟停、修改配置、執行運維指令等操作。

在分布式部署的情況下,可以通過Web控制臺實現壹鍵升級、回退。

Tars自帶配置中心,分級配置,可以統壹修改配置,做到“壹點修改,全局生效”。

在服務部署時,可以在界面上填寫要發布的節點,壹鍵部署、擴容。

框架提供了狀態監控的能力,可以監控服務的調用質量,如流量情況,平均耗時、超時率和異常率。

框架狀態可以在控制臺上壹鍵核查。

Tars提供配套的性能測試工具,這也是Tars基金會的子項目。性能測試工作不再依賴專業的測試人員。

| Tars優勢

1、原生RPC調用

Tars使用自研的RPC協議通信,服務之間建立長連接,在通信頻繁的場景下具備顯著的性能優勢。

2、多語言支持

除C++和Java外,Tars還支持NodeJs,PHP,Go等語言,提供了相應的SDK。當團隊技術棧多樣化時,可以多語言協同開發,無縫對接,開發者可以選擇自己熟悉的語言進行開發,提升團隊整體效率。

在這方面,Spring Cloud想要支持異構語言,需要借助SideCar構建Service Mesh。 業界現在有壹些比較流行的服務網格解決方案,但是 並沒有形成統壹的標準 可移植性不高 。比較常見的像Istio,由於是代理模式,而且非長連接,會存在 更大的延遲 。另壹方面,Istio的部署和運維都非常 復雜 ,需要更多的學習成本和運維成本。

3、內置服務治理功能

Tars框架內嵌了豐富的服務治理功能,包括熔斷、限流、負載均衡、認證、加密等。同時,在服務監控、數據采集,以及灰度部署、跨機房部署等方面,都原生支持,集成度高。

Spring Cloud要支持這些功能,要麽需要集成其他組件,要麽需要設計開發來實現。都需要付出額外的學習成本和研發成本。

4、運維監控

Tars為使用者提供了壹體化的運維管理控制臺,我們可以在Web上進行壹鍵部署、擴容、升級、回退等運維操作。

Spring Cloud並沒有配套的工具。要實現Web管控, 需要借助K8S和容器,同樣需要付出額外的成本。

5、國產化

Tars是國內公司主導的開源項目,這壹點就不多說什麽了。

6、“套裝”優勢

Tars框架提供了微服務相關的壹體化解決方案,常規情況下不需要再去集成其他組件,不存在兼容性問題。這就好比MacBook和兼容機的區別,兼容機妳可能需要付出更多的試錯成本才能達到想要的效果。

| 劣勢

1、項目熱度

Tars開源較晚,到目前只有5年多時間,項目熱度不如Spring Cloud,應用也沒Spring Cloud廣泛。

2、Tars的雲原生之路

Tars和K8s的深度融合也開源不久(2020年7月,K8SFramework),還有待落地驗證。這個項目現在的更新頻率較高,不建議在生產中使用。但是從這壹點也可以看到社區工作者對Tars與K8S融合的高漲熱情,相信未來這個項目壹定會大放異彩!

Tars在微服務開發、運維、監控等方面提供了壹體化的解決方案,可以幫助我們低成本構建企業級微服務。適用於各種規模的團隊,各種規模的系統。

在做技術選型時,如果團隊中有C++開發人員,或者有多語言開發的情況,而且團隊規模、資源有限的情況下,建議選擇Tars。它在運維、監控、測試等方面會為我們節約大量成本。

未來,隨著 K8SFramework 項目的日漸成熟,相信Tars生態會被更多的團隊熟知和使用。

  • 上一篇:雲技術源代碼
  • 下一篇:當妳輸入壹行字,按回車鍵,這壹行的內容是進入鍵盤緩沖區,還是在妳輸入的時候已經進入鍵盤緩沖區了?
  • copyright 2024編程學習大全網