微服务设计原理与架构
上QQ阅读APP看书,第一时间看更新

第1章 直面微服务架构

随着近年来软件行业(尤其是互联网行业)飞速发展,一方面以电子商务、O2O、移动医疗、在线教育等为代表的互联网和互联网+应用对软件行业的业务结构和体系造成巨大冲击,另一方面,快速的业务更新和产品迭代也给系统开发过程和模式带来新的挑战。业务需求层出不穷且不断变化、技术发展和创新日新月异、团队规模从无到有快速扩张、系统的复杂性以及对行业变化的快速应变能力等成为软件开发的核心问题。围绕这些来自于外部与内部的压力和动力,如何更为合理地划分系统和团队边界、如何更加有效地组织系统开发过程、如何通过技术手段识别和消除开发过程中的浪费成为广大软件开发和技术管理人员需要思考的命题。

针对这些命题,我们的思路首先是根据业务划分系统和领域的边界,对一个大而全的系统进行分而治之,通过一些功能边界明确、业务高度抽象的模块或组件之间的组装去形成更大的业务体系。其次,在系统和领域内部,同样需要对业务体系进行合理建模。通过建立服务体系对服务进行一定拆分和集成,从而降低业务实现的复杂性,并提高服务交互的灵活性。再次,通过服务拆分和集成的手段也可以推动研发团队组织架构的优化,并促进系统持续交付工作的有效开展。围绕这些解决问题的思路,微服务架构(Microservices Architecture)为我们提供了一种具体的解决方案。

所谓微服务(Microservices),就是一些具有足够小的粒度、能够相互协作且自治的服务体系。每个微服务都比较简单,仅关注于完成一个具体业务功能并能很好地完成该功能,而这里的功能代表都是一种业务能力。构建微服务体系需要一套完整的方法论和工程实践,而微服务架构代表的是实现微服务体系的架构模式,即为我们提供了这些方法论和工程实践。通过微服务架构,软件开发过程能够得到改善,开发效率能够得到提高,从而创造更为优秀的产品和用户满意度。微服务架构的提出代表着一种新的架构设计风格和模式,从这个角度讲,微服务架构需要我们理解、学习并应用到日常开发过程中去。但是微服务架构又不是一种完全打破现有技术体系、从无到有所诞生的替代性架构,而是在现有面向服务架构、企业服务总线等思想和技术体系的基础上,伴随着持续交付、虚拟化和容器技术的发展自然而然产生的一种软件设计和架构模式。

微服务架构的基础是分布式系统。本章从分布式系统出发,围绕微服务架构的基本概念展开,讨论微服务架构与现有架构体系之间的对比,并给出构建微服务架构的系统方法。同时,微服务架构有其优势,但在实施过程中也会面临各种各样的挑战,本章对微服务架构的这些特点也做了分析。