最近一直在學習微服務,畢竟現在大家都在說分布式,集群等,分布式和集群的基本前提是微服務,所以有比較掌握微服務的基本原理。
先看一下微服務架構圖,如下圖:
微服務主要由以下幾個基本組件:
服務描述、注冊中心、服務框架、服務監控、服務追蹤、服務治理。
1、服務描述
服務調用首先要解決的問題是服務如何對外描述。常用的服務描述包括RESTful API、XML配置已及IDL文件。
通常情況下,如果企業內部之間的服務,都是Java語言,選擇XML配置最簡單。如果內部存在多個服務,並且服務采用的是不同語言平台,建議使用IDL文件方式進行描述服務。如果還存在對外開放服務調用的話,使用RESTful API方式更加通用。
服務描述方式 | 使用場景 | 缺點 |
RTSTful API | 跨語言平台,組織內外皆可使用 | 使用了HTTP作為通訊協議,相比於TCP協議,性能較差 |
XML配置 | Java 平台,一般用於組織內部 | 不支持跨語言平台 |
IDL | 跨語言平台,組織內外皆可使用 | 修改或者刪除PB字段不能向前兼容 |
2、注冊中心
注冊中心解決服務的發布和訂閱。服務提供者將自己提供的服務以及地址登記到注冊中心,服務消費者則從注冊中心查詢所需調用的服務地址,發起請求。
3、服務框架
發起調用之前,需要解決問題:通訊協議?數據傳輸方式?數據壓縮格式?
4、服務監控
監控服務調用情況。需要指標收集、數據處理、數據展示。
5、服務追蹤
記錄服務調用經過的每一層鏈路,進行問題追蹤和故障定位。
服務追蹤原理:服務消費者發起調用,本地按照一定的規則生成一個requestid,發起調用時,將requestid當作請求參數的一部分,傳遞給服務提供者;服務提供者接收請求,記錄這次請求的requestid,然后處理請求。如果服務提供者還要繼續請求其他服務,還會再本地生成一個自己的requestid,然后把兩個requestid當作請求參數繼續傳遞下去。
6、服務治理
服務監控發現問題,服務追蹤定位問題,服務治理解決問題。
生成環境常見故障:單機故障、單IDC故障、依賴服務不可用。