內容導航
什麼是Tars?
Tars框架源碼部署
Tars服務部署管理
Tars配置中心
Tars服務發現
Tars遠程日誌
Tars狀態監控
什麼是Tars
部署環境
部署過程有生命周期完整的頁面交互
零配置或配置模板化,頁面配置化操作執行文件,部署服務
部署後可以在頁面上進行驗證,並在頁面上查看服務的運行狀態以及產生的日誌,方便問題的排查上報
版本管理頁面直觀可見,可以進行版本的升降級
VPN或公網網絡互通後,可以實現遠程部署
部署過程無需技術背景,操作簡單
部署方案可以跨平台
服務發布架構實現
tars patch 組件將war包上傳到 patch 目錄 (/usr/local/app/patch/tars.upload/)
tars註冊中心通知node拉取對應的包到本地
啟動對應的服務
服務啟動後web頁面可以查看啟動狀態
服務啟動後web頁面可以通過流式日誌查看服務的啟動日誌.

灰度發布
模版管理




Tars服務發布與傳統服務發布對比
Tars配置中心
對業務配置進行集中管理並且提供操作頁面,使配置修改更容易,通知更及時,配置變更也更安全;
對配置變更進行歷史記錄,讓配置可以輕鬆回退到前一版本。
配置拉取簡單,服務只需調用配置服務的接口即可獲取到配置文件。
能靈活管理配置文件,配置文件分為幾個級別:應用配置、Set配置、服務配置和節點配置。

配置信息維護
t_config_files表的主要信息:服務配置文件名稱、配置文件類型、配置文件所屬服務名,配置文件所屬set分組,配置文件所屬節點ip以及配置文件的索引id值以及該服務所在set分組信息。
t_config_references表的主要信息:配置文件的索引id以及該id所引用的配置文件索引id。

服務配置
Tars通過名字服務來實現服務的註冊與發現
Client通過訪問名字服務獲取到被調服務的地址信息列表
Client再根據需要選擇合適的負載均衡方式來調用服務

數據結構
基本類型包括:void、bool、byte、short、int、long、float、double、string、unsigned byte、unsigned short、unsigned int。
複雜類型包括:enum、const、struct、vector、map, 以及struct、vector、map的嵌套。
尋址方式
同步調用:客戶端發出調用請求後等待服務返回結果後再繼續邏輯。
異步調用:客戶端發出調用請求後繼續其他業務邏輯,服務端返回結果又由回調處理類 處理結果。
單向調用:客戶端發出調用請求後就結束調用,服務端不返回調用結果。

服務註冊
簡單易用:對開發者透明
高可用:幾台註冊中心壞掉不會導致整個服務癱瘓,註冊服務整體持續可用
避免跨越機房調用:最好調用優先同一個機房的服務以減少網絡延遲
跨語言:允許開發者使用多種編程語言構建微服務
負載均衡:負載均衡支持輪詢、hash、權重等多種方式。
容錯保護:名字服務排除和Client主動屏蔽。



客戶端實現原理
官網(https://github.com/TarsCloud/TarsJava)下載源碼
通過mvn package 命令將 TarsJava 下的 tars-plugins 打成jar包
將打好的jar包放入到工程中。
配置logback文件,添加appender。如圖配置
代碼中通過 Logger logger = LoggerFactory. getLogger("root")獲取Iogger對象。
通過logger.debug("message")打印日誌,此時日誌會打印到第四步附圖中 logserverObjname配置的Iogserver中;

MDC服務內日誌鏈路跟蹤
MDC內部持有一個ThreadLocal對象,在單個線程處理的請求鏈路中,通過 MDC. put(「traceId", value)設置調用鏈路 ID。
在logback配置文件中利用pattern獲取traceld,如下圖配置:。
此時單個請求鏈路中打印的所有日誌已經包含第一步中MDC中put的traceId所對應的值。

MDC日誌染色
通過實現 ForegroundCompositeConverterBase<ILoggingEvent> 接口封裝染色 conversionRule。如下圖所示:

2.配置logback.xml文件,增加conversionRule標籤,指向第一步封裝的染色conversionRule類,並在輸出遠端日誌的Appender中使用此染色規則。如下圖所示:


logback 整合 Kafka方式1:手寫Appender
引入Kafka jar包,導入到項目中。
手寫Appender實現日誌發送到Kafka。
配置logback.xml。

方式2:開源jar
引入開源jar包,導入到項目中。
配置logback.xml,配置kafkaAppender,以及kafka信息(host, topic等)。
把kafkaAppender放到日誌輸出。

總結
目前遠程日誌服務不支持跨服務日誌鏈路追蹤,需要zipkin實現鏈路追蹤。Tars已經集成zipkin)
可配置多台遠程日誌服務地址,實現咼可用。
可基於Logback做功能的橫向擴展。
Tars狀態監控
提供了服務模塊間調用信息統計上報的功能。方便用戶查看服務的流量、延時、超時、異常等情況。
提供了用戶自定義屬性數據上報的功能。方便用戶查看服務的某些維度或者指標, 比如內存使用情況、隊列大小、cache命中率等。
提供了服務狀態變更和異常信息上報的功能。方便用戶查看服務的何時發布過、重啟過、宕過以及遇到的異常致命錯誤等。
Tars統計信息
應用服務SDK會定期上報心跳。
Node服務會定期檢查SDK的心跳超時。
Node服務會定期檢測服務進程是否存在。

往期精彩回顧
樹莓派系統推出64位版本Oracle Linux 8 已上架至 Microsoft Store計算機史上最瘋狂一幕覺得不錯,請點個在看呀