2017 年 10 月 29 日,由又拍云、Spring Cloud中国社区联合主办的 Open Talk No.38 进击的微服务架构实战派·北京站在北京优客工场顺利举行。

凭借能够独立部署、水平扩展、独立访问的特性,围绕着业务组件创建应用、强调组件化和服务化的微服务大受欢迎。Spring Cloud作为一套分布式服务治理的框架,已经得到许多微服务领域专家的认可。

image.png

本次Open Talk邀请了王新栋、吴晟、王东、殷湘等4位来自京东、华为、融数数据的微服务专家,为到场嘉宾和直播观众提供了关于微服务和Spring Cloud的精彩分享。

  • 王新栋(京东商城京麦平台架构师):《构建高可用网关之容错实践》
  • 吴晟(华为软件开发云分布式性能监控产品专家、Skywalking APM 创始人):《构建Skywalking实现全链路监控》
  • 王东(融数数据北京研发中心CTO):《微服务下的APM全链路监控》
  • 殷湘(华为中央研究院开源能力中心微服务架构师):《微服务场景下的数据一致性解决方案》

API网关的作用:接入、调用、隔离、降级、限流

自从微服务概念以来,众多的软件架构在践行着这一优秀的设计理念。各自的系统在这一指导思想下收获了优雅的可维护性,但一方面也给接口调用提出了新的要求。比如众多的API调用急需一个统一的入口来支持客户端的调用。

image.png

京东商城京麦平台架构师王新栋介绍了京麦平台处理众多API的思路——API GATEWAY(API网关)。将接入、路由、限流等功能统一由API网关负责,各自的服务提供方专注于业务逻辑的实现,从而给客户端调用提供了一个稳健的服务调用环境。王新栋认为,在API网关调用大量 API 的情况下,还要保证 API 网关的可降级、可限流、可隔离等等一系列容错能力。

在分享中,王新栋介绍了 API 网关如何通过抗量、脱离DB、多级缓存、重试、熔断,以及隔离、降级、限流等方式,提升 API 网关的容错能力;“保证一个网关在大访问量的情况下更好的支持客户端的调用,在突发情况下能及时的响应这种突然的异常,并将错误最小化,防止级联故障。”

用 Skywalking 实现全链路监控

微服务的架构决定了接入的业务模块会非常多,这就需要一个可靠、稳定的全链路监控系统。华为软件开发云分布式性能监控产品专家、Skywalking 创始人吴晟在活动中详细介绍了支持自动探针和手动探针的分布式追踪系统 Skywalking。

image.png

据吴晟介绍,Skywalking是一个完全基于自动探针,并且提供手动探针支持的分布式追踪系统,目前已经支持了30多个Library。“我们会一起去努力把这个标准推广,让所有的Tracer之间能够在一定程度上共享这个信息。”

吴晟还在现场演示了Skywalking的demo,展示Skywalking如何支持Spring Cloud。

APM:实现微服务全链路监控的另一个思路

微服务带来了依赖关系复杂、持续交付、容器化环境等挑战,APM也是实现全链路监控的思路之一。融数数据北京研发中心CTO王东目前负责公司大数据平台、微服务框架以及DevOps平台的研发工作。王东在APM方面有着丰富的经验,介绍了微服务之下如何实现APM全链路监控。

image.png

APM即应用性能管理,属于IT运维管理范畴,主要是针对企业关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。APM拥有多级应用性能监控、应用性能故障快速定位、应用性能全面优化等特征。

微服务的应用使得APM数据收集的成本大幅度提高,以及大量的监控数据对后台数据处理分析的产生影响,同时传统APM 缺少对对于可视化和关联分析方面的支持。王东的分享中介绍了如何构建一个能够适用于微服务的APM平台,以及打造“开发+部署+监控+告警+保障”闭环的经验。

通过 ServiceComb-Saga 项目实现数据一致性

数据一致性是构建业务系统需要考虑的重要问题, 以往大多是依靠数据库来保证数据的一致性。但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题。


image.png

来自华为公司中央软件院开源能力中心的微服务架构师殷湘,在活动中介绍了如何通过 ServiceComb-Saga 项目来解决分布式环境下的数据最终一致性问题。

Saga 是一个长活事务,可被分解成可以交错运行的子事务集合;其中每个子事务都是一个保持数据库一致性的真实事务。

Saga 也存在一些限制:

  • Saga 只允许两个层次的嵌套,顶级的 Saga 和简单子事务
  • 在外层,全原子性不能得到满足。也就是说,Sagas 可能会看到其他 Sagas 的部分结果
  • 每个子事务应该是独立的原子行为
  • 每个事务都可以用对应服务的数据库保证原子操作。

与其他数据一致性的方案相比,Saga 比两阶段提交更易扩展。在事务可补偿的情况下,相比 TCC,Saga 对业务逻辑几乎没有改动的需要,而且性能更高。集中式的 Saga 设计解耦了服务与数据一致性逻辑及其持久化设施, 并使排查事务中的问题更容易。