分布式应用运行时的落地实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 分布式应用运行时落地 实践 郭智勇
2. ON 1 云平台概述 2 分布式运行时 3 实践分享 4 展望
3. 01 CHAPTER 云平台概述 • 平台概览 • 技术挑战
4. 平台概览 智能设备 智能家电 核心服务 内容 国内美居 设备控制 设备管理 实时消息推送 国际美居 MSmart life 设备影子 Serverless 消息分发 实时计算 国际东芝 ToshibaHA 安全服务 设备升级 规则引擎 接入服务 接入服务 生态设备 业务应用 物模型 用户 数据存储 智能音箱 开放平台业务 网关设备 接入路由 设备事件 任务调度 监 控报表 美居
5. 技术挑战 多样的连接 终端碎片化 巨量的数据 1 3 5 欢迎加入 2 技术链路长 4 海量的连接 6 部署多样性
6. 02 CHAPTER 分布式运行时 • 现实问题 • dapr • 多运行时
7. 现实问题 服务开发使用的语言各不相 同,有java、c++、 python、go,一些公共的库 需要编写多种版本,升级维 护需要投入不少人力 服务代码中引入越来越多的 SDK,有一些与云厂商强相 关,不同的云厂商提供的 SDK不一样,多云部署时需 要调整代码(例如:KMS 服务) 服务的治理,服务间的限 流、降级、熔断;服务与外 部的交互;整个调用链路的 追踪,出现问题时如何快速 定位 技术链路长,关联的部门 多,联调、测试、压测大家 都需要有一个稳定的环境互 不干扰
8. 多运行时 infoq.com: 业务运行时和技术运行时分离; 《Multi-Runtime Microservices 业务运行时专注于业务的逻辑实现; Architecture》 技术运行时关注于业务所依赖的技术中间件能 将各种各样的分布式能力外移到独立 力。二者分离开,各自维护,但又相互依存。 Runtime,最后和应用 Runtime 共同组成微 多运 行时 架构 开源社区框架 : 服务,形成所谓的“Multi-Runtime”(多运 行时)架构 从实际出发,选用Dapr,在此基础上扩展自己 的业务组件,满足自身的需求,同时回馈社区
9. Dapr APIs Application code Microservices Microservices written written in in Any code or framework… gRPC API HTTP API Service- to-service invocatio n State management Publish and subscribe Resource bindings and triggers Actors Observability Secrets Configuration Distributed Lock Workflow Any cloud or edge infrastructure virtual or physical machines
10. Dapr APIs Publish & Subscribe Trigger Get state Application Configuration Get config v2 Publish Subscribe Call method Retrieve secret Service Invocation Secret Management Output Binding
11. 03 CHAPTER 一些实践分享 • 多泳道环境隔离 • 服务治理 • 多云配置管理
12. 1.1多泳道环境隔离-全览 南向消息 设备上行,按照设备白名单将上行消息按泳道投递,分发到MQ的不同前缀topic 设备下行,无需处理,接入层只需要一个 北向业务 在网关层通过用户白名单将业务请求按泳道投递,实现不同来源(开发人员、品质、事业部等)用户分别投递到对应的泳道。
13. 1.2多泳道环境隔离-服务间调用示例 DNS Name Resolution component for service discovery (mDNS, Kubernetes DNS, Hashicorp Consul) 二开扩展能力:基于泳道特征,服务发现优先匹配同泳道下的目标服务节点,不存 在时调用回目标服默认节点 Send order Checkout Order Processor mTLS encryption POST http://localhost:3500/v1.0/invoke/orderprocessor/method/orders {"data":"order1"} POST http://10.0.0.2:3501/orders {"data":"order1"}
14. 2.1配置管理-业务配置 Configuration My App key appconfig1 value ”setting A" GET http://localhost:3500/v1.0/configuration/store/appconfig1 "setting A" 二开扩展支持ETCD方式的存储 结合自研配置管理后台,实现配置的增、删、改、查、发布 基于http api交互,业务侧中不关注具体的配置存储方式(etcd\redis\mysql),不依赖业务具体的开发语言(java\go\c++\python), 不需要集成sdk,可主动读取配置 业务提供回调路由地址,也可实现及时接收配置的热更新
15. 2.2配置管理-安全配置 二开扩展支持对接不同云服务厂商的密钥管理云服务或自建的KMS服务 业务侧不需要集成sdk,与开发语言无关 服务的移植性大大提升
16. 3.1服务治理-更多探索 混合部署下的服务发现 可观察性 云原生演进 统一的限流、降级
17. 展望
18. 谢谢
19.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.138.0. UTC+08:00, 2024-12-22 02:40
浙ICP备14020137号-1 $Map of visitor$