1、ServiceMesh在在騰訊云騰訊云的演進及實踐的演進及實踐騰訊高級工程師目錄騰訊云實踐ServiceMesh的背景騰訊云ServiceMesh的演進及生產實踐展望總結騰訊內部的服務化現狀騰訊內部的服務化現狀67000注冊服務數2190000服務節點數160000億億服務調用數99.9945%成功率騰訊名字服務騰訊名字服務CL5功能架構功能架構監控統計配置OSS服務發現負載均衡就近訪問故障隔離異地容災過載保護功能矩陣功能矩陣同步DNS接入方式接入方式異步業務形態業務形態StandaloneMicroServiceRouter老板說,我們要支持產業互聯網!一切看來很美好,直到。一切看來很美好,
2、直到。存在較多遺留系統單點故障比較敏感要求高效的開發體驗業務定制化場景較多對開源存在執念To B用戶特點用戶特點代碼侵入性服務治理能力不全存在技術門檻可定制性較弱未外部開源原有架構的問題原有架構的問題新的解決方案新的解決方案-ServiceMesh本質:服務之間,通過Sidecar進行透明的進行透明的RPC通信通信ServiceMesh的開源發展史的開源發展史2017.6Willian Morgan初次定義Service Mesh2018.7istio發布發布production ready的的1.0版本版本概念階段群雄逐鹿可生產用戶代碼無侵入,遺留系統易接入FullStack Governa
3、nce,服務故障一目了然標準協議接入,開箱即用覆蓋方方面面的配置功能社區強大,求助途徑多樣化ServiceMesh能帶來的收益能帶來的收益聽起來很厲害的樣子那應該怎么去落地ServiceMesh呢?目錄騰訊云實踐ServiceMesh的背景騰訊云ServiceMesh的演進及落地實踐展望總結騰訊云微服務平臺TSF基礎設施層邏輯層接入層Service Mesh生產架構生產架構ServiceMesh產品化挑戰之一面向異構計算平臺容器化程度低PaaS環境多樣化業務隔離性要求高私有云客戶場景私有云客戶場景核心能力依賴kubernetes只能支持接管容器下的微服務單一租戶,配置/服務不隔離開源istio
4、的約束的約束要做到靈活,必須與要做到靈活,必須與kubernetes解耦解耦面向異構計算平臺面向異構計算平臺-技術架構技術架構架構:獨立名字服務/配置中心部署:全功能Pilot-agent調用:分布式DNS容錯:上報式健康檢查隔離:多租戶容災:分布式一致性、配置持久化Pilot-agent配置靈活變更提前預判失敗數據面大管家上報式健康檢查上報式健康檢查-HDS解耦數據面與服務注冊中心配置靈活不占用業務線程多租戶的支持多租戶的支持租戶管理中心租戶數據隔離存儲控制面緩存增加租戶索引ServiceMesh產品化挑戰之二坎坷的域名解釋無法支持支撐大批量服務并發寫入沖突容器下sed寫入失敗靜態表解析靜態
5、表解析NodeNaming Servicepilot-agentservices events/etc/hostsclientserverquery不合適首節點首節點nameserver配置沖突配置不生效(GLIBC低版本的坑)配置還原DHCPkubernetesNodeNaming Servicepilot-agentservices events/etc/resolv.confclientserverdns-agent不合適DNS流量攔截流量攔截NodeNaming Servicepilot-agentservices eventsclientserverdns-agentiptables
6、Escalate DNS Serversnon-service domainPilotconfig需要做流量接管需代理其他的nameserver需感知系統配置更新合適ServiceMesh產品化挑戰之二遙感與控制工作在控制面Report接口用于調用統計上報Check接口用于檢查請求合法性mixer工作模式工作模式Config Serviceredismixerenvoymixer.filtercheckreportappverified requestsrequests with attributes統計上報策略檢查配置同步本地緩存三件套角色ruleHowhandlerWhatInstance
7、Who資源損耗緩存穿透緩存穿透問題request.header.app#test1,request.header.version#2.0,request.path#/consume,request.header.app#test2,request.header.version#1.0,request.path#/produce,request.header.app#test1,request.header.version#3.0,request.path#/consume,OKABORTEDOKMutableBagCheckResultmixerDimensions預拉取的偏差問題envoym
8、ixercheck(prefectch)quotas時間周期請求配額 本地剩余預分配預拉取返回模式分配結果周期110110OPENPASS1100/OPENPASS.0.OPEN.1400CLOSEPASS周期周期210010CLOSEFAIL1100/OPENPASS控制面容災問題Config Serviceredismixercheckreportadapter/rule/handlerupdate quotaenvoymixer.filterappverified requestsrequests with attributes本地緩存Expired!envoy數據面直接請求原始配置mi
9、xer周期推送配置策略檢查邏輯移入數據面解決方案解決方案Config Serviceredismixermixer.filteradapter/rule/handlerappverified requests統計上報策略檢查配置同步本地緩存requests with attributesfetchreportcheck配額推送模式配額推送模式envoymixerreportquotas時間周期請求配額 本地剩余分配上報/推送模式分配結果周期111011/0OPENPASS1911/0OPENPASS.1.OPEN.1311/10OPENPASS11211/0OPENPASS周期周期211011/0OPENPASS11011/0OPENPASS目錄騰訊云實踐ServiceMesh的背景騰訊云ServiceMesh的演進及落地實踐展望總結未來要解決的問題配置全量下發流量接管時延自定義協議。展望未來展望未來總結演進騰訊名字服務騰訊微服務平臺價值低侵入、服務治理、標準規范、社區活躍生產實踐異構計算平臺權重路由優化mixer-check下層數據面演示FrontendUser-v5User-v6PromotionShopapi-version:v5api-version:v6https:/