微服务的设计原则与⽣态系统 - 王磊
Sybase Tech Leader • 《微服务架构与实践》作者 • 《DevOps Handbook》中⽂文译者之⼀一 • 国内较早倡导和实践微服务的先⾏行行者 • 对于⾃自动化测试、持续交付、DevOps有丰富的实践经验 • ⻄西安DevOps Meetup 联合发起⼈人 关于我 议题 • 微服务架构的核⼼心 • 微服务架构设计原则 • 微服务架构⽣生态系统 Are https://www.continuousdelivery.com/ • 缩短交付周期 • 降低发布⻛风险 • 质量量内嵌 组织协同 环境管理理 数据管理理 松耦合架构 反馈验证 持续集成/部署 内建质量量 微服务架构是松耦合架构机制的⼀一种实现 为什什么基于DevOps? ● Communication ● Automation ● Measuring ● Sharing 通⽤用语⾔言(Ubiquitous language) • 界限上下⽂文(Bundle context) 围绕业务-构建团队 围绕业务-构建团队 VS 服务A 开发 测试 DBA UI/UX 运维 服务B 开发 测试 DBA UI/UX 运维 康威定律律:组织产⽣生的设计成果等同于组织内的协作结构 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化0 码力 | 62 页 | 6.65 MB | 1 年前32-4-禚娴静-微服务你玩得起吗
独立运行 • 轻量级通信机制 • 独立的部署 • 去中心化 • 要多小? • 怎么部署? • 出错怎么办? • 如何保证一致性 玩得起微服务的条件 持续改进的⾃自组织⽂文 快速响 Tall enough 服 务 ⾃自 演 进 2009年 2012年初探微服务 2014年⿊黑暗时代 2015年服务治理 2016年新的征程 背景介绍 ⽆无法快速有效定位问题,⽆无法 快速有效知晓服务运⾏行状态, 服务资源浪费。 回到问题 3.服务拆分 微服务的附加成本 3.服务⾃自演进 2 1 2 3 划分合适的业务边界 进⾏行合适模块化 可测试的 4 拒绝跨上下⽂文的 数据表连接 交付畅通 环境⼿手⼯工维护,频频出错 缺乏有效监控 服务过⼤大,堵塞交付 快速增⻓长的结果导致服务过⼤大 或者服务过⼩小。⽽而过⼤大的服务 导致整个提交流⽔水线堵塞,测 分析设计 开发实现 测试交付 上线发布 运营 持续交付 持续改进 建⽴立闭环反馈系统 � � � � � � � � � � � � DevOps 这样就⾜足够了吗? 快速响应 ⼀一个具有快速复原能⼒力, ⼀一个具有持续改进⾃自组织⽂文化的团队! Podcast-�� ���� ���� 2014 2012 2015 持续改进的⾃自组织⽂文化 总结 持续改进的⾃自组织⽂文0 码力 | 51 页 | 8.18 MB | 1 年前3微服务环境下的系统治理与容错
• 热爱分享,维护技术公众号 [程序架道],对高并发、高可用系统有持续不懈的追求; 个人微信号 技术公众号 • 微服务架构 • 容错 • 总结 • 治理 微服务架构 架构 架构 架构是为应用程序服务的 软件系统应用程序的需求 软件系统的价值维度 架构师是什么样的人 架构的终极目标 研发团队的持续斗争 研发团队必须从公司长远利益出发与其他部门抗争 -- Robert 微服务的忠告 n 第一,要记住微服务不是解决所有问题的万能 “银弹”。 n 第二,编写整洁的代码和使用自动化测试至关重要,因为这是现代软件开发的基础。 n 第三,关注微服务的本质,即服务的分解和定义,而不是技术,如容器和其他工具。 n 第四,确保你的服务松耦合,并且可以独立开发、测试和部署,不要搞成分布式单体,那将会是巨大的灾难。 n 第五,也是最重要的,不能只是在技术上采用微服务架构。拥 同步调用下-线程池隔离实现方法 快速失败-超时 快速失败-时间窗口 快速失败-超时重试次数 区分部署和上线 常规系统保障流程 没有不出问题的系统 什么是混沌工程 混沌工程 故障注入 故障测试的区别 总结 工具 知识 经验 参考书籍0 码力 | 45 页 | 16.09 MB | 1 年前3微服务架构与领域驱动设计 - 王磊
Sybase - Tech Leader �2 关于我 • 丰富的持续交付/微服务架构/DevOPS经验 • 《微服务架构与实践》作者 • 《DevOps实践指南》译者 • 中国⾸首批EXIN DevOps Master教练 • ⻄西安DevOps Meetup 联合发起⼈人 • 《消费者驱动契约测试-Pact》译者 • 《使⽤用SpringBoot/Cloud构建微服务》视频作者(StuQ) 每个服务运⾏行行在其独⽴立的进程中,服务与服务间采⽤用轻量量级的通信机制互 相协作(通常是基于HTTP协议的RESTful API)。 每个服务都围绕着具体业务进⾏行行构建,并且能够被独⽴立的部署到⽣生产环 境、类⽣生产环境等。 以持续交付为核⼼心 基于DevOps 的演进式架构 Shakespear A thousand Hamlets in a thousand people’s eyes. 微服务架构 �7 Engaging: 带着问题的和拥有答案的⼈人⼀一起来构建模型 Efficient: 能快速发现界限上下⽂文以及相关的聚合根等 参与⼈人员:业务⼈人员,领域专家,技术⼈人员,架构师,测试⼈人员等关键⻆角⾊色 开放空间:⾜足够的空间将业务事件流可视化,让⼈人们可以互相讨论 彩⾊色即时贴:使⽤用不不同颜⾊色标识 Alberto Brandolini 如何使⽤用Event Storming0 码力 | 28 页 | 1.84 MB | 1 年前3ServiceComb 的前世今生
http://enterpriseitadoption.com/ 传统企业应用开发模式 开发 产品发布计划 开发 集成开发 运维人员替换 部 署 旧 版 本 开发 开发 测试/发布 • 技术实现单一,需要想办法用一种技术解决所有问题 • 只能按大颗粒系统发布版本,响应周期长 (小特性版本3-6个月,每年1个大版本) • 无法做到永远在线,大版本升级时,要停机中断服务 产品发布计划 开发 部署到生成 环境 部署到生成 环境 开发 开发 部署到生成 环境 部署到生成 环境 部署到生成 环境 开发 开发 bugs 旧版本持续运行 Speed & Safety 面临的问题 • 企业应用和互联网应用的不同? • 如何做到不同ISV的应用互联互通统一管理? • 怎么才能加快微服务的开发? • 微服务化后如何保证性能? --- 工具支持 OpenAPI (Swagger) 定义 编辑器:在线编辑,语法提示, 错误检查 文档生成器:生成HTML与符合 华为规范文档 Mock生成器:生成Mock工具, 用于测试微服务 现有代码提取 OpenAPI工具 与RPC的IDL互 转工具 protobuf3 多语言多框架代 码生成器 多语言Protobuf3对象 编码库 Java0 码力 | 16 页 | 1.45 MB | 1 年前3反应式微服务框架ServiceComb设计思想&mdash
华为云 IoT⾸席架构师 王启军,华为云IoT首席架构师,曾担 任PaaS团队架构师,负责微服务框架 的开发。曾任当当网架构师,主导电 商平台架构设计;曾就职于搜狐负责 手机微博的研发。《持续演进的Cloud Native》作者,微信公众号“奔跑中 的蜗牛”博主。 p为什么微服务框架需要 Reactive pServiceComb 的 I/O 通信模型演进 pServiceComb Xeon(R) CPU E5- 2680 v4 @ 2.40GHz 内存: 8GB 测试代码:https://github.com/GuoYL123/ReactiveBenchmark 调优后的压测数据 n 寻找拐点 n 调整consumer/producer参数(网络线程/业务线程等),提升处理能力 n 重新调整测试驱动压力(加大或减小),重复前面步骤 n 输出最终性能拐点时的各项参数,包括TPS/时延/CPU/带宽等等 hell 实践案例—华为消费者云 异步场景1:降低长流程/复杂业务流程时延 异步场景2:CPU资源使用率低、性能要求高 异步场景3:需要配置较长超时时间的接口 异步场景4:多个微服务级联调用 性能对比测试: 采用Reactive异步模式之后,TPS提升 43% 左右 时延降低 28% 左右,CPU占用降低 56% 左右 总结 n 根据业务场景选择,可同时使用; n 必须关注整个调用链路,不能只关注通信。0 码力 | 33 页 | 5.68 MB | 1 年前3解读Apache
org/foundation/policies/conduct.html 许可协议是关键 许可协议是关键 起源 — 当代码被创造出来时,需要建⽴许可协议 商标 — 不可以与已经存在的名称有冲突 软件许可 — 现有代码,测试,⽂档需要知识产权的拥有者 需要将软件许可赋予Apache 贡献者协议 — 在Apache的贡献需要遵循贡献者协议: 版权, 专利, 分发/修改 Apache协议 Apache协议 万能捐献者 使⽤JIRA或者Github issue来追踪与开发相关的 问题。 源代码管理 — 浏览系统中向公众开放的所有部分。只有代 码提交者可以通过PMC指定的流程做出改变。 编译/测试 — 现在⼤多数项⽬都包含持续集成构建和测试流 程。 建⽴⽹站 — 每个项⽬都有⾃⼰独⽴的⽹址 https://project.apache.org 社区⻆⾊ 社区⻆⾊ ⽤户 — ⽤户是项⽬存在的意义,没有⽤户意味着项⽬不应0 码力 | 43 页 | 4.89 MB | 1 年前3微服务架构及ServiceComb实践
• 每个服务相对较小并比较容易开发维护。 • 服务可以独立的部署。 • 更适合小团队(个人)开发管理 • 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站]0 码力 | 14 页 | 2.04 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
• 每个服务相对较小并比较容易开发维护。 • 服务可以独立的部署。 • 更适合小团队(个人)开发管理 • 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站]0 码力 | 15 页 | 1.46 MB | 1 年前3微服务创新新品发布
通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 面对用户痛点持续创新 3 github.com/apache?q=servicecomb servicecomb.apache.org 服务网格-Mesher https://github.com/go-mesh/mesher SpringCloud …… ServiceComb toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件开发商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同企业遗留系统微服务化快速改造,实现基于契约的数据、服务标准化管控 微服务契约工具 https://github0 码力 | 12 页 | 2.96 MB | 1 年前3
共 31 条
- 1
- 2
- 3
- 4