微服务应用平台的探索与实践 李勇军 (1)

Razor

2019/10/19 发布于 技术 分类

文字内容
1. 微服务应用平台的 探索与实践 华为云ServiceStage服务负责人 高级技术专家 李勇军
3. 李勇军 华为云微服务应用平台负责人、高级技术专家
4. 目录 1. 为什么需要微服务 2. 华为云微服务全栈解决方案介绍 3. 华为云微服务应用平台设计要点详解 4. 开源社区生态 5. 案例
5. 业务变革与创新 你有多久没去过银行? 你参加过多少次剁手节? 传统业务数字化、云化已成为不可逆转的趋势 流量不可预知性已成为互联网应用常态
6. 应用架构的变迁 第一代:单体架构 第二代:SOA架构 • 紧耦合, • 松耦合 • 系统复杂、错综交互,动一发而牵 全身 重复制造各种轮子:OS、DB、 Middleware 完全封闭的架构 • • • • • 通常通过ESB进行系统集成 有状态 大团队:100~200人 TTM:'>TTM: 1年、半年、月 集中式、计划内停机扩容 • • 第三代:微服务架构 • • • • • • 解耦 小团队:2 Pizza Team TTM:'>TTM: 按天、周进行升级发布 DevOps: CI, CD, 全自动化 可扩展性:自动弹性伸缩 高可用:升级、扩容不中断业务 应用向CloudNative演进,微服务是CloudNative的事实标准
7. 微服务带来的好处与挑战 服务模块的边界更清晰: 微服务强调模块化结构 (REST接口调用),这对 大型团队非常重要 支持独立部署: 简单服务更易部署,由于 服务是自治的,出现问题 之后不会引起系统崩溃 允许技术多样性 :有了 微服务,你可以混合使用 多种编程语言、开发框架 和数据存储技术 分布式编程难度大、 有风险: 分布式系统编 程难度更大,远程调用更 慢且总存在失败风险 需处理分布式系统的 一致性: 对于分布式系 统来说,保持一致性非常 困难,意味着大家都要处 理最终一致性 增加运维复杂性:需 要一个成熟的运维团队 (机制)来管理大量需要 频繁部署的服务
8. 目录 1. 为什么需要微服务 2. 华为云微服务全栈解决方案介绍 3. 华为云微服务应用平台设计要点详解 4. 开源社区生态 5. 案例
9. 华为云ServiceStage是什么 以应用为中心,提供微服务、Web、移动和函数应用全栈解决方案,帮助企业加速业务创新。 ServiceStage App Stack App Logic App Components App Framework App Runtime DB Cache MQ …… OS PM VM DevOps Stack Docker 微服务应用解决方案 Web应用解决方案 移动应用解决方案 函数应用解决方案 公共组件 公共组件 公共组件 公共组件 应用框架 应用框架 应用框架 应用框架 运行环境 运行环境 运行环境 运行环境 服务集成 服务集成 服务集成 服务集成 基础设施 基础设施 基础设施 基础设施 DevOps解决方案 Coding > 编译 > 构建 > 发布 > 部署 > 配置 > 压测 > 上线 > 运维
10. 华为云ServiceStage一站式微服务解决方案 生态 ServiceStage微服务解决方案 开发者生态 开源社区 开发者 商业生态(aPaaS/SaaS) API 案例 行业:(政府、教育、医疗、零售、…) 通用微服务工具市场 行业微服务组件市场 微服务框架(CSE) 工具(CPE) 设计和开发 流 水 线 ︵ 持 续 集 成 ︑ 持 续 交 付 ︶ ServiceComb(Java) ServiceComb(Go) 扩展插件: Eclipse等 构建 部署 测试 扩展插件: 静态检查等 扩展插件: 三方部署系统 扩展插件: 客户测试系统 发布上线 扩展插件: 客户自有仓库 监控运维 扩展插件: 客户自有监控 行业:(政府、教育、医疗、零售、…) 微服务咨询 Spring Cloud(Java) Istio(不限语言) 应用管理平台(CAS) 生命周期管理 微服务管理 微服务治理 微服务运维 环境管理 部署/卸载 契约管理 负载均衡 监控大屏 开发环境 启动/停止 注册中心 限流/降级 智能分析 测试环境 升级/回滚 配置中心 熔断/容错 立体监控 预验证环境 灰度发布 治理中心 错误注入 日志分析 灰度环境 弹性伸缩 全局事务 黑白名单 全链路拓扑 生产环境 来自于华为全面云化转型成功经验和前沿技术创新成果 现状分析 适用性评估 目标设定 试点实施 效果评估 经验固化 培 训 ︵ 理 论 ︑ 案 例 ︑ 实 战 演 练 ︶ 产品 开放: 支持主流开源框架和源码仓 库、开发体验不变,全流程 可扩展。 全栈: 咨询 + 框架 + 平台 + 工具 + 生态 成熟: 华为全面云化成功经验 更快: 业务上线:年 > 月 > 周; 随时上线 更稳: 系统SLA:3个9 > 4个9 > 5 个9 > ;永不断服 更经济: 资源成本:容量预测、资源 按需弹性
11. 全栈应用平台,覆盖应用全生命周期 ① 全流程DevOps ② 全场景微服务能力 研发态 运行态 运维态 ③ 集成态 业务上云平滑演进 Legacy系统 云原生应用A 应用开发 DevCloud 应用托管 ServiceStage 应用运维运营 AOM 边缘 云原生应用B 应用集成 ROMA 云原生应用C 第三方应用 研发数据 业务数据 运维运营数据 ④ 全生命周期数据分析、智能化辅助决策 融合集成数据 工业设备
12. 目录 1. 为什么需要微服务 2. 华为云微服务全栈解决方案介绍 3. 华为云微服务应用平台设计要点详解 4. 开源社区生态 5. 案例
13. 微服务生命周期管理 部署/启 动 创建 删除 停止/卸 载 编码 发布 编译 回滚 构建 测试 部署 告警 微服务运维生命 周期管理 微服务开发生命 周期管理 验收 日志/监 控 缩容 诊断 扩容 治理/配 置
14. 微服务DevOps 基于ServiceStage流水线实现应用全流程“自助式” 开发、集成、验证与上线 优势 • 一键生成持续交付环境 自动生成应用框架代码、构建、部署及测 试环境 • 多语言应用 Java、Go、Node.js、PHP、Python、 Ruby、.Net • 多种源码仓库 CodeHub、GitHub、Gitee、GitLab、 Bitbucket
15. 微服务框架 提供ServiceComb、Spring Cloud和Service Mesh多 种解决方案,降低企业迁移成本 • Contract First 支持基于Swagger的API管理 • 多语言微服务 支持Java、Go、.Net、Node.js等 • 技术开放 支持ServiceComb、Spring Cloud、Service Mesh • 动态治理 支持可视化服务路由、熔断容错等 • • • 多种开发风格 SpringMVC,JAX-RS,透明RPC 安全可信 充分安全能力设计、安全级别高、可信
16. 微服务框架:Contract First 遵循OpenAPI Specification,消费端、提供端只依赖API定义 契约设计 N • API描述:Swagger API规范 • 微服务代码生成:服务端和消费端各自生成API类 库 • 微服务接口测试:基于API定义生成 审批 Y 契约发布 • 微服务API依赖关系:我依赖谁、谁依赖我 • API变更管控:API变更邮件通知和审批 同时支持Contract First和Code First 生成代码 业务开发
17. 微服务框架:多语言&技术开放 DevOps人员 ServiceStage 注册中心 配置中心 治理中心 服务监控 安全管控 事务管理 • 多语言 • 技术开放 OpenAPI(Restful) 微服务 JAVA-SDK 微服务 微服务 Go-SDK .Net 微服务 SpringCloud Node.js 微服务 服务网格 PHP 微服务 其他语言 微服务 Java、Go、Node.js、PHP、 Python、Ruby、.Net ServiceComb、Spring Cloud、 Service Mesh
18. 微服务框架:微服务治理 适用于电商、游戏、教育、媒资、能源及金融 等有明显波峰波谷场景的应用,可以实现分布 式系统细粒度治理和高可用保障 优势 • 低门槛 通用治理能力沉淀到框架,开发人员只 需聚焦业务 • 简单易用 提供GUI一站式治理控制台 • 准实时 运行状态实时监控,配置下发实时生效
19. 微服务框架:多种开发风格、协议 不同业务模块和团队,经验和开发习惯都有差异,选择适合业务的开发模式 1、传统使用Spring MVC开发的团队,继续使用Spring MVC风格: 2、透明RPC模式: 3、JAX-RS模式: 开发模式没有优劣之分,选择业务熟悉的模式,可 以更好的重用已有代码和开发经验,提升效率
20. 微服务框架:框架安全性(安全特性) 安全认证 黑白名单 RSA认证 安全运行 隔离舱 动态治理 安全隔离 物理多租 故障注入
21. 微服务框架:框架安全性(3方软件) 数据来源之信通院发布开源产业白皮书(2019年)
22. 微服务框架:框架安全性(安全漏洞) 数据来源之信通院发布开源产业白皮书(2019年)
23. Edge Service • 基于ServiceComb框架的网关服务开发框架 • 提供纯异步处理的边缘网关服务,相对于Zuul大大提高了性能 • 基于ServiceComb的治理模型,能够动态管理接口兼容性,实现接口兼容性转发 • 通过Dispatcher进行扩展,开发更加灵活
24. 分布式事务 ServiceComb Pack Saga TCC DTM引擎 TCC Saga 非侵入
25. 立体运维“垂直”方案 应用自动发现:自动发现和建立进程、服务、资源之间的映射关系 异常关联分析:应用异常时可以快速关联到服务、进程、事务以及资源对象上,快速找问题原因 应用 应 用 模 型 应用详情 9事务 10实例 SLA 2节点 日志分析 云服务 节点详情 资 源 模 型 内存 CPU 主机 磁盘 网络
26. 立体运维“水平”方案 全栈拓扑图:可视化展示手机/PC端、网端、WEB服务与DB全栈性能数据 调用链追踪:通过捕获异常调用链数据可快速找到异常代码函数与瓶颈点 非侵入埋点:用户无需修改业务代码,开箱即用 端侧 接入层 网络性能分析 数据层/外部服务 服务间性能分析 还原完整调用链数据 App1.0 端到云全栈拓扑图 3 3 m 8m 133 tpm 200ms s 8m 5 6 m tp 3 503 tpm tp 31 t pm 102 Cache-mgr ms Product-mgr 29 tpm 1014ms 56 8m s 31 t 调用链追踪 pm 102 ms s 2m 10 tpm 31 50 33 ms s api-gw 120 m 2m s 0 1 5 6 503 tpm 568ms PC端 ms m App1.1 2 10 tp tp m 1 tp 31 50 User-mgr 函数调用关系、参数、返回值和时延
27. 什么是系统可信 可信是每个系统在它的业务意图之外同时具备韧性、security安全性、隐私性、safety安全性、可靠性、可用性六 个特征的确定性程度 系统上下文 Privacy 合规使用 数据 系统 偶然地 非恶意人为 恶意 故意人为 Reliability Failure Availability Fault Security Attack 不伤害人 和环境 Resilience Intrusion Safety
28. 软件工程的发展及可信开发要求 现代软件工程发展: 安全可信Built-in的持续交付和DevOps成为“现代软件工程”主要趋势 现代软件工程的典型实践(以Google为例): • 代码评审机制:10-15%实践做代码同行评审 • 共主干开发:所有的工程师都提交到代码的Head,主干几乎都是“绿的” • 单一代码仓:代码仓库统一,提供方便的跨项目管理、代码复用、简化的依赖管理、统一的版本管理 • 一套共享的工具链:规范化工程师的代码库交互,包括构建、测试、代码浏览、代码评审等,工具以开发者为中心,做到开发人员 对工具无感知,满意度高 • 高效构建:构建采用增量、并行、构建结果缓存等,所有构建在秒级、最长分钟级出结果 • 极致的代码重用和共享:共享已有的优秀项目和代码,不重复造轮子 • 代码持续重构:预防框架腐化、代码腐化、技术落后 华为可信解码:六条核心可信要求,即管理Dependency、干净代码、合入有门禁、持续构建发布、充分验证、安全部署
29. 通过组织、流程和文化,建立长治久安的机制 选拔懂软件的人做主管 组织/能力 文化与导向 尊重软件客观规律 工具/技术 流程机制 服务化可信工具链 可信要求Built-In
30. 目录 1. 为什么需要微服务 2. 华为云微服务全栈解决方案介绍 3. 华为云微服务应用平台设计要点详解 4. 开源社区生态 5. 案例
31. ServiceComb首个Apache微服务顶级项目 LinuxCon大会 正式开源 成为Apache 孵化项目 1.0.0-m1 发布 2017.12 2018.04 1.0.0-m2 发布 1.0.0 发布 毕业成为 Apache 顶级项目 原则 发展历程 2017.06 2018.06 2018.08 2018.10 • 中立 • 开放 • 标准化 • 无商业Lock-in • 社区健康发展 根据个人贡献获得价值, government by merit Meritocracy 基于尊重、诚实、专注于技术的 社区模式交流 代表个人行为不代表企业 利益 Respect for fellow developers Nonaffiliation 投票机制管理社 区 Community Apache Way Consensus 多样化的社区,防止单一公司的 控制,鼓励协同开发 “community over code” Open & transparency Pragmatism Collaborative development 代码是社区合作开发的 [Website] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 决策透明公开:讨论,决定和 存档均基于mailing list 商业友好的开源许可证, Apache项目使用permissive license的Apache 2.0许可证
32. 融合开源生态的一站式微服务解决方案 遗留应用转型 全新微服务开发 开源异构微服务兼容 融合开源生态的一站式微服务解决方案 云原生 配置 Apache ServiceComb 快速入门 ServiceMesh 用户手册 社区网站 流行微服务框架 可视化监控 分布式追踪 服务通信规范 内核 融合 流行 生态 案例代码库 开发工具 Rest(OpenAPI) / RPC 配置中心 认证框架 多语言方案 服务中心 微服务 开发框架 分布式事务 框架 API自 动提取 代码自 动生成 API 校验 文档自 动生成 微服务脚手架
33. 社区持续创新 微服务契约工具 分布式系统配置中心 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 帮助企业用 户达成业务 模型和数据 集成标准统 一 多语言运行环境 服务中心异构通信 微服务鉴权 在同一个业 务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 Apache ServiceComb
34. 目录 1. 为什么需要微服务 2. 华为云微服务全栈解决方案介绍 3. 华为云微服务应用平台设计要点详解 4. 开源社区生态 5. 案例
35. 企业基于ServiceStage快速构建业务中台 和行业应用 行业应用 数字政府 智慧园区 金融 工业云 新零售 高校 制造能源 领域应用/业务 领域应用/业务 领域应用/业务 领域应用/业务 领域应用/业务 领域应用/业务 领域应用/业务 领域业务中台 领域业务中台 领域业务中台 领域业务中台 领域业务中台 领域业务中台 领域业务中台 ServiceStage 以应用为中心 PaaS平台 基础云服务 基础设施 微服务应用解决方案 Web应用解决方案 移动应用解决方案 函数应用解决方案 DevOps解决方案 DevCloud 应用中间件 容器服务 数据库服务 IaaS(计算、网络、存储、安全) AI服务 应用与数据基础服务
36. ServiceStage助力华为应用市场打造AGC 全球亿级用户平台 目标架构 现有架构 业务创新受阻 传统 新技术落地难 应用 交付效率低 服务化架构 弹性伸缩 目标 持续交付&敏捷开发 应用 基础设施自动化 运维成本高 流程自动化&标准化 运维智能化 AppGallery Connect CloudNative 服务平台 应用构建服务 项目管理 ProjectMan 代码托管 CodeHub 编译构建 CodeBuild 应用管理服务 流水线 CloudPipeline 软件开发平台(DevCloud) 用户数:亿级 特性上线:天级 微服务 框架 应用发布 应用生命 周期管理 服务治理 应用运维 应用调用链 应用管理与运维平台(ServiceStage) 应用运维:小时/分钟级 弹性伸缩:秒级
37. 产品体验 公众号
39. Thank you