本篇只講下僅僅因爲微服務後,須要改變增長的東西。
可見:服務發現。拓撲。問題定位。監控。
可控:全鏈路故障演練/壓測。配置中心/全流程部署(部署會頻繁,擴縮容頻繁)
本文服務發現
問題定位/拓撲:https://segmentfault.com/a/11...
全流程部署/配置中心/監控:https://segmentfault.com/a/11...
全鏈路故障演練/壓測:https://segmentfault.com/a/11...
更多工程:https://segmentfault.com/a/11...php
服務發現和註冊文章:https://www.nginx.com/blog/se...。這裏只講下公司的應用方案nginx
背景:替換原有Thrift要配置全部IP
一個新服務,人工服務註冊:建立一個服務發現節點,路由規則配置;流量調度;人工服務摘除;
1.調用方
每臺機器上有agent.sdk.兜底文件,實時文件,訪問disf先本地實時文件,兜底ipjson
內置服務發現 (直接獲取endpoint等)
支持多語言多協議
標準化日誌輸出&監控,標準化服務調用規範(統一提供sdk)
容錯機制(故障摘除,過載保護,負載均衡)segmentfault
1.獲取endpoint信息,生成sign等初始
2.server管理服務器,負載均衡,過載保護
以邏輯機房爲管理力度,minHealthyRatio等配置,ip/port列表,狀態,balancer緩存
過載保護(只是防止可用節點太少,可用節點被打掛)安全
防止大量節點被標記爲非健康後,流量打到集中的下游上,設置一個最低健康比例,當健康節點數的佔比低於最低比例時,按最低比例挑選健康度最好的節點,構建健康列表,即最小可用度。
隨着業務的不斷變遷,理想狀況下最小可用度要能根據全鏈路容量壓測進行自動適應。但根據滴滴目前的現狀,資源管理還比較粗放,前期這個值能夠設置的相對保守。當前最小可用度默認指導配置爲0.67,即保證至少有2/3的節點可用,也即最多可剔除對1/3故障節點的訪問。服務器
3.send
4.根據是否成功 vote php是記到apcu(緩存中),不支持就沒法投票。這個各自調用方投票記錄在不一樣地方,各自判斷,各自摘除。沒法相互獲取到其餘的投票結果。
5.記錄log網絡
架構上分爲數據平面和控制平面兩個部分,其中數據平面負責代理微服務之間的通訊,具體包含RPC通訊、服務發現、負載均衡、降級熔斷、限流容錯等,數據平面能夠認爲是微服務框架的通訊和服務治理能力獨立而成的一個單獨的語言無關的進程,而且更注重通用性和擴展性,在Service Mesh中,再也不將數據平面代理視爲一個個孤立的組件,而是將這些代理鏈接在一塊兒造成一個全局的分佈式網絡;控制平面負責對數據平面進行管理,定義服務發現、路由、流量控制、遙測統計等策略,這些策略能夠是全局的,也能夠經過配置某個數據平面節點單獨指定,控制平面經過必定的機制將策略下發到各個數據平面節點,數據平面節點在通訊時會使用這些策略。架構
以Envoy爲基礎,將Envoy做爲默認的數據平面,同時提供強大的控制平面能力。負載均衡
控制:
Pilot、Mixer和Security是Istio 的3大核心組件,分別負責Istio配置管理、策略和遙測以及通訊安全的實現。
pilot:提供通用的配置管理能力,保證不一樣平臺、不一樣環境下的配置均可以經過一致的方式對Envoy進行配置和下方,負責Envoy的生命週期管理,啓動Envoy,而後監控Envoy的運行狀態.啓動,調度到其餘節點等
mixer: 收集遙測統計相關的數據和指標,能夠對服務進行全方位的監控,策略控制:對於一些核心資源,須要經過必定的策略,在不一樣消費服務以及服務的不一樣實例中進行分配,保證資源可以按照預期進行管理.
是一個用 C++ 編寫的雲原生高性能邊緣代理、中間代理和服務代理,做爲專門爲微服務架構設計的通訊總線。
Envoy做爲一個獨立進程,設計爲和每一個應用程序一塊運行,全部的 Envoy 造成一個透明的通訊網格,每一個應用程序發送消息到本地Envoy代理或從本地Envoy代理接收消息,但不須要知道具體的網絡拓撲。