摘要:服務(wù)監(jiān)控一旦服務(wù)消費者與服務(wù)提供者之間能夠正常發(fā)起服務(wù)調(diào)用,你就需要對調(diào)用情況進行監(jiān)控,以了解服務(wù)是否正常。
目錄
一、微服務(wù)
1、服務(wù)化拆分的兩種姿勢
2、服務(wù)化拆分的前置條件
二、微服務(wù)組件
1、服務(wù)描述
2、注冊中心
3、服務(wù)框架
4、服務(wù)監(jiān)控
5、服務(wù)追蹤
6、服務(wù)治理
微服務(wù)微服務(wù)架構(gòu)是一種將單應(yīng)用程序作為一套微型服務(wù)開發(fā)的方法,每種應(yīng)用程序都在其自己的進程中運行,并與輕量級機制(通常是HTTP資源的API)進行通信。這些服務(wù)是圍繞業(yè)務(wù)功能構(gòu)建的,可以通過全自動部署機制進行獨立部署。這些微服務(wù)的將集中化管理部分降到最少,同時,微服務(wù)還可以用不同的編程語言編寫,并使用不同的數(shù)據(jù)存儲技術(shù)。
服務(wù)化拆分的兩種姿勢
縱向拆分:從業(yè)務(wù)維度進行拆分。標準是按照業(yè)務(wù)的關(guān)聯(lián)程度來決定,關(guān)聯(lián)比較密切的業(yè)務(wù)適合拆分為一個微服務(wù),而功能相對比較獨立的業(yè)務(wù)適合多帶帶拆分為一個微服務(wù)。
橫向拆分:從公共且獨立功能維度拆分。標準是按照是否有公共的被多個其他服務(wù)調(diào)用,且依賴的資源獨立不與其他業(yè)務(wù)耦合。
服務(wù)化拆分的前置條件
服務(wù)如何定義。對于單體應(yīng)用來說,不同功能模塊之前相互交互時,通常是以類庫的方式來提供各個模塊的功能。對于微服務(wù)來說,每個服務(wù)都運行在各自的進程之中,應(yīng)該以何種形式向外界傳達自己的信息呢?答案就是接口,無論采用哪種通訊協(xié)議,是HTTP還是RPC,服務(wù)之間的調(diào)用都通過接口描述來約定,約定內(nèi)容包括接口名、接口參數(shù)以及接口返回值。
服務(wù)如何發(fā)布和訂閱。單體應(yīng)用由于部署在同一個WAR包里,接口之間的調(diào)用屬于進程內(nèi)的調(diào)用。而拆分為微服務(wù)獨立部署后,服務(wù)提供者該如何對外暴露自己的地址,服務(wù)調(diào)用者該如何查詢所需要調(diào)用的服務(wù)的地址呢?這個時候你就需要一個類似登記處的地方,能夠記錄每個服務(wù)提供者的地址以供服務(wù)調(diào)用者查詢,在微服務(wù)架構(gòu)里,這個地方就是注冊中心。
服務(wù)如何監(jiān)控。通常對于一個服務(wù),我們最關(guān)心的是QPS(調(diào)用量)、AvgTime(平均耗時)以及P999(99.9%的請求性能在多少毫秒以內(nèi))這些指標。這時候你就需要一種通用的監(jiān)控方案,能夠覆蓋業(yè)務(wù)埋點、數(shù)據(jù)收集、數(shù)據(jù)處理,最后到數(shù)據(jù)展示的全鏈路功能。
服務(wù)如何治理??梢韵胂螅鸱譃槲⒎?wù)架構(gòu)后,服務(wù)的數(shù)量變多了,依賴關(guān)系也變復雜了。比如一個服務(wù)的性能有問題時,依賴的服務(wù)都勢必會受到影響??梢栽O(shè)定一個調(diào)用性能閾值,如果一段時間內(nèi)一直超過這個值,那么依賴服務(wù)的調(diào)用可以直接返回,這就是熔斷,也是服務(wù)治理最常用的手段之一。
故障如何定位。在單體應(yīng)用拆分為微服務(wù)之后,一次用戶調(diào)用可能依賴多個服務(wù),每個服務(wù)又部署在不同的節(jié)點上,如果用戶調(diào)用出現(xiàn)問題,你需要有一種解決方案能夠?qū)⒁淮斡脩粽埱筮M行標記,并在多個依賴的服務(wù)系統(tǒng)中繼續(xù)傳遞,以便串聯(lián)所有路徑,從而進行故障定位。
微服務(wù)組件服務(wù)描述
服務(wù)調(diào)用首先要解決的問題就是服務(wù)如何對外描述。比如,你對外提供了一個服務(wù),那么這個服務(wù)的服務(wù)名叫什么?調(diào)用這個服務(wù)需要提供哪些信息?調(diào)用這個服務(wù)返回的結(jié)果是什么格式的?該如何解析?這些就是服務(wù)描述要解決的問題。簡單來說就是接口文檔。
常用的服務(wù)描述方式包括RESTful API、XML配置以及IDL文件三種。
注冊中心
你提供了一個服務(wù),如何讓外部想調(diào)用你的服務(wù)的人知道。這個時候就需要一個類似注冊中心的角色,服務(wù)提供者將自己提供的服務(wù)以及地址登記到注冊中心,服務(wù)消費者則從注冊中心查詢所需要調(diào)用的服務(wù)的地址,然后發(fā)起請求。
服務(wù)框架
服務(wù)通信采用什么協(xié)議?就是說服務(wù)提供者和服務(wù)消費者之間以什么樣的協(xié)議進行網(wǎng)絡(luò)通信,是采用四層TCP、UDP協(xié)議,還是采用七層HTTP協(xié)議,還是采用其他協(xié)議?
數(shù)據(jù)傳輸采用什么方式?就是說服務(wù)提供者和服務(wù)消費者之間的數(shù)據(jù)傳輸采用哪種方式,是同步還是異步,是在單連接上傳輸,還是多路復用。
數(shù)據(jù)壓縮采用什么格式?通常數(shù)據(jù)傳輸都會對數(shù)據(jù)進行壓縮,來減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,從而減少帶寬消耗和網(wǎng)絡(luò)傳輸時間,比如常見的JSON序列化、Java對象序列化以及Protobuf序列化等。
服務(wù)監(jiān)控
一旦服務(wù)消費者與服務(wù)提供者之間能夠正常發(fā)起服務(wù)調(diào)用,你就需要對調(diào)用情況進行監(jiān)控,以了解服務(wù)是否正常。
服務(wù)追蹤
你還需要記錄服務(wù)調(diào)用經(jīng)過的每一層鏈路,以便進行問題追蹤和故障定位。
服務(wù)治理
服務(wù)監(jiān)控能夠發(fā)現(xiàn)問題,服務(wù)追蹤能夠定位問題所在,而解決問題就得靠服務(wù)治理了。服務(wù)治理就是通過一系列的手段來保證在各種意外情況下,服務(wù)調(diào)用仍然能夠正常進行。比如自動擴縮容,就可以用來解決服務(wù)的容量問題。
感謝您耐心看完的文章
順便給大家推薦一個Java技術(shù)交流群:710373545里面會分享一些資深架構(gòu)師錄制的視頻資料:有Spring,MyBatis,Netty源碼分析,高并發(fā)、高性能、分布式、微服務(wù)架構(gòu)的原理,JVM性能優(yōu)化、分布式架構(gòu)等這些成為架構(gòu)師必備的知識體系。還能領(lǐng)取免費的學習資源,目前受益良多!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74637.html
摘要:什么是分布式系統(tǒng)從進程角度看兩個程序分別運行在兩臺主機的進程上它們相互協(xié)作最終完成同一個服務(wù)那么理論上這兩個程序所組成的系統(tǒng)可以稱作分布式系統(tǒng)當然這兩個程序可以是不同的程序可以是相同的程序如果是相同的程序我們又可以稱為集群所謂集群就是將相同 什么是分布式系統(tǒng) 從進程角度看, 兩個程序分別運行在兩臺主機的進程上, 它們相互協(xié)作最終完成同一個服務(wù), 那么理論上這兩個程序所組成的系統(tǒng), 可以...
摘要:筆者對微服務(wù)系統(tǒng)的觀點是,我們從單體系統(tǒng)向微服務(wù)系統(tǒng)改造的過程中,需要認真思考什么階段使用微服務(wù)。此外,為了解決服務(wù)部署,我們可以考慮通過滾動發(fā)布來實現(xiàn)服務(wù)的無中斷。事實上,微服務(wù)保證其服務(wù)的整體可用性。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關(guān)注公眾號:「服務(wù)端思維」。一群同頻者,一起成長,一起精進,打破認知的局限性。 一、逃離單體系統(tǒng),...
摘要:第二種則由多個小單元構(gòu)成,每個小單元都是獨立的服務(wù)。微服務(wù)架構(gòu)所依賴的彈性通信輕量等需求容器恰好可以完美提供,因此微服務(wù)與容器可以說是完美的一對。談到架構(gòu),微服務(wù)架構(gòu)已然是時至今日必聊的一個話題,系統(tǒng)架構(gòu)的選型與是否轉(zhuǎn)型,不應(yīng)該是為了微服務(wù)架構(gòu)而架構(gòu),而是源于微服務(wù)架構(gòu)自身是否更適合業(yè)務(wù)自身的需求,微服務(wù)架構(gòu)的優(yōu)勢與所要付出的代價是否值得你,去做一次轉(zhuǎn)變。 ? ?GIStack for M...
摘要:降級往往會指定不同的級別,面臨不同的異常等級執(zhí)行不同的處理。談?wù)勀銓偷恼J識兩者關(guān)系具體可以看公眾號阿里巴巴中間件的這篇文章獨家解讀從微服務(wù)框架到微服務(wù)生態(tài)與并不是競爭關(guān)系,作為成熟的框架,其易用性擴展性和健壯性已得到業(yè)界的認可。 該文已加入筆主的開源項目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項目),地址:https://github.com/...
摘要:降級往往會指定不同的級別,面臨不同的異常等級執(zhí)行不同的處理。談?wù)勀銓偷恼J識兩者關(guān)系具體可以看公眾號阿里巴巴中間件的這篇文章獨家解讀從微服務(wù)框架到微服務(wù)生態(tài)與并不是競爭關(guān)系,作為成熟的框架,其易用性擴展性和健壯性已得到業(yè)界的認可。 該文已加入筆主的開源項目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項目),地址:https://github.com/...
閱讀 2191·2023-04-26 00:50
閱讀 2546·2021-10-13 09:39
閱讀 2370·2021-09-22 15:34
閱讀 1680·2021-09-04 16:41
閱讀 1401·2019-08-30 15:55
閱讀 2494·2019-08-30 15:53
閱讀 1761·2019-08-30 15:52
閱讀 810·2019-08-29 16:19