全球架构师峰会 Arch Summit 2018

现代应用架构中配置管理面临的挑战,及基于OpenConfiguration规范的最佳实践

1. 演讲:现代应用架构中配置管理面临的挑战, 及基于OpenConfiguration规范的最佳实践 杨奕 阿里巴巴 中间件 产品经理
2. 杨奕 • • 阿里巴巴 产品经理 阿⾥里里巴巴 产品经理理,现就职于中间件技术部,! ⽬目前为ARMS, Xtrace, 以及应⽤用配置管理理产 品ACM的产品经理理,Nacos开源项⽬目及 OpenConfiguration规范的发起⼈人之⼀一。!
3. • 阿里巴巴配置中心的演化 • 配置中心主要场景 • 云上配置中心的新挑战 • 未来混合云,多云的配置中心演化趋势 • 配置中心标准工作介绍
4. 什么是配置 logLevel = error ⽇日志级别! 数据库连接串串! 第三⽅方软件许可! 功能模块属性! 性能参数! 报警阈值! 数据分⽚片! 服务治理理! ……!
5. 微服务和云时代的配置的挑战 分布式 登上20000台机器改配置文件? 配置文件在哪里? 配置值生效了么? 当前应用到底有哪些配置? 如何同时控制多个子系统的一致的 行为调整 • 配置如何容灾 • … • • • • • •
6. 配置需求的发展趋势总结 动态 实时 规模 安全
7. 现代配置中心的作用 配置中心主要功能: • 配置集中存放,按需动态推送 ⼈人⼯工修改 传统 w/ 配置中⼼心 ⼈人⼯工修改 配置 中⼼心 动态推送 Application Application1 Config Config1 Application Application2 Config Config2 配置中⼼心的主要作⽤用 • 提升配置⼯工作效率 (降低配置⼯工作量量,提升发布速度) • 配置实时推送,提升响应时间 Application Application1 Config1 Config2 Application Application2
8. 阿⾥里里巴巴配置中⼼心孵化史 巨⽯石时代: 五彩⽯石项⽬目: 上百⼈人维护⼀一个核⼼心⼯工程 • 源代码冲突问题严重 • 项⽬目团队协同代价⾼高 向微服务架构优化 • 巨⽯石应⽤用通过RPC框架进 ⾏行行拆分 • 各类服务治理理需求应运⽽而 ⽣生。 ⼈人员更更新速度快 • ⼈人员学习⽼老老代码难度⼤大 • 源代码膨胀 配置中⼼心由此诞⽣生
9. 阿⾥里里巴巴配置中⼼心发展史 • 三个名字,不同场景,一套架构,一个团队 Nacos ACM Diamond • 2008 - ⾄至今 • 阿⾥里里内部版本 • 主要解决内部⼤大规模 各类业务复杂场景 • 2016 - ⾄至今 • 阿⾥里里云上版本 • ⾯面向云计算的商业解 决⽅方案 • aliyun.com/product/ acm • 2018 – ⾄至今 • 含配置管理理和服务发 现的开源解决⽅方案 • ⾯面向多⽣生态 • nacos.io
10. 物理理架构 • 地址服务器组件,提供ACM (Diamond) 服务发现功能,实现了集群扩容、下线等 运维工作对于应用方的透明。 • ACM(diamond)-server组件,是ACM服 务的核心。该组件通过Http协议向应用方 提供配置的持久化管理、动态配置推送服 务。实现上,ACM(diamond)-server组 件是一个Web服务集群,集群节点间通 过特定机制实现数据变更的增量同步,是 无中心化的结构。 • Mysql存储,是ACM(Diamond)服务持 久化配置管理的基础。在淘宝生产环境 中,使用一主两备的部署方式保障数据的 安全。
11. 基于Cache的优化 ACM (Diamond) 的持久化配置保存在mysql 中,额外的服务端每个节点都以本地磁盘文件 的形式保存了全量的配置数据作为cache。引 入服务端配置数据的缓存文件后,一次配置数 据的读取请求,其实就是一次静态文件的Http 请求。借助0拷贝的优化,减少了配置数据在 应用态和内核态之间无用的内存拷贝,大大提 升了数据传输效率。 引入cache机制后, ACM (Diamond)在实现 上可以被定为一个分布式的缓存系统。在CAP 方面, ACM (Diamond)选择牺牲数据的强一 致,提供了最终一致性;保证了系统的可用性 和分区容忍性。 通过实践也证明了,提供最终 一致性的配置并发读写,可以满足几乎所有的 配置中心应用场景。
12. 配置监听:基于推模型的客户端⻓长轮询的⽅方式 • 要求:性能,时效性,最终⼀一致性 • 基于Http⻓长轮询模型,实现了了让客户 端在没有发⽣生动态配置变更更的时候减 少轮询。 • 这种推拉结合的策略略,做到了了在⻓长连 接和短连接之间的平衡,实现上让服 务端不不⽤用太关注连接的管理理,效果上 ⼜又获得了了类似TCP⻓长连接的信息推送 的实时性。
13. 架构总结 特点: • 近无状态的横向扩展 • 基于缓存的高性能 - 3秒,99.99% SLA - 百万节点级别 • 客户端弱依赖 - 高可用
14. 架构演进 • 阿里中间件配置注册 中心诞生,被运用于 远程框架路由 • 百级应用,千级配 置,万级推送 2008 • ACM 上云支持多租户, 鉴权,数据加密,容量管 理 • 百级阿里云用户,万级应 用,百万级配置,亿级推 送 • 异步化改造,性能显著提 高。 • 支持异地多活,双十一流 控、预案、开关 • 千级应用,万级配置,百万 级推送 2010 • 配置中心和注册中心剥离, 配置中心定位于保存持久化 数据不丢失 • 中间件MetaQ,TDDL开始基 于配置中心开发 • 千级应用,万级配置,十万 级推送 2013 2016 2018 • 发布管控增强(支持灰度,审 批,历史,回滚,推送轨迹, 推送状态查询等) • 万级应用,十万级配置,千万 级推送 • ACM在EDAS中对外提供服 务。
15. 场景1 微服务配置管理理 • 提高配置管理效率 • 降低发布次数 • 参数包括: - 服务治理 - 服务配置参数 - 数据库连接配置
16. 场景2 应⽤用场景模板管理理 • 通过在前端 Javascript 埋入 配置内容(如三方库版本 号,静态资源 URL 等), • 在运营活动发布时,运营人 员可以通过运营工具修改 配 置规则,直接让前端 的展示 生效。
17. 场景3 应⽤用实时监控报警 • 支持大规模集群应用的性能监控 (平均,最大,分位数) • 实时生效
18. 场景4 异地多活场景 • 基于多站点的业务分 片管理。 • 万级节点规模容灾切 换秒级生效。
19. 问题来了了 配置推错了了! 肿么办?
20. ⾯面向『⼤大规模,分布式』场景的配置中⼼心⾼高级功能 • 配置校验&Diff • 配置灰度 • 配置推送轨迹追踪 • 变更历史&一键回滚
21. 配置上云的挑战 -- 安全 事件⼀一览: • 云泄露:Verizon公司超1400万用户信息外泄 • 亚信安全盘点2017年十大数据泄露事件 相关要求: • 等保信息安全技术 信息系统安全等级保护基本 要求 第三级
22. 云计算、DevOps对配置的挑战 • 敏感配置放哪里? 代码库? 服务器? 如何加密? 如何授权? • 如何保证安全性?
23. 阿⾥里里云的配置中⼼心 (ACM) 安全挑战解决思路路 敏感配置内容 应用程序『零』保存 • 敏感配置内容 存ACM,应用程序仅存 配置Key,解决 敏感配置本地保存问题 • 配置内容 通过 KMS 进一步加密,保证配置在云上保 存和传输过程中的安全性, • 配置通过RAM进一步分级,可根据配置进行权限分 级,敏感配置专人管理 • ACM的AK / SK无需应用配置,ACM SDK直接通过 ECS的RAM Role健权进行访问。 ACM RAM KMS
24. 安全配置详细⽅方案 详细参考: https://yq.aliyun.com/articles/596252
25. 配置中⼼心 开源解决⽅方案 • Nacos: Dynamics Naming and Configuration Service - 2018年7月首发 - 集配置中心和注册中心为一体 - http://nacos.io 配置中⼼心 (Diamond / ACM) 注册中⼼心
26. 未来混合云,多云,多配置的挑战 配置中心产品: Spring Cloud Config Server 云平台:
27. 问题来了了 如何让配置一次编写, 到处管理?
28. Open Configuration 配置的接⼝口抽象 Spring Cloud Config Server 配置模型 • 原子性 • 分层 • 多租户 配置读写 • 读取 • 推送 • 写入 配置发布 • 灰度 • 版本回滚 • 订阅追踪 配置安全 • 健权 • 加密 • 审计
29. Open Configuration ⼯工作进展 正式毕业 规范孵化 起草规范 联合倡议 • • • • Facebook, Google, Spring Cloud社区, 等 • 兼容各⼤大主流配置 产品 • 借助 Linux 基⾦金金会 • 各⼚厂商对主流的配 置中⼼心提供实现
30. 未来⽬目标
31. 欢迎交流 • 配置中心技术交流群 • 个人微信 (技术,招聘)

相关幻灯片