最近一直在學習微服務,畢竟如今你們都在說分佈式,集羣等,分佈式和集羣的基本前提是微服務,因此有比較掌握微服務的基本原理。架構
先看一下微服務架構圖,以下圖:框架
微服務主要由如下幾個基本組件:分佈式
服務描述、註冊中心、服務框架、服務監控、服務追蹤、服務治理。微服務
一、服務描述性能
服務調用首先要解決的問題是服務如何對外描述。經常使用的服務描述包括RESTful API、XML配置已及IDL文件。學習
一般狀況下,若是企業內部之間的服務,都是Java語言,選擇XML配置最簡單。若是內部存在多個服務,而且服務採用的是不一樣語言平臺,建議使用IDL文件方式進行描述服務。若是還存在對外開放服務調用的話,使用RESTful API方式更加通用。blog
服務描述方式 | 使用場景 | 缺點 |
RTSTful API | 跨語言平臺,組織內外皆可以使用 | 使用了HTTP做爲通信協議,相比於TCP協議,性能較差 |
XML配置 | Java 平臺,通常用於組織內部 | 不支持跨語言平臺 |
IDL | 跨語言平臺,組織內外皆可以使用 | 修改或者刪除PB字段不能向前兼容 |
二、註冊中心table
註冊中心解決服務的發佈和訂閱。服務提供者將本身提供的服務以及地址登記到註冊中心,服務消費者則從註冊中心查詢所需調用的服務地址,發起請求。集羣
三、服務框架監控
發起調用以前,須要解決問題:通信協議?數據傳輸方式?數據壓縮格式?
四、服務監控
監控服務調用狀況。須要指標收集、數據處理、數據展現。
五、服務追蹤
記錄服務調用通過的每一層鏈路,進行問題追蹤和故障定位。
服務追蹤原理:服務消費者發起調用,本地按照必定的規則生成一個requestid,發起調用時,將requestid看成請求參數的一部分,傳遞給服務提供者;服務提供者接收請求,記錄此次請求的requestid,而後處理請求。若是服務提供者還要繼續請求其餘服務,還會再本地生成一個本身的requestid,而後把兩個requestid看成請求參數繼續傳遞下去。
六、服務治理
服務監控發現問題,服務追蹤定位問題,服務治理解決問題。
生成環境常見故障:單機故障、單IDC故障、依賴服務不可用。