日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

導(dǎo)讀:本文摘自于SkyWalking創(chuàng)始人吳晟撰寫的《Apache SkyWalking實戰(zhàn)》一書,詳細講述了SkyWalking的架構(gòu)設(shè)計與優(yōu)勢。

吳晟:Apache基金會會員,Apache SkyWalking創(chuàng)始人、項目VP和PMC成員,Apache孵化器PMC成員,Apache ShardingSphere PMC成員,Apache APISIX (incubating) PPMC成員,Apache ECharts (incubating)和Apache DolphinScheduler (incubating)孵化器導(dǎo)師,Zipkin成員和貢獻者,CNCF OpenTracing核心維護者。

1. SkyWalking的架構(gòu)設(shè)計

如圖所示,SkyWalking官方架構(gòu)圖對SkyWalking的整體架構(gòu)進行了非常直觀的描述。SkyWalking由以下4個核心部分構(gòu)成。

Apache頂級項目,SkyWalking為何一枝獨秀?

 

SkyWalking官方架構(gòu)圖

  • 探針。探針(對應(yīng)圖中Tracing和Mestrics部分)可以是語言探針,也可以是其他項目的協(xié)議。
  • OAP平臺(Observability Analysis Platform),或稱OAP Server。它是一個高度組件化的輕量級分析程序,由兼容各種探針的Receiver、流式分析內(nèi)核和查詢內(nèi)核三部分構(gòu)成。
  • 存儲實現(xiàn)(Storage Implementors)。SkyWalking的OAP Server支持多種存儲實現(xiàn),并且提供了標(biāo)準(zhǔn)接口,可以實現(xiàn)其他存儲。
  • UI模塊(SkyWalking)。通過標(biāo)準(zhǔn)的GraphQL協(xié)議進行統(tǒng)計數(shù)據(jù)查詢和展現(xiàn)。

從設(shè)計角度而言,SkyWalking總體遵循以下三大設(shè)計原則:

  • 面向協(xié)議設(shè)計
  • 模塊化設(shè)計
  • 輕量化設(shè)計

面向協(xié)議設(shè)計

面向協(xié)議設(shè)計是SkyWalking從5.x開始嚴格遵守的首要設(shè)計原則。SkyWalking包含下列對外協(xié)議。

1. 探針協(xié)議

探針協(xié)議分為四大類。

  • 語言探針上報協(xié)議。此協(xié)議包括語言探針的注冊、Metrics數(shù)據(jù)上報、Tracing數(shù)據(jù)上報、命令下行,以及Service Mesh中使用的Telemetry協(xié)議。所有基于語言(JAVA、.NET、Node.js、php、Go等)的探針都需要嚴格遵守此協(xié)議定義。此協(xié)議從v6版本開始全部以gRPC服務(wù)方式對外提供。
  • 語言探針交互協(xié)議。因為分布式追蹤,探針間需要借助HTTP Header、MQ Header等應(yīng)用間通信管道進行交互。此協(xié)議定義交互格式。所有基于語言(Java、.NET、Node.js、PHP、Go等)的探針都需要嚴格遵守此協(xié)議定義。此協(xié)議從v2開始執(zhí)行與v1不同的編碼方法,加入了強制Base64的要求。將從SkyWalking 8開始執(zhí)行的全新v3協(xié)議,簡化了編碼,提供了更多特性,比如透傳業(yè)務(wù)信息、探針交互能力等。
  • Service Mesh協(xié)議。此協(xié)議是SkyWalking針對Service Mesh抽象的專有協(xié)議,任何Mesh類的服務(wù)都可以通過此協(xié)議直接上行Telemetry數(shù)據(jù),用于計算服務(wù)Metrics和拓撲圖。
  • 第三方協(xié)議。針對大型的第三方開源項目,尤其是Service Mesh核心平臺Istio和Envoy,提供核心協(xié)議適配,支持針對Istio+Envoy的Service Mesh進行無縫監(jiān)控。

2. 查詢協(xié)議

查詢協(xié)議使用GraphQL格式定義的查詢協(xié)議。多數(shù)讀者可能更熟悉RESTful格式的查詢,但SkyWalking考慮到更好的擴展性、更加靈活的組合查詢模式,選擇了由Facebook在2012年開源的GraphQL。GraphQL在開源和商業(yè)項目中已經(jīng)得到了廣泛運用。協(xié)議格式的預(yù)定義和多種查詢組合使用提供了UI和第三方系統(tǒng)良好的集成能力。熟悉SkyWalking歷史的讀者會知道,SkyWalking在6.0.0-GA之后的版本,更換了全新的RocketBot UI作為默認UI,這個過程得益于GraphQL的靈活性,后端協(xié)議和實現(xiàn)可以完全不變。社區(qū)中已有大量公司基于此協(xié)議包裝了云平臺產(chǎn)品的UI。

