《微服務x容器開源開發者MeetupPPT合輯(208頁).pdf》由會員分享,可在線閱讀,更多相關《微服務x容器開源開發者MeetupPPT合輯(208頁).pdf(208頁珍藏版)》請在三個皮匠報告上搜索。
1、0102微服務發展趨勢下一代微服務架構 2020-2027,全球微服務云服務市場 CAGR 18.6%,其中國內市場 CAGR 18.2%(數據來源:Research And Markets)。2022 Gartner應用架構與集成技術成熟度曲線:API管理處于穩步爬升中期,微服務接近穩步爬升初期,有較大增長空間。2022 CSDN 開發者調查報告:58%用戶關注微服務架構、API管理及服務治理,關注度高。2020年,37%Ingress 實現選擇 Envoy(比 2019 年增加了 116%),Envoy 社區推出 Gateway 開源產品(CNCF)。微服務架構API管理分布式數據庫Dev
2、Ops容器調度平臺服務觀測性混沌工程流式計算來源:CSDN 2021-2022 中國開發者調查報告40%15%14%10%8%4%3%3%3%微服務行業趨勢微服務技術趨勢(DevOps-DevSecOps)RPC&注冊中心進入成熟階段,服務網格回歸理性,網關作為安全的入口蓬勃發展引自:https:/cf.io/Dev效率性能可用安全2011Dubbo2014Spring-Cloud-NetflixEurekaHystrixRibbonZuul2015Service MeshLinkerdLinkerdEnvoyIstio2018Netflix進入維護模式Sping-Cloud-AlibabaN
3、acosSentinelSeata2022HigressOpenSerGoDubbo 3.0Nacos 3.0?微服務發展歷程微服務發展歷程0102微服務發展趨勢下一代微服務架構D Dubbo/S Spring-Cloud-Alibaba/Envoy服務框架+服務網格Higress網關OpensergoIstio控制面易用、標準化、語言無關、可擴展、可持續的架構SentinelSeata服務治理擴展性WASM/LUANacos/Nacos-PilotXDSXDSXDSConsole(Higress/Nacos/Sentinel/Dubbo-admin)下一代微服務架構下一代微服務架構控制面(流
4、量治理控制面(流量治理-服務治理)服務治理)微服務多語言微服務多語言(Lib(Lib&Sidecar)Sidecar)跨語言微服務生態多語言客戶端生態微服務最佳實踐微服務擴展性微服務擴展性(WASM)(WASM)插件市場控制面Sidecar網關數據面饒子昊(鋮樸)010203背景介紹靜態編譯與GraalVM效果演示03社區規劃在正式靜態編譯技術之前,首先簡單回顧一下一個Java應用程序從開發、打包、編譯執行的過程:Java源代碼Java字節碼.class.javajavac編譯運行JVM操作系統Java編譯執行過程一個Java程序的執行生命周期如下圖所示,分為JVM初始化、應用程序初始化、應用
5、預熱、應用穩定執行和關閉5個部分:Java應用生命周期圖片來自:https:/ imageJVM操作系統圖片來自:GraalVM靜態編譯原理與應用、https:/ JIT Compiler。靜態編譯框架和運行時由Substrate VM子項目實現,兼容OpenJDK運行時實現,提供了原生鏡像程序運行時的異常處理、同步調度、線程管理、內存管理等功能。圖片來自:https:/ Cloud Alibaba組件的GraalVM靜態編譯能力適配。其中基于GraalVM技術的最新版本Spring Cloud Alibaba應用使用Nacos進行服務注冊與消費/配置訂閱的啟動速度提升了近10倍、內存占用率降
6、低為原來1/3。NacosRocketMQSentinelSeata應用類型服務注冊服務消費監聽配置消息發送消息消費客戶端限流 客戶端降級Seata客戶端啟動速度(GraalVM)0.339s0.479s0.182s0.236s0.348s0.534s0.521s2.999s啟動速度(JVM)4.161s4.763s2.529s3.138s4.3923.065s3.485s8.611s內存占用(GraalVM)57.9M59.0M50.1M91.0M68.2M61.0M60.7M112.4M內存占用(JVM)141.4M129.8M122.7M217.5M181.8M152.1M151.4M2
7、63.6M上述測試代碼樣例來自Spring Cloud Alibaba項目中的examples模塊,4c16g Mac環境,每組數據測試3次取平均,具體數據因機器不同可能會有差異。010203背景介紹靜態編譯與GraalVM效果演示03社區規劃遠程調用負載均衡服務注冊與發現分布式配置微服務高可用限流分布式一致性微服務治理微服務基礎能力統一控制平面微服務進階能力熔斷降級集群流控分布式消息分布式事務標簽路由微服務安全全鏈路流控離群實例摘除多活容災發展中穩定態.歡迎大家一起加入Spring Cloud Alibaba社區,一起打造云原生場景下更好用的微服務技術:0102Dubbo 與 gRPC使用
8、gRPC 開發微服務03Dubbo 讓 gRPC 微服務開發更簡單04總結與規劃01Dubbo 與 gRPC主流“RPC”框架開源組織開源組織語言語言序列化序列化協議協議擴展能力擴展能力生態豐富度生態豐富度上手難度上手難度服務治理服務治理DubboAlibabaApacheJava 跨平臺Hessian、protobuf、jsonDubbo、gRPC、rest高高(低)中支持gRPCGoogleCNCF跨平臺protobufgRPC中高中(高)不支持ThriftFacebookApache跨平臺thirftthirft低低中支持Motan微博JavaHessian、JsonMotan、tcp中
9、低低支持*SpringCloudSpringJavaJsonrest高高低支持gRPC 簡介:gRPC 是什么?gRPC-ServergRPC-ServergRPC-ServergRPC-GatewayAPIClientRestRest apiapi(JSON(JSON OverOver HTTP/1.1)HTTP/1.1)gRPC 簡介:提供了哪些能力1.HTTP/22.雙向通信3.Protocol Buffers4.強類型5.多語言 SDK1.高性能2.跨平臺、跨語言3.易于使用4.穿透性強5.可擴性6.生態豐富Dubbo 簡介:Dubbo 是什么?RPCWEB服務發現流量管控可觀測認證鑒
10、權豐富生態全鏈路追蹤Dubbo 簡介:基本架構Dubbo 數據面Dubbo Admin 抽象控制面Dubbo 數據面RPC ProtocolDubboConsumerDubboProvider服務發現、流量管控等治理數據流ZookeeperNacosConsoleKubernetesIstioDubbo 簡介:與應用開發框架集成Z業務邏輯服務定義IDLInterface編程模型同步異步服務發現NacosZookeeper負載均衡隨機一致性hash流量管控路由動態配置上下文Dubbo 簡介:靈活的協議選擇DubboProviderDubboConsumerHTTP/2Dubbo2gRPCREST
11、Dubbo 簡介:合理的抽象和可擴展性流量管控協議與編碼TriplegRPCRESTPBHessianFastjsonHashWRRRTagScriptConditionTimeoutLogMetricsFailoverFailfastFailsafeNacosZKConsul服務治理NacosZKApolloNacosZKRedisLog4jSlf4jLogback診斷調優LiveStartReadyLog4jSlf4jLogbackLsOnlineOfflineDubbo 簡介:豐富的生態定位不同定位不同gRPC:限定協議與框架Dubbo:提供內置協議,同時提供微服務抽象與治理能力解決問題
12、不同解決問題不同gRPC:解決服務之間通信問題Dubbo:解決微服務全流程(服務定義、開發、通信、治理)中的各種問題gRPCgRPC 是一款是一款 RPCRPC 協議與實現,而協議與實現,而 DubboDubbo 是一款微服務開發框架。是一款微服務開發框架。gRPCgRPC 是是 DubboDubbo 內置內置原生支持的一種通信協議。原生支持的一種通信協議。02使用 gRPC 開發微服務gRPC 的開發模式定義定義IDL(.proto)IDL(.proto)生成生成 stubstubJavaGoRustpluginsprotocgRPCStubgRPCStubgRPCgRPC-ClientCl
13、ientgRPCgRPC-ServerServerProtoProto datadata一些代碼示例IDL 服務發布管理無與業務應用框架集成無成體系的編程配置模式112323直接使用 gRPC 框架開發微服務-服務治理協議與數據傳輸只是構建微服務的基礎,我們還需要服務發現、配置管理、可觀測性等一系列治理能力。C ontainerO bservability進程S ervice AS erviceDiscoveryC onfigurationManagementF rameworkIntegrationData E xchangeapp logicC ontainer進程S ervice AO
14、bservabilityS erviceDiscoveryC onfigurationManagementF rameworkIntegrationData E xchangeapp logicgR P C直接使用 gRPC 框架開發微服務-更多要解決的問題1.1.與更多微服務生態組件的整合與適配與更多微服務生態組件的整合與適配2.2.集群調用的可視化監測集群調用的可視化監測3.3.內置流量管控策略支持內置流量管控策略支持4.4.面向微服務實踐的更多抽象面向微服務實踐的更多抽象多注冊中心支持多注冊中心支持多協議支持多協議支持其他其他讓 gRPC 微服務開發規?;茝V的解決方案公司內部定制開發公
15、司內部定制開發部分社區生態解決方案部分社區生態解決方案服務網格服務網格更好的選擇:更好的選擇:Dubbo Dubbo 是另一個輕量級、一站式解決方案是另一個輕量級、一站式解決方案03Dubbo 框架下的 gRPC 微服務開發Dubbo3 中的 HTTP/2 協議實現SPEC 與實現上完全兼容 gRPC,同時提供了更高性能、更靈活的實現Dubbo3 中的 HTTP/2 協議實現重載方法重載方法PojoPojomethodmethod自定義異自定義異常常attachmenattachment tUpperUpper-CaseCaseheaderheaderstreamstreamBackBack-
16、pressurepressureDubboHTTP/2支持支持支持支持支持支持支持gRPC不支持不支持不支持支持不支持支持支持請求頭:請求頭:響應頭響應頭(trailer)(trailer):tritri-serviceservice-version:version:dubbo 應用版本號tritri-serviceservice-groupgroup:dubbo 應用 grouptritri-reqreq-idid:請求idtritri-tracetrace-traceidtraceid:trace idtritri-tracetrace-rpcidrpcid:span idtritri-t
17、racetrace-protoproto-binbin:trace上下文二進制信息tritri-unitunit-infoinfo:集群信息grpcgrpc-statusstatus:grpc 狀態碼,與 grpc 兼容grpcgrpc-messagemessage:報錯信息tracetrace-protoproto-binbin:trace 二進制信息DubboDubbo 微服務開發微服務開發 編碼與定義編碼與定義添加依賴添加依賴和編譯插件和編譯插件通過注解引用服務通過注解引用服務通過注解發布服務通過注解發布服務定義定義IDLIDLDubboDubbo 微服務開發微服務開發 配置配置 gRP
18、C 協議協議DubboDubbo ClientClientgRPCStubDubboDubbo ServerServergRPCStubgRPCgRPCDubboDubbo 微服務開發微服務開發 原生服務發現能力原生服務發現能力DubboDubbo ClientClientgRPCStubDubboDubbo ServerServerDubboDubbo ServerServergRPCStubgRPCgRPCDubboDubbo 微服務開發微服務開發 可視化集群狀態管控可視化集群狀態管控Comment實例 1實例 2FrontendOrder實例 1實例 2用戶瀏覽器網關tag=grayDe
19、tail實例 1實例 2tag=graytag=graytag=gray實例 1Usertag=gray實例 2實例 3實例 3實例 3實例env=gray實例env=gray實例env=gray實例env=graytag=gray58DubboDubbo 微服務開發 便捷的服務治理04總結與規劃總結gRPC 是一個優秀的 RPC 協議和框架,得到了云原生時代的肯定。gRPC 專注在協議與框架,gRPC 官方未提供圍繞微服務體系的解決方案除 IDL 之外,企業內大規模推廣 gRPC 微服務需要有統一的編程與治理模型Dubbo 是阿里等企業微服務整體解決方案的輸出Dubbo 提供了靈活的開發模式
20、和強大的服務治理能力Dubbo 不綁定通信協議,支持內置、gRPC 等,同時支持多協議發布使用 Dubbo 開發 gRPC 協議通信的微服務可以同時享受到 gRPC 優勢的同時避免當前所存在的不足使用Dubbo作微服務治理總體解決方案+底層一鍵配置 gRPC 協議通信Dubbo 的未來規劃易用性提高IDL 管控平臺可觀測性增強Dubbo Mesh官方微信公眾號官方微信公眾號用戶交流群用戶交流群注注:如失效可如失效可通過公眾號回復“加群”0102云原生網關的技術演進脈絡云原生網關在阿里的誕生過程03Higress 的關鍵特性和優勢網關軟件的演進:流量網關WhoWho運維WhyWhy業務的高可用/
21、可伸縮/接入加速HowHow負載均衡/健康檢查/流控/重試/TLS卸載/壓縮/緩存網關軟件的演進:微服務網關WhoWho研發WhyWhy微服務 API 的聚合管理/API 通用能力解耦HowHow服務發現/RESTful 路由/認證鑒權/擴展機制網關軟件的演進:云原生網關WhoWho研發&運維WhyWhyDevOps 驅動/云原生架構/網關形態融合HowHow聲明式 API/無損變更/多語言擴展機制在阿里的誕生背景:技術選型創建源于2020年阿里內部的“本地生活戰役”,戰役的核心技術目標是實現阿里巴巴業務域與螞蟻業務域之間 RPC 互訪。發展歷程:支撐內部業務Higress 支持東西向、南北向
22、的全域流量調度Higress 在支付寶、釘釘、淘寶、天貓、優酷、飛豬、口碑、達摩院等阿里各業務系統中使用經過雙11海量請求的考驗,大促日可輕松承載每秒承載數10萬筆請求,日請求量達到百億級別發展歷程:沉淀云產品在與優酷合作時,雙方同時提出將 Tengine(流量網關)和Higress(微服務網關)合并的想法由于K8s 集群內外網絡的天然隔離性,云上用戶需要一款兼顧高性能,安全性,以及服務治理能力的 Ingress 網關2021 年,阿里巴巴開啟了中間件“三位一體”戰役,目標是使用云產品支撐集團業務,Higress 正式沉淀為云產品,同時服務公有云與阿里內部用戶發展歷程:云原生網關開源發展歷程:
23、云原生網關開源http:/demo.higress.ioHigress 云原生網關:API 標準支持 K8s Ingress API 標準,支持 NginxIngress 核心功能注解無縫轉換比 Nginx Ingress 提供更實用的功能注解,如服務級限流,RESTful路由等擁抱 Gateway API 標準,可以實現 IngressAPI 和 Gateway API 混合使用,平滑遷移apiVersionapiVersion:networking.k8s.io/v1:networking.k8s.io/v1kind:Ingresskind:Ingressmetadata:metadata
24、:annotations:annotations:nginx.ingress.kubernetes.ionginx.ingress.kubernetes.io/rewrite/rewrite-target:/target:/higress.iohigress.io/match/match-method:POST PUT PATCHmethod:POST PUT PATCHname:fooname:foospec:spec:ingressClassNameingressClassName:higresshigressrules:rules:-http:http:paths:paths:-path
25、TypepathType:Prefix:Prefixpath:/foopath:/foobackend:backend:service:service:name:fooname:foo-serviceserviceport:port:number:5678number:5678Higress 云原生網關:異構架構下服務發現和路由apiVersionapiVersion:networking.higress.ionetworking.higress.io/v1/v1kind:kind:McpBridgeMcpBridgemetadata:metadata:name:defaultname:def
26、aultspec:spec:registries:registries:-domain:192.168.domain:192.168.1 1.2 2nacosGroupsnacosGroups:-DEFAULT_GROUPDEFAULT_GROUPnacosNamespaceIdnacosNamespaceId:d8ac64f3:d8ac64f3-37f937f9-48574857-a1a9a1a9-47a814ecf35847a814ecf358port:8848port:8848type:nacos2type:nacos2同時支持 K8s Service/Nacos/ZooKeeper 等
27、多種服務發現機制同時兼容 Nacos 1.x/2.x 訂閱協議,經過大規模生產實踐驗證配合 Ingress 流量灰度能力,支撐微服務架構向云原生化平滑演進Higress 云原生網關:流量無損的變更Higress 云原生網關:流量無損的變更Higress 云原生網關:多語言擴展機制Sentinel Maintainer010203Sentinel 演進與發展Sentinel 2.0 服務治理能力演進OpenSergo 服務治理實踐Sentinel 演進歷程2012-201720182019202020212022-2023Sentinel Sentinel 在阿里巴巴在阿里巴巴集團內部迅速發展,
28、集團內部迅速發展,成為基礎技術模塊,成為基礎技術模塊,覆蓋了所有的流量穩覆蓋了所有的流量穩定性核心場景定性核心場景Sentinel Sentinel 正式正式開開源,社區迅速發源,社區迅速發展,不斷擴充生態展,不斷擴充生態與能力,逐步成為與能力,逐步成為最受歡迎的同類組最受歡迎的同類組件件SentinelSentinel 開始在多語開始在多語言的生態中探索,推出言的生態中探索,推出C+C+原生版本,同時針原生版本,同時針對對 Service Mesh Service Mesh 場景場景也推出了也推出了 EnvoyEnvoy 全局全局流控的支持流控的支持SentinelSentinel 推出推出
29、 GoGo 原生原生版本,并不斷與版本,并不斷與Dubbo/Dubbo/DaprDapr/MOSN/MOSN/斗魚等斗魚等社區進行合作,繼續朝著社區進行合作,繼續朝著云原生方向演進云原生方向演進SentinelSentinel 推出推出RustRust 原生版本,并原生版本,并基于此對基于此對 EnvoyEnvoy 集集成及成及 eBPFeBPF 層流控層流控的探索的探索?微服務治理重要性ConsumerProviderContainerGovernanceRegistryregisterregisterinvokeinvokegoverngoverngoverngovernsubscribe
30、subscribenotifynotifystartstart微服務四大件微服務四大件-提供者、消費者、注冊中心、治理。提供者、消費者、注冊中心、治理。核心作用核心作用:治理微服務領域中的各個組件治理微服務領域中的各個組件微服務治理提升微服務的:穩定性與效率Sentinel 品牌升級1.0:1.0:流量防護流量防護標準化云原生多語言全方位生態能力升級Sentinel 2.0:服務治理的標準實現原生對接 OpenSergo 流量治理標準云原生架構升級:local brain(SDK,Mesh)+micro brain(控制平面)針對微服務、云原生體系,全方位覆蓋多語言異構化框架與組件生態能力升級
31、為流量治理與服務自愈,全方位保障服務穩定性與容錯Sentinel 2.0 演進Sentinel 2.0 Overview服務隔離統一控制面(決策與治理中心)規則存儲指標監控流量治理能力的標準實現API 模型標準化(nouveau model)規則配置標準化(OpenSergo 數據源)策略服務接口標準化(gRPC service)標準化流量治理與自愈WeightCalculator權重計算Router流量路由LoadBalancer負載均衡TrafficScheduler流量調度TrafficShapingController流量控制AdaptiveThrottler自適應流控策略Circui
32、tBreaker不穩定服務熔斷基礎指標統計指標統計擴展控制策略擴展調度策略擴展規則數據源擴展擴展機制自適應流控異常流量調度服務防抖流量路由流量染色流量控制服務熔斷治理規則管理標準化(OpenSergo)全局指標匯聚與計算治理策略服務標準化(gRPC)治理策略預計算全局治理策略控制(如集群流控、全局維度的權重策略調整)Sentinel 2.0 流量治理OpenSergo 服務治理標準化規范/控制面實現/數據面OpenSergo 流量路由CRD推送按照制定的按照制定的headerheader進行流量路由進行流量路由基于基于IstioIstio VirtualServiceVirtualServic
33、e/DestinationRuleDestinationRule進行擴展進行擴展Sentinel 2.0&Dubbo TrafficRouting2023.022023.032023.06控制面與 Spec社區合作統一治理控制面全面升級,支持 Istio 服務網格Spec 支持全鏈路灰度各個微服務治理領域的生態落地,統一控制面、SpecSpec 共建控制面初步生產可用Spec 支持無損上下線、離群實例摘除控制面正式 GA 并提供dashboard支持微服務安全治理治理實現+Sentinel 2.0 流量治理能力 beta,支持流量路由、全鏈路灰度離群實例摘除能力落地Sentinel Go 2.
34、0 發布升級Envoy/eBPF+Sentinel 2.0 集成無損上下線能力落地Sentinel 2.0 流量治理品牌升級正式發布Sentinel 2.0&OpenSergo RoadmapSeataSeata:Connect Data&ApplicationsConnect Data&Applications為什么加入我們?阿里最核心的技術部門之一阿里業務增長最快的部門之一阿里技術影響力最大的部門之一招聘郵箱jimin.jmalibaba-分布式事務 Seata配置與服務管理 Nacos微服務框架 Dubbo SCA下一代網關 HigressService Mesh分布式消息隊列 Rock
35、etMQ分布式鏈路追蹤分布式應用托管 KubeVela云原生SRE服務治理Sentinel OpensergoServerless誠聘從TXC/GTS 到SeataSeata 社區最新進展Seata 社區未來規劃TXC/GTSTXC/GTS PaaS 中間件集成層數據中間件,與 HSF、TDDL、MetaQ深度集成,在集團內廣泛應用 日均百億級別調用,標準3節點集群吞吐達近10w TPS 可用性/性能SLA 99.99%,毫秒級事務處理,全年無故障開發視角的應用架構DB一致性一致性通用性通用性復雜性復雜性接入成本接入成本應用框架低低低高數據中間件中高中低數據庫高中高中TXC/GTSTXC/GT
36、STCCTCC SagaSagaATAT XAXAi id dmoneymoney11000-100ididmoneymoney21000+100服務A Aconsumer服務BproviderproviderDBDBRPC/restRPC/restTransaction ManagerTransactionCoordinatorResourceManagers(RM)ResourceManagers(RM)ResourceManagertimeoutTXC/GTSTXC/GTSTXC/GTSTXC/GTS阿里微服務開源最佳實踐阿里微服務開源最佳實踐Seata 對于市面上主流的關系數據庫,RP
37、C框架做了廣泛的支持,同時被許多第三方社區做了主動和被動集成。支持 Java、Golang、PHP、Python 多語言.目前 Seata 開源產品已被上千家企業在業務系統中應用,金融企業紛紛試點。SkywalkingSkywalkingShardingsphereShardingsphereMybatisMybatis-PlusPlusSpring Cloud AlibabaSpring Cloud AlibabaDubboDubboNacosNacosE Eururekeka aMySQLMySQLOracleOraclePostgreSQLPostgreSQLTiDBTiDBApollo
38、ApolloJRaftJRaftRedisRedisETCDETCDgRPCgRPCMotanMotansofasofaConsulConsulzookeeperzookeeperOceanOceanBaseBaseSEATA SEATA :Simple Extensible Autonomous Transaction ArchitectureSimple Extensible Autonomous Transaction Architecture一款開源的分布式事務解決方案,致力于在微服務架構下提供高性能和一款開源的分布式事務解決方案,致力于在微服務架構下提供高性能和簡單易用的分布式事務服
39、務。易用的分布式事務服務。SeataSeata 社區社區SeataSeata的生態的生態場景1:中航信航旅縱橫項目中航信作為 Seata 最早的天使用戶,在 Seata 0.2 版本就將 Seata 引入了航旅縱橫項目的核心業務中,例如解決機票和優惠券業務的數據一致性問題。大幅度提升了開發的效率,減少了數據不一致造成的資損,提升了前端用戶的體驗。場景2:滴滴出行二輪車事業部滴滴在 Seata 0.6.1 版本就將 Seata 引入到了二輪車事業部的各個業務中,用于解決小藍單車、電動車、資產等業務流程的數據一致性問題,解決了數據不一致造成的長期困擾,減少了內部資產的資損,優化了外部用戶的使用體驗
40、。場景3:美團基礎架構美團基礎架構團隊基于開源 Seata 項目封裝了內部分布式事務 Swan 項目,作為美團內部各業務解決分布式事務問題的組件。場景4:盒馬小鎮盒馬小鎮游戲互動中通過 Seata 控制偷花的流程,開發周期從 20d 下降至 5d,大幅度減少了開發的成本。SeataSeata 案例案例TCCATTCCATSagaTCCATSagaXAAT0.1v0.4v0.1v0.9v1.1SeataSeata的演進的演進性能TCCTCCSeataSeata分布式事務隔離性業務改造成本SeataSeata 最新進展最新進展 支持oracle和postgresql 多主鍵。支持 Dubbo 3
41、和 Spring Boot 3 支持 JDK 17 支持 ARM64 鏡像 支持多注冊模型 擴展了多種SQL語法的支持 支持 native-image 支持 redis lua 存儲模式DBDBRedisRedisRaftRaftmysqlmysqloracleoraclepgsqlpgsqltidbtidbOBOBSSSSRPCRPCDubboDubbogRPCgRPCsofasofaSpringSpringhttphttpmotanmotanMQMQRocketMQRocketMQJMSJMSXAXAmockmock serverservertestContainertestContain
42、ernacosnacossofasofazkzketcdetcdserviceCombserviceCombpolarispolarisapolloapolloconsulconsuleurekaeurekaGTSGTSJavaJavaJDKJDKspringspringgolanggolangphpphppythonpythonjsjsdaprdaprAPIAPISeata 2.x存儲/協議/特性第三方生態解決方案多語言生態研發效能/用戶體驗APMAPMskywalkingskywalkingprometheusprometheusLTSLTSSQLSQLSagaSaganamesrvnam
43、esrvSeataSeata 2.x2.x 規劃規劃SeataSeata 官微官微01項目背景02架構與功能03社區介紹04功能演示項目背景1距離產生了美,也產生了延時和費用多個應用共享同一個分布式存儲的訪問網絡帶寬計算彈性無限,數據彈性不足KubernetesDevOpsMicro Service/Service MeshEnterprise ApplicationsInnovationGitlabJenkinsGitOpsEDASIJEEAIBlockchainIoTC+Spring CloudServerless ApplicationGeneAI AppsBig Data Apps數據
44、密集型應用對存儲訪問性能提出高要求零節點,免運維按使用量計費,Pay for Application rather than infrastructure秒級彈性擴容,無限容量強隔離,高安全標準化Kubernetes接口Container Scheduling and OrchestrationContainer Scheduling and Orchestration統一集群管理(集群控制面)PODPOD自建K8S客戶IDC自建高性能存儲POD高速通道專線ACK容器集群裸金屬PODECIPODECSPOD公共云即開即用的容器彈性能力可以很好做自建IDC的彈性能力補充。但是如何將自建存儲與云上
45、彈性資源對接,則變成混合云客戶使用阿里云的門檻。阿里云彈性擴縮容架構與功能2面向應用的數據抽象:零侵入,無需關心應用改造,數據版本,加速,安全等工作??蓴U展的數據引擎插件:支持可編程和無代碼的擴展能力。通用數據加速:將數據分布式緩存技術與自動彈性(Autoscaling),可遷移(Portability),可觀測(Observability),親和性調度(Scheduling)能力相結合,提供更好的加速能力混合云數據訪問:支持無縫對接用戶自建存儲。運行時平臺無關:可以支持原生、邊緣、Serverless K8s集群等多樣化環境。對云原生”計算任務使用數據的過程”抽象,提出了彈性數據集Datas
46、et的概念,并圍繞其構建面向混合云和Serverless場景數據編排系統。AccessAccelerateDay-2 Orchestration and ManagementDatasetKubernetesServerless KubernetesIoT/Edge.FluidAbstractOrchestrateAccelerateManageRuntime PluginsGPluggable數據集抽象apiVersion:data.fluid.io/v1alpha1kind:Datasetmetadata:name:imagenetspec:mounts:-mountPoint:s3:/i
47、magenet/trainname:train-mountPoint:pvc:/cephname:validationnodeAffinity:required:-nodeSelectorTerms:-matchExpressions:-key:GPUoperator:In values:-truefeatures:filesSize:smalls3cephIn GPU nodes 統一的頂層統一的頂層數據集數據集模型模型描述描述Optimization可擴展的數據引擎插件Runtime抽象DatasetRuntimeRuntime PluginsG.cacheRuntimethinRunti
48、meData OperationRuntimeProfilePodPodEnd UserJindoJindoAlluxioAlluxioJuicefsJuicefsGoosefsGoosefsThinThin:ossfsossfs-profileprofileDataset/ThinRuntimeDataset/ThinRuntimeCluster AdminStorageStorage ProvidersProvidersDocker Image通用FUSE接口訪問異構存儲apiVersion:v1kind:Podmetadata:name:resnet50labels:fluid.io/d
49、ataset.preferred.sched:imagenetspec:containers:-name:trainimage:resnet50volumeMounts:-mountPath:/dataname:imagenetvolumes:-name:imagenetpersistentVolumeClaim:claimName:imagenetclientKubernetesSchedulerFluid SchedulerPluginFluid RuntimeJindoFSJindoFSN1N2N310G Cached5G CachedPod1.Create Pod 2.Order th
50、e nodes by the cache capabilities 3.Start pod in N1Dataset NameP1P2緩存數據位置感知調度調度策略支持強制和非強制兩種模式調度策略支持強制和非強制兩種模式非強制模式下,數據緩存條件不滿足的情況下,不影響非強制模式下,數據緩存條件不滿足的情況下,不影響PodPod調度調度調度策略優先本地,優先同可用區調度策略優先本地,優先同可用區P3,非強制模式可選vSwitch可用區1vSwitch可用區2手動彈性伸縮手動彈性伸縮根據指標自動彈性伸縮根據指標自動彈性伸縮定時彈性伸縮定時彈性伸縮 豐富實用的豐富實用的彈性彈性策略策略緩存數據彈性伸縮
51、緩存數據彈性伸縮Serverless模式J數據接口注入、緩存彈性控制、應用生命周期管理支持所有緩存組件運行在支持所有緩存組件運行在ECIECI上上支持支持ECIECI的本地盤和內存緩存的本地盤和內存緩存彈性伸縮分布式緩存彈性伸縮分布式緩存功能演示3K ube api serverE C IP odE C IP odE C IP odE C IP od并行啟動200個ECI彈性容器實例 Pod,每個ECI Pod讀取存儲在JuiceFS中的一個約10GB的文件。模擬AI推理場景下彈性擴容時機器學習模型的從JuiceFS加載過程比較通過Fluid訪問JuiceFS和通過Fluid加速JuiceFS
52、兩種方案:(1)數據讀取性能差異(2)資源成本差異K ube api serverE C IP odE C IP odE C IP odE C IP odF luid C ache L ayer進行數據預熱;并行啟動200個ECI彈性容器實例 Pod,每個ECI Pod從分布式緩存中讀取存儲在JuiceFS中的一個約10GB的文件。模擬AI推理場景下彈性擴容時機器學習模型的加載過程比較通過Fluid訪問JuiceFS和通過Fluid加速JuiceFS兩種方案:(1)數據讀取性能差異(2)資源成本差異10個ECI彈性容器實例(規格:vCPUs 24/Mem 96.0GiB)200個ECI彈性容器
53、實例(規格:vCPUs 4/Mem 8.0GiB)社區發展4系統開源情況 82,000 lines of code,written in Go and yaml.1359 commits,1309 PRs,656 Github topic discussion 1100+Github標星關注,393 forks,8 releases since Aug.2020 https:/ 技術委員會:Currently 5 maintainers 貢獻者分布:近300位 contributors 來自:微服務x容器開源MeetupTHANKS微服務x容器開源MeetupOCM:定制你自己的k8s多集群管
54、理工具箱邱見Senior Principal Software Engineer RedHat2023/2/25CNCF X 阿里巴巴KubeMeet微服務x容器開源MeetupMotivationC NC F 2021 調查報告調查報告顯示大多數公司使用2-10個集群,同時使用的集群數量有增長的趨勢。CNCF X 阿里巴巴KubeMeet微服務x容器開源MeetupMotivationsC NC F 2021 調查報告使用namespace來隔離各個團隊的使用是最流行的,其次是給每個團隊分配單獨的集群。CNCF X 阿里巴巴KubeMeet微服務x容器開源Meetup管理多個k8s集群需要m
55、onitoringDeploy applicationsNetworking accessNetworking accessService meshConfig managementCluster inventoryschedulingManifest distributionTools managementThis is where ocm sitsCNCF X 阿里巴巴KubeMeet微服務x容器開源Meetup什么是O pen C luster Management0.10.0 is released on 17th F eb.!簡化混合云環境下多k8s集群的管理-Hub-spoke 架
56、構-基礎的集群注冊,調度和資源分發AP I-核心組件和一組任意搭配的管理插件-插件的生命周期管理,跨集群通訊-一套集成庫使管理工具更方便跑在多集群環境中https:/open-cluster-management.io/CNCF X 阿里巴巴KubeMeet微服務x容器開源MeetupIstio addonhttps:/ X 阿里巴巴KubeMeet微服務x容器開源Meetup為Argo CD提供集群注冊和調度能力CNCF X 阿里巴巴KubeMeet微服務x容器開源MeetupDemoCNCF X 阿里巴巴KubeMeet微服務x容器開源MeetupO ngoing work更好的插件管理插
57、件滾動升級和金絲雀發布更簡單的插件開發方式多集群調度親和和反親和,靈活的負載分布策略第三方服務提供打分機制的通用機制更多插件,更多集成Argocd Pull modelArgo workflowKnativeOLMCNCF X 阿里巴巴KubeMeet微服務x容器開源MeetupG et InvolvedGitHubhttps:/ meetings https:/ management,Scheduling,Automated operation,etc.koordinator.shkoordinator.shKubernetes任務調度PodPodPodQoS 感知調度/重調度差異化SLO策
58、略PodPodPodPod裸金屬實例PodPodPodPodPodPodPodPod虛擬機實例工作負載統一編排、混部多樣化工作負載010203Kubernetes 應用觀測的特點和痛點Kubernetes 應用觀測實踐方案目前社區前沿技術方向Gartner“Top Strategic Technology Trends 2023”在業務功能、應用程序、基礎設施和運營(I&O)團隊之間以高度編排和集成的方法應用可觀察數據,以實現從行動到反應的最短延遲和業務決策的主動規劃。軟件系統可被觀測的一種屬性軟件系統可被觀測的一種屬性結果結果:吞吐率,響應時間,成功率(黃金三指標)過程過程:日志、指標、事件
59、、環境、鏈路周邊周邊:服務配置,資源配置,拓撲架構體系體系:上下游,業務設置洞察故障洞察故障分析性能分析性能更快決策更快決策與監控概念的差異與監控概念的差異WordPress ChartWordPress Chart1.1.分散的監控數據處理鏈路分散的監控數據處理鏈路(狀態,日志,指標,追蹤狀態,日志,指標,追蹤);2.2.從基礎設施到業務應用的全鏈路關聯;從基礎設施到業務應用的全鏈路關聯;3.3.不同開發語言的復雜生態;不同開發語言的復雜生態;4.4.如何支撐業務開發者更輕松的決策;如何支撐業務開發者更輕松的決策;O Observability Pipelinebservability Pi
60、pelineAgentAgentCollectLogs/Metrics/TracesLogs/Metrics/TracesTransformGatewayGatewayAggregationRewriteETL ToolsETL ToolsStore&AnalyzeStore&AnalyzeStoreData warehouseData warehouseAnalyzeAnalyzeReportReportViewDashboardDashboardAlert全棧聲明式可觀測管理全棧聲明式可觀測管理ETL ToolsETL ToolsKubeVela 項目實踐基于基于 eBPF eBPF 無侵
61、入的觀測,語言無關的無侵入的觀測,語言無關的 Tracing&ProfilingTracing&Profiling交互式大盤設計,聚合交互式大盤設計,聚合 Events,Metrics,StatusEvents,Metrics,Status,融合,融合 Kubernetes Kubernetes 管理經驗管理經驗One Service for All MetricsOne Service for All Metrics統一可視化技術棧,以統一可視化技術棧,以 Grafana Grafana 為可視化的核心(數據聚合)。為可視化的核心(數據聚合)。ECSECS、云服務中間件、云服務中間件、Kub
62、ernetes Kubernetes 工作負載,工作負載,APM APM 觀測數據統一集成。觀測數據統一集成。圍繞著圍繞著 Kubernetes Kubernetes 應用觀測特點,沉淀應用觀測特點,沉淀 Kubernetes Kubernetes 的故障排查經驗構造交互式可視化平臺。的故障排查經驗構造交互式可視化平臺。Kubernetes 命名空間洞察大盤,直觀發現故障Kubernetes 資源基礎洞察交互Deployment 等觀測大盤-整合Metric Events Metadata和Logs010203什么是OpenKruise?OpenKruise是如何提升Pod生命周期管理能力?社
63、區發展與規劃01https:/ https:/ 基于基于 KubernetesKubernetes 的擴展應用管理套的的擴展應用管理套的官方文檔:官方文檔:https:/openkruise.io/zh/docs/任意純凈的任意純凈的 Kubernetes Kubernetes 集群中集群中OpenKruiseOpenKruiseCloneSetAdvancedStatefulSetSidecarSetAdvancedDaemonSetOperation Capabilities餓了么UC神馬電商業務中間件應用Mesh容器運維容器安全容器基礎網絡組件基礎存儲組件容器重啟鏡像預熱數據庫應用容器啟
64、動/退出順序管理OpenKruise 是阿里巴巴應用部署和管理的基座02什么是Pod生命周期管理?PodPod生命周生命周期期AlwaysOnFailureNever容器重啟策略容器重啟策略PostStartPreStop容器容器 LifecycleLifecycleStartup ProbeLiveness ProbeReadiness Probe容器容器 ProbeProbeContainersReadyReadyInitializedPodScheduledPod ConditionPod Condition大規模場景對Pod生命周期管理提出了新的要求控制控制效率效率大規模集群快速部署應
65、用高峰期極致彈性Pod中容器啟動/退出順序Job Sidear容器退出業務發布中流量正常防止容器大規模重啟任何升級都會導致Pod重建不能保證Pod中容器啟動/退出順序Job Sidecar容器無法退出Deployment 發布與 LoadBalancer 無法聯動Liveness Probe 沒有全局控制Pod生命周期管理能力Kubernetes-Pod維度的不可變基礎設施Deployment(nginx)Replicas v1Template:v1Pod:v1Pod:v1Replicas v2Template:v2Pod:v2重建升級Pod重建流程復雜,拉鏡像耗時,無預熱情況下新拉鏡像需要幾
66、分鐘;Pod IP 變化、存儲清空,新起 Pod 應用進程需要重新預熱;Stop容器釋放cni網絡釋放pv/pvcschedulerbinder-nodesandboxPv/cniInitcontainerApp container核心能力1原地升級CloneSet(nginx)Pod-1Sandbox(網絡、存儲)nginx v1nginx v2Pod-2Sandbox(網絡、存儲)nginx v1logtail原地升級原地升級:節省了調度調度的耗時,Pod 的位置、資源都不發生變化節省了分配網絡分配網絡的耗時,Pod 還使用原有的IP節省了分配、掛載遠程分配、掛載遠程盤的耗時,Pod 還使
67、用原有的 PV(且都是已經在 Node 上掛載好的)節省了大部分拉取鏡像大部分拉取鏡像的耗時,因為 Node 上已經存在了應用的舊鏡像,當拉取新版本鏡像時只需要下載少數的幾層 layer原地升級 Pod 中某個容器時,其他容器保保持正常運行持正常運行,網絡、存儲均不受影響容器維度的管控能力增強 獨立升級Sidecar容器webserver1.單獨升級Sidecar容器,并且Pod一直ReadyOpenKruise控制器第一批次第二批次第三批次第N批次日志目錄Logtail v1Logtail v22.分批灰度Sidecar容器Ingress3.升級Sidecar對用戶是無感的核心能力2容器退出
68、順序控制Kubelet并發邏輯執行PreStopStop容器執行PreStopStop容器Main容器Envoy容器Kubelet并發退出Pod中多個容器,Sidecar容器有可能早于Main容器退出,導致服務異常觸發場景(刪除Pod)發布、驅逐、縮容K8S官方方案(Kubelet代碼改動過大,一直擱置)2018年社區有提出相關Proposal,Sidecar先于Main容器啟動,晚于Main容器退出社區常用方案(定制化,不通用)Sidecar 容器配置等待時間 Main容器與Sidecar容器共享目錄,實現退出邏輯社區首個通用容器退出優先級能力Kubelet并發邏輯執行PreStopStop
69、容器Kruise定制腳本Stop容器Main容器Envoy容器Kruise Daemon1.通過CRI探測Main容器是否退出Kruise定制腳本Stop容器LogAgent容器2.探測Main容器退出后,再執行Sidecar退出邏輯容器按照順序退出:Main-LogAgent-Envoy開啟方式:Pod.annotationskruise.io/container-exit-priority=“log-agent”:1,“envoy”:2mainJob類應用Logtail因無法感知到main容器已經退出,導致logtail容器無法退出,進而job應用無法完成logtailmainlogtai
70、lmainlogtail已退出運行中核心能力3Job Sidecar退出能力通用的Job Sidecar退出能力OpenKruise執行PreStopStop容器mainlogtailKruise Daemonmainlogtailmainlogtail1.發現main容器已經退出2.觸發StopSidecar容器命令3.通過CRI停止Sidecar容器Job類應用已退出運行中開啟方式:EnvKRUISE_TERMINATE_SIDECAR_WHEN_JOB_EXIT=True核心能力4增強的Liveness Probe能力KubeletAppRestartingAppRunningLiven
71、ess Probe:FailureLiveness Probe:Success社區原生Liveness Probe不間斷的探測容器健康狀態異常,立即重啟不足:沒有全局視角,極端情況會一次性重啟所有的容器,導致業務異常OpenKruise 提供的全局Liveness Probe能力開啟方式核心能力5Pod Lifecycle(優雅上下線)LoadBalancer 控制器Backend工作負載控制器第一批第二批第N批1.分批發布(正常)2.同步Backend(失?。〣ackend依然記錄的是老的IP地址LoadBabancer同步Backend失敗,并不能阻塞或通知控制器停止發布Pod生命周期Cr
72、eateUpdateDeleteLoadBalancer 控制器Backend3.上下線OpenKruise 控制器1.變更前打標2.監測到變更標,進行上下線操作4.創建/更新/刪除 PodOpenKruise 支持Pod優雅上下線工作負載:CloneSet、Advanced StatefulSet、Advanced DaemonSet PreNormal Updating PreDelete03無侵入的漸進式發布系統Kruise Rollout云原生游戲最佳實踐OpenKruiseGameOperator灰度和隔離系統ControllerMeshhttps:/ Star:3.6kContri
73、butor:120規劃:2022-2023 年 CNCF Sandbox-Incubation雙周周會(周四晚19點30)業界用戶:國內:阿里巴巴、螞蟻、攜程、蘇寧、OPPO、小米、斗魚TV、有贊、Boss直聘、申通、小紅書等 25+登記企業用戶國外:LinkedIn、Lyft、Bringg、Arkane Systems、Spectro Cloud等 5+登記企業用戶010203問題背景KubeVela+kruise rollout 靈活可擴展的發布工作流Demo1.問題背景平臺團隊在實現應用發布會遇到了哪些挑戰平臺團隊在實現應用發布會遇到了哪些挑戰通常用來卡住發布進度的就緒性探針是以 pod
74、為粒度,側重于容器維度的健康檢查。更多時候需要對應用的整體 SLA/SLO 做評估,從而決策是否繼續推進發布。所謂“無人值守”核心是通過自動化的流程化檢查步驟,輔助運維人員來做判斷。就緒性探針應用整體的SLO/SLA平臺團隊在實現應用發布會遇到了哪些挑戰平臺團隊在實現應用發布會遇到了哪些挑戰通過 MaxSurge 和MaxUnavailable 等參數控制工作負載在發布過程中的面相終態的發布形式。nowantcanarycanary-demodemo-v1v1-defaultdefaultstep1step2step3人工審核暫停 1h對應用進行分分批次的漸進式發布平臺團隊在實現應用發布會遇到
75、了哪些挑戰平臺團隊在實現應用發布會遇到了哪些挑戰step1step2step3流量調節副本調節10%請求到新版本運維用戶工作負載 vs 漸進式發布實例升級:升級、回滾分批控制流量調節:新舊版本 Service流量比例/權重控制流程控制:管理 Pod、流量批次進度metrics 指標檢查外置 hook 鉤子人工核驗漸進式發布發布過程中需要做到哪些事情發布過程中需要做到哪些事情2.KubeVela+kruise rollout 靈活可擴展的發布工作流ApplicationApplication ModelModel 應用交付模型應用交付模型描述描述ApplicationThe higher lev
76、el The higher level abstraction to model a abstraction to model a full functional full functional microservice unit.microservice unit.ComponentT The main workload to run such as web services,jobs,databases.TraitOperational Operational auxiliariesauxiliariesthat help the component to work,like scalin
77、g,storage,gateway.VSKubernetesKubernetes 資源示例資源示例應用工作流應用工作流:編排和銜接:編排和銜接 任意任意 交付動作交付動作WorkflowStepDefinitionWorkflowStepDefinition釘釘通知HttphookMetricscheckLogcheckHumanaudit.Kruise Rollout or Argo rollout or FlaggerArgoArgo RolloutRolloutFlaggerFlaggerKruiseKruise rolloutrollout簡介Argo rollout 本質上是一種 工
78、 作 負 載,在 原 生deployment 增加了更加豐富的 rollout strategy旁 路 式 的 作 用 機 制,flagger CR referecne 到一個已經存在的deployment 上面旁 路 式 的 作 用 機 制,flagger CR referecne 到一個已經存在的deployment 上面分批發布支持支持支持流量調節支持istioingrsstraefik支 持istioingresstraefik支 持ingress,以 及gateway API發布過程中metrics 檢查支持 prometheus datdog.支持 prometheus datdo
79、g.不支持發布過程中 HPA支持不支持支持擴展性需要修改代碼需要修改代碼需要修改代碼存量業務遷移通過cli工具基于已有deployment 生成 CR無需遷移無需遷移資源消耗無需 double 資源發 布 中 需 要 基 于 用 戶deployment copy 一個相同deployment,存在 double資源無需 double 資源發布過程中發布通知支持支持不支持KubeVela應用工作流來支撐Rollout operatormanagereplicas/trafficHelm/OAM/Helm/OAM/PaasPaasApiApi-ServerServerControllerContr
80、ollerManagerManagerK8S MasterK8S MasterWorkloadWorkload PausePause minReadySecondminReadySecond StrategyStrategy KruiseKruise RolloutRolloutV1V1V2V2User/ClientUser/ClientIngress/GatewayIngress/GatewayService CanaryService CanaryServiceService1.1.應用發布應用發布3.3.動態調整工動態調整工作負載參數作負載參數外部訪問外部訪問UsersUsersTest
81、erTester20%20%80%80%4.4.控制流量控制流量2.1 2.1 觸發觸發RolloutRollout控控制制DeploymentDeploymentStatefulSetStatefulSetKruiseKruise CloneSetCloneSetOthersOthersKruise Rollout 工作機制2.22.2 PausePause住住WorkloadWorkload滾動升級滾動升級升級20%的實例和10%流量檢查監控指標v1v1v1v1v2v1Rolloutingressserviceservice10%全量升級v1v1ingressservice100%v1RolloutcheckupdateupdateManageReplicas/traffic.Pods ReadySuccessFailAuditsuspendhook應用灰度發布工作流3.DemoDemo1.Addon 插件體系拉起可觀測性組件+網關+kruise rollout trait2.應用升級 v2 等待檢查指標五分鐘,成功后全量發布。3.應用繼續升級到錯誤版本 v3,等待檢查指標五分鐘后失敗。