《分布式应用运行时的落地实践_郭智勇.pdf》由会员分享,可在线阅读,更多相关《分布式应用运行时的落地实践_郭智勇.pdf(19页珍藏版)》请在三个皮匠报告上搜索。
1、分布式应用运行时落地实践 郭智勇1 1云平台概述分布式运行时实践分享 展望目目 录录CONTENTS2 23 34 40101CHAPTERCHAPTER云平台概述云平台概述 平台概览 技术挑战生态设备智能家电网关设备智能设备智能设备核心服务核心服务业务应用业务应用接入服务安全服务接入服务设备影子规则引擎物模型消息分发任务调度设备控制Serverless设备升级接入路由设备事件实时计算数据存储监控报表用户设备管理内容实时消息推送国内美居国际美居开放平台业务国际东芝美居MSmart lifeToshibaHA智能音箱平台概览432615技术链路长海量的连接部署多样性多样的连接终端碎片化巨量的数据
2、技术挑战欢迎加入0202CHAPTERCHAPTER分布式运行时分布式运行时 现实问题 多运行时 dapr现实问题服务代码中引入越来越多的SDK,有一些与云厂商强相关,不同的云厂商提供的SDK不一样,多云部署时需要调整代码(例如:KMS服务)服务开发使用的语言各不相同,有java、c+、python、go,一些公共的库需要编写多种版本,升级维护需要投入不少人力技术链路长,关联的部门多,联调、测试、压测大家都需要有一个稳定的环境互不干扰服务的治理,服务间的限流、降级、熔断;服务与外部的交互;整个调用链路的追踪,出现问题时如何快速定位多运行时多运行时架构:Multi-Runtime Microse
3、rvices Architecture 将各种各样的分布式能力外移到独立 Runtime,最后和应用 Runtime 共同组成微服务,形成所谓的“Multi-Runtime”(多运行时)架构从实际出发,选用Dapr,在此基础上扩展自己的业务组件,满足自身的需求,同时回馈社区业务运行时和技术运行时分离;业务运行时专注于业务的逻辑实现;技术运行时关注于业务所依赖的技术中间件能力。二者分离开,各自维护,但又相互依存。开源社区框架:Dapr APIsHTTP APIgRPC APIMicroservices written inAny cloud or edge infrastructureAppli
4、cation codeAny code or frameworkMicroservices written invirtual or physical machinesService-to-service invocationState managementPublishandsubscribeResourcebindingsand triggersActorsObservabilitySecretsConfigurationDistributed LockWorkflowv2Publish&SubscribeSecret ManagementOutput BindingServiceInvo
5、cationGet Get statestateRetrieve Retrieve secretsecretPublishPublishSubscribeSubscribeTriggerTriggerCall Call methodmethodGet Get configconfigApplication ConfigurationDapr APIs0303CHAPTERCHAPTER一些实践分享一些实践分享 多泳道环境隔离 多云配置管理 服务治理1.1多泳道环境隔离-全览南向消息设备上行,按照设备白名单将上行消息按泳道投递,分发到MQ的不同前缀topic设备下行,无需处理,接入层只需要一个北
6、向业务在网关层通过用户白名单将业务请求按泳道投递,实现不同来源(开发人员、品质、事业部等)用户分别投递到对应的泳道。1.2多泳道环境隔离-服务间调用示例OrderProcessorCheckoutDNSName Resolution component for service discovery(mDNS,Kubernetes DNS,Hashicorp Consul)二开扩展能力:基于泳道特征,服务发现优先匹配同泳道下的目标服务节点,不存在时调用回目标服默认节点mTLS encryptionPOSThttp:/localhost:3500/v1.0/invoke/orderprocessor
7、/method/ordersdata:order1POSThttp:/10.0.0.2:3501/ordersdata:order1Send orderSend orderConfigurationMy AppGEThttp:/localhost:3500/v1.0/configuration/store/appconfig1setting Akeyvalueappconfig1”setting A二开扩展支持ETCD方式的存储结合自研配置管理后台,实现配置的增、删、改、查、发布基于http api交互,业务侧中不关注具体的配置存储方式(etcdredismysql),不依赖业务具体的开发语言(javagoc+python),不需要集成sdk,可主动读取配置业务提供回调路由地址,也可实现及时接收配置的热更新2.1配置管理-业务配置2.2配置管理-安全配置二开扩展支持对接不同云服务厂商的密钥管理云服务或自建的KMS服务业务侧不需要集成sdk,与开发语言无关服务的移植性大大提升3.1服务治理-更多探索可观察性可观察性云原生演进云原生演进统一的限流、降级统一的限流、降级混合部署下的服务发现混合部署下的服务发现展望谢谢谢谢