查詢協(xié)議分為以下6類。

  • 元數(shù)據(jù)查詢:查詢在SkyWalking注冊的服務(wù)、服務(wù)實例、Endpoint等元數(shù)據(jù)信息。
  • 拓撲關(guān)系查詢:查詢?nèi)只蛘邌蝹€服務(wù)或Endpoint的拓撲圖及依賴關(guān)系。
  • Metrics指標(biāo)查詢:線性指標(biāo)查詢。
  • 聚合指標(biāo)查詢:區(qū)間范圍均值查詢及TopN查詢等。
  • Trace查詢:追蹤明細查詢。
  • 告警查詢。

除了上述兩大類協(xié)議外,部分模塊也存在一些模塊內(nèi)協(xié)議,如導(dǎo)出的數(shù)據(jù)格式協(xié)議、告警協(xié)議、動態(tài)配置服務(wù)協(xié)議等。這些協(xié)議與執(zhí)行模塊的默認實現(xiàn)有關(guān),屬于SkyWalking默認對外集成協(xié)議的范圍,考慮到模塊化設(shè)計,這些協(xié)議本身也是可以替換的,這里就不一一描述了。

模塊化設(shè)計

模塊化設(shè)計,旨在以開源項目為內(nèi)核,為更多的企業(yè)內(nèi)部定制服務(wù)、商業(yè)產(chǎn)品的二次包裝及插拔機制提供插撥機制與擴展點。開源項目的一致性升級至關(guān)重要,模塊化設(shè)計,明確接口邊界,使得擴展很容易跟上開源版本升級的節(jié)奏。對于商業(yè)包裝和開源產(chǎn)品的迭代發(fā)展,這是必不可少的一環(huán)。

大型的開源項目,無一不是由大量的商業(yè)公司/商業(yè)目的推進,不可能由個人憑興趣在業(yè)余時間完成。雖然SkyWalking在早期的一到兩年是個人基于興趣在推進,但隨著社區(qū)的壯大和商業(yè)價值的體現(xiàn),開放、包容、具有擴展性的架構(gòu)是必不可少的特性。Apache SkyWalking作為Apache頂級項目,基于商業(yè)友好的Apache 2.0開源協(xié)議,在設(shè)計上也充分考慮了定制化及二次開發(fā)的可能性。

SkyWalking根據(jù)探針和服務(wù)端的不同特性,使用了兩種不同的模塊化機制。

Java探針端,Java使用了較為緊湊的實現(xiàn),主要使用SPI將核心服務(wù)隔離成替換狀態(tài),用戶可以像開發(fā)plugin一樣,只需將新的服務(wù)實現(xiàn)放在plugin目錄中,即可實現(xiàn)自動替換。

后端(OAP Server)使用YML定義的模塊化。SkyWalking將模塊化定義為模塊(Module)和實現(xiàn)(Provider)兩部分。模塊為抽象概念,提供對外服務(wù)方法的定義和聲明;Provider需要實現(xiàn)這些服務(wù)方法,同時聲明此實現(xiàn)依賴的其他模塊。值得注意的是,模塊本身不聲明依賴,依賴由實現(xiàn)(Provider)聲明。這種模式允許用戶替換和新增所需的模塊,并進行組織。

輕量化設(shè)計

SkyWalking在設(shè)計之初就提出了輕量化的設(shè)計理念。APM雖然是運維端的核心系統(tǒng),但放在整套業(yè)務(wù)架構(gòu)下,屬于二線支撐系統(tǒng),不承擔(dān)系統(tǒng)主要業(yè)務(wù)功能。而絕大多數(shù)的分析系統(tǒng)要求大數(shù)據(jù)作為其核心技術(shù),但是技術(shù)團隊?wèi)?yīng)該都了解,大數(shù)據(jù)天然具有維護難度大和門檻高的問題。基于此背景,SkyWalking核心要求能夠在非大數(shù)據(jù)架構(gòu)下,使用最輕量級的jar包模式,形成強大的分析能力、擴展能力和模塊化能力。

2 SkyWalking的優(yōu)勢

SkyWalking的優(yōu)勢在于它緊跟當(dāng)前的技術(shù)發(fā)展趨勢,保證同一套APM系統(tǒng)適用于傳統(tǒng)架構(gòu)和云原生架構(gòu)。另外,在技術(shù)設(shè)計理念上,SkyWalking提供了較大的包容性和擴展性,適用于不同的用戶場景和定制需求。

2.1 傳統(tǒng)分布式架構(gòu)與云原生的一致性支持

隨著近十年服務(wù)化和微服務(wù)化的進程,以RPC和HTTP服務(wù)為通信技術(shù)核心,以注冊中心作為服務(wù)注冊與服務(wù)發(fā)現(xiàn)的架構(gòu),已經(jīng)成為國內(nèi)成熟的微服務(wù)“傳統(tǒng)”架構(gòu)。主流技術(shù)有Spring Cloud、Apache Dubbo等。SkyWalking從2015年項目誕生之初,就把這種傳統(tǒng)的分布式架構(gòu)及自動探針作為最為核心的功能。SkyWalking可以無縫支持已經(jīng)穩(wěn)定的分布式服務(wù)架構(gòu),方便替換傳統(tǒng)的監(jiān)控手段,而無須增加運維團隊和開發(fā)團隊的工作量。

