直面PHP微服务

高驰涛 (Neeke Gao),云智慧Technical VP,PHP/PECL开发组成员,具有10余年研发管理经验,同时也是PECL/SeasLog、PECL/JsonNet、GoCrab等多项开源软件的作者。2014年加入云智慧,致力于APM与大数据产品的架构研发,崇尚敏捷、高效。几年之前某CTO的一个问题谈起,这个问题是“我们的系统将会拥有五千个微服务组件。我们应该怎么做?”大家可以仔细思考这个问题,我们都知道一个接口肯定无法称之为微服务,达到十几个接口或许才能够叫做微服务。那么,对于包含五千个微服务的系统而言,又该怎么实现和管理呢?其实,这样的系统背后会存在很大的问题。 本次分享将会主要围绕以下三个方面内容展开:微服务的前世今生,微服务的挑战,应该怎么面对
展开查看详情

1.直⾯面PHP微服务架构挑战 2019-04-20

2.NeekeGao neeke@php.net SeasLog/JsonNet/SeasX

3.“我们的系统将会拥有五千个微服务组件。 我们应该怎么做?” –某CTO如是说

4.微服务的前世今⽣生 微服务的挑战 应该怎么⾯面对

5. TOGAF DDD SOA GRASP原则 •1995/美国国防部 •精简的业务 • 信息孤岛 •⾃自⼰己⼲干⾃自⼰己的事 •企业架构域 •回答业务是做什什么的 • 业务重⽤用 •⾃自⼰己⼲干⾃自⼰己能⼲干的事 •ADM •不不断迭代 • 互联互通 •⾃自⼰己只⼲干⾃自⼰己的事 •企业连续 教科书:微服务架构是⼀一种架构模式,它提介将单⼀一应⽤用程序划分成⼀一组⼩小的服务,服务之间互相协调、互相配合,为⽤用户提供最终价值。每个服务运⾏行行在其独⽴立的进程中,服务与服务间采⽤用轻 量量级的通信机制互相沟通(通常是基于HTTP协议的RESTFul API)。每个服务都围绕着具体业务进⾏行行构建,并且能够被独⽴立的部署到⽣生产环境、类⽣生产环境等。另外,应当尽量量避免统⼀一的、 集中式的服务管理理机制,对具体的⼀一个服务⽽而⾔言,应根据业务上下⽂文,选择合适的语⾔言、⼯工具对其进⾏行行构建。 词条:微服务架构是⼀一项在云中部署应⽤用和服务的新技术。⼤大部分围绕微服务的争论都集中在容器器或其他技术是否能很好的实施微服务,⽽而红帽说API应该是重点。 微服务可以在“⾃自⼰己的程序”中运⾏行行,并通过“轻量量级设备与HTTP型API进⾏行行沟通”。关键在于该服务可以在⾃自⼰己的程序中运⾏行行。通过这⼀一点我们就可以将服务公开与微服务架构(在现有系统中分 布⼀一个API)区分开来。在服务公开中,许多服务都可以被内部独⽴立进程所限制。如果其中任何⼀一个服务需要增加某种功能,那么就必须缩⼩小进程范围。在微服务架构中,只需要在特定的某种 服务中增加所需功能,⽽而不不影响整体进程。

6.使⽤用微服务架构,我们得到了了什什么 敏敏捷迭代(开发\测试\维护) 易易于扩展和收缩 多技术栈可能 ⾼高可修改性

7.“微服务架构,你的系统变得健壮了了吗” “使⽤用微服务让系统变得更更快了了吗”

8.微服务架构⾯面临的挑战和思考

9. 1. ⼩小即是多 数据资源 多节点/服务/状态 业务功能 服务对象

10. 2. 债务管理理 单元测试 集成回归 版本管理理 迭代冲刺刺 Bug Crash 回归总结

11.3. 复杂的服务依赖 服务发现 依赖唤醒 灰度发布 AB测试 多版本共存

12.4. 消息通讯 统⼀一标准 消息中⼼心 通讯⽹网关

13. 5. 分布式事务 分布式消息(事件驱动) 2PC(投票 -> 执⾏行行) 最⼤大通知(定期校对) 3PC(Can -> Pre -> Do) 两阶段补偿TCC(Try/Confirm/Cancel)

14.6. 花式故障 容错 灾备 物理理监控 状态监控 主动拨测 全链路路追踪

15.7. 中⼼心与去中⼼心 配置中⼼心 发号中⼼心 ⽇日志中⼼心 调度中⼼心 状态中⼼心 预警中⼼心

16. 8. 组织危机 信任危机 过期维护 多语⾔言栈 沟通协作 安全⽹网关 轮岗结对

17. 微服务不不是银弹。 不不要让重复的事情做两次。