老司机孙宏亮带你与 Chris Richardson 面对面探讨微服务

Chris Richardson 是谁?

chris-circle

Chris Richardson,世界著名的软件大师,DaoCloud 首席微服务技术专家,经典技术著作《POJOS IN ACTION》一书的作者。他的研究领域包括 Spring、Scala、微服务架构设计、NoSQL 数据库、分布式数据管理、事件驱动的应用编程等。Chris Richardson 与 Martin Fowler、Sam Newman、Adrian Cockcroft 等并称为世界十大软件架构师。

本文将通过老司机孙宏亮对 Chris Richardson 的深入采访,带大家探索微服务领域的前沿趋势和微服务的最佳实践。

与chris面对面-900x500

问题 1:

孙宏亮:微服务演进的过程中,运维的工具和演进很重要。除此之外,想听听 Chris 对培养开发团队的文化和自成长过程的经验。另外,对于没有经历过敏捷的团队,在微服务实践中有怎样的挑战?

Chris Richardson:对于企业组织而言,从传统模式(单体应用,瀑布式开发等)到现代化模式(微服务,敏捷式开发,DevOps 等)是一个主要的变化。总体而言,整个转变过程需要非常谨慎地对待。首先,对于决策者而言,需要有能力认识到,这个过程可能会影响到一部分员工的感受和利益。因为,这意味着他们将从以前熟悉的流程转向完全不熟悉的流程。在某些场景下,他们的工作发生了相当大的变化,比如一位系统管理员,过往习惯于手工配置一切。同时,我们应该鼓励员工们进行创新与实践,尽管有时候无可避免会造成无功而返。

问题 2:

孙宏亮:对于传统企业而言,微服务的演进过程分成几个阶段?不同阶段的度量指标有哪些?希望 Chris 能从时间的维度进行分析,并给我们一些切实可行的建议?
Chris Richardson:坦率地讲,微服务的演进并无严格定义的所谓的“阶段”。企业中,在软件架构的初期,最初肯定会拥有一个单体应用。在迈向微服务的过程中,企业需要开启增量的开发流程,将其内部的单体应用重构成多个服务。为达到这个目标,企业可以在引进新功能的时候,实现新的服务,而不是在原有的单体应用中添加新功能;同时也可以将单体应用的多个功能模块拆分为多个服务。一直践行这种思想,随着时间的推移,服务的数量将逐渐增长,而单体应用的规模毫无疑问也将快速缩水。

问题 3:

孙宏亮:微服务实践中的一大难题是分布式系统的复杂度,在解决分布式数据一致性上,有哪些实践方案,以及优劣势各是什么?实施的复杂度上有什么区别?
Chris Richardson:在一个微服务架构中,每一个服务都拥有自己的数据库。因为两阶段提交 2PC(分布式事务)在现代化应用架构中并不是一个可行的方向,2PC 在保证数据一致性方面有很大的挑战。相反,应用特别需要事件驱动来达到数据的一致性。无论何时,一个服务需要更新它域内的数据,都会发布一个相应的事件。其他的服务都可以订阅此事件,然后更新域内对象。我个人的推荐是,无论何时域内对象发生变化时,通过 Event-Sourcing 来生成事件,这也是用来写业务逻辑的方式。

问题 4:

孙宏亮:随着服务数量的增加,服务的管理和分层的机制也会出现,为了提高效率和重用,这种趋势会不会演进成我们以前讨论的中心化,统一框架的方式?Chris 老师有什么见解?
Chris Richardson:基于微服务的应用往往会采用更加轻量级的服务治理模型。企业架构师最先担忧的是服务之间的交互,而不是每个服务内部的具体实现。而开发者在实现一个服务的时候,常常负责内部实现的技术栈。然而,为了防止出现服务混乱的现象,在选择技术栈的时候,常有一些比较易于理解的限制。企业可以依赖于一个源代码控制系统来达到可控的目的,比如说 Git 协议。因为 Git 中的一些 repo 就显性地描述了一个可用的服务。服务间的交互方式可以通过使用类似于https://www.weave.works/products/weave-scope/  的技术来实现,而这里的技术看起来更专注于网络的控制。

问题 5:

孙宏亮:如今,我们经常会把 Docker 作为软件演进过程中,使用最成功的工具。在微服务领域,从哪个角度来看,Docker 和微服务的结合可以实现惊人的价值?
Chris Richardson:在服务打包和部署方面,有很多种不同的实现方案,包括:虚拟机(VM),还有 Docker 容器等。而 Docker 容器更是拥有其得天独厚的优势。Docker 容器其实在很多方面比虚拟机更为便捷,一方面它是自包含的,同时也提供很好的隔离和管理便捷性。另外,和虚拟机不同的是,容器更加轻量级。它们尤其构建快速,创建简便,还有运行秒级。另外,Docker 容器同样是一个移植性非常棒的打包模式。

老司机孙宏亮|毕业于浙江大学,现为 DaoCloud 技术合伙人,在 DaoCloud 主要负责企业级容器云平台的研发工作。数年来一直从事云计算领域,是国内第一批研究和实践 Docker 的工程师,在国内起到重要的 Docker 技术布道作用。目前,拥有个人著作《Docker 源码分析》,同时是 Docker Swarm 项目的全球 Maintainer,并对 Docker 等其他项目有着大量的代码贡献。

 

Leave a Reply

Your email address will not be published. Required fields are marked *