同時,從2018年起,由google、Lyft和CNCF的Istio與Envoy組成的Service Mesh方案開始流行,提供了在Kubernetes上創(chuàng)新的分布式服務(wù)管理、監(jiān)控和安全管理能力。SkyWalking項目團隊也一直關(guān)注這一動向,在Istio 1.0.4發(fā)布的同時發(fā)布了SkyWalking 6的測試版本,并在3個月后開始發(fā)布SkyWalking 6穩(wěn)定版本。在6.x版本中,SkyWalking針對Istio和Envoy組成的Service Mesh方案提供了核心適配能力。用戶可以認為Service Mesh構(gòu)成了SkyWalking的一種新的語言無關(guān)的探針形式。利用SkyWalking的后端OAP平臺以及UI,可以對Service Mesh管理中的服務(wù)提供同樣的依賴拓撲、服務(wù)性能指標(biāo)、告警等能力。90%以上的配置與使用其他語言探針(如Java探針)時完全一致。

這也是首個在開源軟件中實現(xiàn)語言探針和Service Mesh一致性解決方案的項目。為不同公司的技術(shù)棧提供統(tǒng)一的監(jiān)控能力,更有利于公司在未來系統(tǒng)架構(gòu)升級中保持監(jiān)控系統(tǒng)的一致性。這個一致性不單單指SkyWalking的使用,更是對于用戶在SkyWalking構(gòu)建的生態(tài)系統(tǒng),如告警平臺、AIOps、指標(biāo)基線計算系統(tǒng)、彈性計算等,保持一致性。

2.2 易于維護

SkyWalking一直堅持以易于維護為核心需求,不引入過多的技術(shù)棧,以免成為一個過于復(fù)雜的監(jiān)控系統(tǒng)。這其中的深層邏輯在于,監(jiān)控系統(tǒng)作為二線甚至三線系統(tǒng),應(yīng)該利用有限的環(huán)境資源,提供盡可能大的監(jiān)控價值,同時盡可能降低對于運維的要求。在SkyWalking集群模式下,大量公司每日需要采集超過百億級別的監(jiān)控數(shù)據(jù)及明細,SkyWalking不要求使用復(fù)雜的大數(shù)據(jù)平臺,以減少系統(tǒng)的入門難度和維護負擔(dān)。同時SkyWalking的構(gòu)建集群架構(gòu)比較簡單,用戶只要針對自己的數(shù)據(jù)量,對于不同的存儲平臺(如MySQL、TiDB或Elasticsearch等)具備基本的集群運維能力,就可以輕松監(jiān)控百億級的流量系統(tǒng)。

2.3 高性能

SkyWalking并不會因為追求簡單、易于維護而降低對性能的要求。SkyWalking內(nèi)置一套針對分布式監(jiān)控專門設(shè)計的可擴展流計算框架(參見第7章),該計算框架針對監(jiān)控數(shù)據(jù)特別設(shè)計了特定的流程,并利用字節(jié)碼技術(shù)來兼顧擴展性和系統(tǒng)性能。

SkyWalking在永輝超市的典型公開案例中,使用15臺OAP節(jié)點和20臺Elasticsearch節(jié)點,就支撐了250多個服務(wù)每天高達3TB的監(jiān)控數(shù)據(jù),數(shù)據(jù)流量超過百億。在6.x中,SkyWalking性能從6.0-GA到6.4,每個版本都得到了明顯提升。

2.4 利于二次開發(fā)和集成

SkyWalking的二次開發(fā)和集成的便利性主要分為兩方面。

面向協(xié)議和模塊化的設(shè)計。面向協(xié)議保證其他的探針接入,只需要學(xué)習(xí)協(xié)議就可以輕松完成對接。而模塊化給予用戶深度定制的能力,模塊實現(xiàn)的可切換使用戶可以對分布式計算過程、集群管理與協(xié)調(diào)模式、存儲、告警引擎、可視化頁面等進行個性化定制。

大量的SkyWalking內(nèi)置實現(xiàn)提供了第三方網(wǎng)絡(luò)接口,HTTP或gRPC接口。用戶可以使用第三方程序進行對接,而非進行程序改造。這樣能保證SkyWalking版本升級時周邊生態(tài)的穩(wěn)定。而且在容器化大行其道的今天,網(wǎng)絡(luò)接口集成的方式也更為友好。

SkyWalking的幾百家公開用戶大量使用了這些擴展方式,定制了豐富的內(nèi)部系統(tǒng),也保證了SkyWalking內(nèi)核的穩(wěn)定和高通用性。

關(guān)于SkyWalking的實戰(zhàn)內(nèi)容推薦閱讀《Apache SkyWalking實戰(zhàn)》一書,本文經(jīng)出版社授權(quán)發(fā)布。

分享到:
標(biāo)簽:SkyWalking
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定