前言/序言
自序
为什么要写这本书?这可能与我的经历和接触到的一些事情有关。
2014年算是微服务元年,我接触微服务晚一些,大概是在2015年。因为以前从事过架构工作,对SOA也有一定的研究,所以刚接触微服务时,同很多架构师一样,第一反应就是——这不就是SOA的一个变种吗?无非就是把服务的颗粒度放小而已。后来在具体了解和应用微服务技术的过程中,才知道其实两者还是有非常大的区别的。
虽然接触微服务晚一些,但是在实际工作中,我却无意间利用微服务原理解决了一些实际问题。2012年,我工作的单位有一个多服务的产品系统,这个产品系统是一个实时7×24小时系统,对于稳定性、可靠性、实时性和可追溯性的要求非常高,而且在某段特定的时间内还会出现类似“秒杀”的业务场景。可是该产品系统内多种服务混杂,业务逻辑代码和技术代码互相渗透,这导致调试、测试、实施都非常困难,尤其是一旦出现了Bug,非常难以定位,以及新增一个需求,比“登天”还难。于是我把这些业务按照组件化模式进行了拆分,当时主要是从技术层面上解决问题,首先把消息服务器、业务服务器、接口服务器、应用系统分开,实现了几个服务器的物理隔离,应用之间通过消息机制进行交互,从理论上杜绝了各个程序代码的交叉渗透,实际上这可以看作抽象地拆分服务的行为。通过这种处理,各个服务应用各司其职,而且当时这项技术还被授予了一项发明专利(授权编号为CN103731479B)。除此之外,在具体的工作中还存在着一个业务场景,当时单位的产品要外接其他厂商的多种接口业务,而外部多变的接口协议与内部稳定、可靠的逻辑实现之间存在矛盾。为了解决这对矛盾,我设计了一个网关,其主要作用是隔离外部与内部接口,松耦合内部与外部关系,通过插件机制进行扩展,网关的功能是实现协议的转换以适配操作行为、代理路由、异步缓存等,这项技术也被授予了一项发明专利(授权编号为CN103944814B),其实这就是微服务的API网关内容。
微服务刚出现时资料非常少。后来微服务发展起来了,各种名词和概念也“横空出世”,一方面让人感到眼花缭乱,另一方面也使很多用户手足无措,不知从何入手。截至目前,市面上已经有很多微服务相关的书籍,都非常不错。其中大部分书籍都是从一个方向或者一个技术点去描述微服务的,从某个方向或某个技术点来说,它们都非常有价值。可是我们不仅应该了解微服务的这些内容,还应该从整体上了解和把握微服务,知其然更要知其所以然。这正是我写这本书的初衷。
本书主要是从整体系统的角度介绍微服务体系结构的,对于每个组成部分的具体实现,没有进行深入的说明和解释,因为每个具体模块的资料和书籍都很多,这些也不是本书重点讨论的内容。另外,本书中也针对某个具体关注点进行了一些深层次的描述和说明,但这主要是为了更好地诠释整体的概念和结构。
通过阅读大量的资料,我学习了很多知识,结合自己20多年的工作经验,经过多轮的反思和总结,最终形成了本书。从事IT工作多年,我经历了一个又一个技术时代,从一个平台看到了另一个平台。在这个过程中很多同行都脱离了这支队伍,而我还在努力坚持着。
在此,我要感谢家人对我的理解和支持,感谢我的妻子多年来对家庭的付出,同时也要感谢我的两个女儿在我撰写书稿的时候没有影响我,以及感谢我的父母,我把这里的一切都献给他们。我还要感谢本书的编辑们,没有她们耐心的指导和完善本书内容,这本书也许只是一个读书笔记。最后,我要感谢那些在我编写本书的过程中帮助过我的所有人,他们都是默默无闻的后台工作者。
任 钢
2018年12月于广东深圳
前言
读者对象
本书适合希望从初级技能水平提升到高级技能水平的读者阅读。只要是对微服务感兴趣,并且想在这方面获得更多知识或者有更多想法的人们均可使用本书。
初级读者,是指接触或使用过微服务框架,有微服务应用经验的软件开发工程师、需求分析师、运维工程师等,同时也包括一些对微服务感兴趣的学生。本书可以作为大学、培训中心微服务方面的教材或课外读物。
中级读者,是指有丰富开发经验的软件开发工程师、需求分析师、运维工程师等。这些读者可以在本书中获得更全面的认识,全面地、整体地、辩证地、系统化地认识微服务。
高级读者,是指有丰富经验的架构师和分析师。这些读者可以通过本书从更深层次去理解微服务的本质和核心,以及如何游刃有余地解决实际工作中的架构问题。
本书也适合IT行业管理者,如CTO、CIO、技术总裁、技术总监、研发总监、信息总监等。通过了解微服务的整个蓝图,IT管理者可以在企业或组织微服务体系建设中做出高质量的决策。
本书尤其适合那些在微服务领域有一定经验的工程师,可满足其需要进一步拓宽视野、提高层级的要求。
本书定位
本书采用理论结合实际的方式,针对具体问题进行分析,并进一步解决问题。因此,本书是一本实践和操作性很强的书籍。本书既可以作为学习微服务的教材,也可以作为架构师的参考手册。
本书从整体上讲述微服务的技术、架构、框架、业务整合、管理整合和规划实施。书中存在对某个领域的细节描述,但只是为了论述整体结构范畴而提供的具体案例论据。因此,看完本书后,读者会对微服务有一个整体、深层次、体系化的认识。对于市面上大部分的微服务框架的资料或书籍,读者可以分门别类,根据自己具体要解决的细节问题,有的放矢地去寻找相关的资料和书籍来进行学习。
本书不是一本入门书籍,阅读本书需要具备一定的基础知识,否则,有些术语和解释还是比较难理解的。读者最好具有一定的计算机基础知识,例如,分布式、容器技术、软件工程、项目管理、软件架构知识等,这样才能有更大的收获。
如何使用本书
本书可以为不同层次的微服务使用者提供指导和帮助。
初次采用微服务框架的读者,可以从整体上了解整个微服务的大致轮廓和状况,然后选择自己比较感兴趣的内容进行阅读。初步了解微服务的总体概况后,针对自己的专业和实际工作要求,有的放矢地进行“专攻”。
中级层次的读者,也许有非常丰富的微服务应用经验,也许在应用某个微服务框架方面娴熟无比。在本书中,这些读者可以拓展自己的知识面、开阔自己的视野,在思维上进行整合并融会贯通,抽象出自己的概念和体系。中级层次的读者通过对本书的学习,可以在归纳和总结方面上一个新的台阶,达到更高的抽象层次,从工具使用者转变为方法的传播者。
高层次的读者,也许在微服务方面有深度的思考,也许在技术层面上不存在任何问题,那就在微服务整体规划上、在业务分析上、在实践落地上或者几个体系的完美整合上,进行一些深层次的提高。
同时,现阶段在微服务领域中还存在很多课题属于真空区,本书也给出了一些线索,期待着资深专家去深入研究和实践印证。
IT行业的领导,主要是指技术公司的CTO、信息化公司的CIO等,这些管理者由于已经不在一线工作,对于一线工作中出现的各种名词概念,可能在细节上还是有点模糊,而本书提纲挈领地阐述了微服务的体系架构,这就可以使IT行业的领导从一个新高度迅速地了解和掌握整个微服务的状况,然后在战略层面上做出适合公司或组织的微服务体系建设的决策。
本书结构
本书主要包括5个部分:第1部分微服务体系概述、第2部分微服务技术体系、第3部分微服务业务体系、第4部分微服务管理体系和第5部分微服务体系建设实践,共12章。
本书的讲解顺序:首先介绍了微服务体系的基础知识,使读者了解微服务体系不是一门技术,不是一个项目,也不是一种管理手段,而是一套体系,一个覆盖了技术层面、业务层面和管理层面的综合体;其次介绍了微服务的技术体系,这是技术话题,也是技术架构师或开发工程师比较喜欢的领域,主要讲述了微服务的实现技术、微服务的技术架构和可供选择的微服务技术框架;然后介绍了微服务的业务体系,主要从业务角度分析了微服务的架构,提出了业务微服务的概念并采用了一些架构来实现这一概念,包括领域驱动设计、六边形架构、DCI架构等;接着介绍了微服务的管理体系,分别从组织、研发流程、规范、度量等管理方面说明如何支持微服务;最后的内容是针对产品或平台进行微服务的规划、设计、实施和运维活动及实践等。
第1部分,微服务体系概述。这一部分是本书的纲要,包含两个章节,分别是第1章和第2章。
√ 第1章,微服务概述。首先从微服务的演化历史开始描述;其次简单介绍了微服务和微服务架构(MSA)的基本概念,以及MSA和SOA的比较;然后阐述了关于微服务的一些辩证关系;最后对微服务未来的方向做了一个探讨性的论述。
√ 第2章,微服务体系概况。首先介绍什么是体系化;其次是采用微服务所期望达到的愿景;然后从整体性、结构性、综合性和动态性等体系化角度分析并形成微服务的体系化结构;接着阐述了微服务体系与云原生架构的区别,以及微服务体系与API开放平台的关系;最后简述了微服务体系的生态系统。
第2部分,微服务技术体系。这一部分主要从技术角度来介绍微服务,包含3个章节,分别是第3~5章。
√ 第3章,微服务技术体系及实现技术。主要从4个方面来讲解,分别是微服务技术体系概述、微服务体系中的实现技术、集成平台自动化工具和基础设施环境。
√ 第4章,微服务技术架构体系。首先介绍微服务技术架构体系概念,微服务技术架构体系包括微服务运行时的服务架构、基础架构、后端架构等组成部分;其次分别介绍了不同架构的组成部分,重点介绍了微服务运行时的基础架构,分别是服务发现和注册组件、API网关组件、服务容错组件、服务监控告警日志组件、认证授权组件、统一配置管理组件等,详细说明了这些组件的内容、原理、构成及其相关的解决方案;最后简单分析了微服务技术架构的设计模式。
√ 第5章,微服务技术框架体系。微服务技术框架的数量可以用车载斗量来形容。为了更好地区分这些框架,首先对技术框架进行了分类,主要包括开发型微服务基础框架平台、运维型微服务基础框架平台、Serverless型微服务基础框架平台、微服务开发框架平台四大类型;然后把现阶段一些常用的技术框架分门别类地适配上去,其中重点介绍了Netflix微服务框架、Spring Cloud微服务框架、Kubernetes微服务框架、AWS Lambda无服务基础框架和Spring Boot开发框架。
第3部分,微服务业务体系。这一部分主要从业务角度来描述微服务,包含两个章节,分别是第6章和第7章。
√ 第6章,微服务业务体系概述。首先介绍微服务业务体系的概念、业务微服务的5个特征,以及微服务业务架构体系的定义;其次说明业务微服务的核心问题—边界和颗粒度大小;最后诠释业务微服务的内部构成、内部设计模式和外部关系集成。
√ 第7章,业务微服务分析设计方法论。首先从总体说明业务逻辑概念,描绘业务场景;然后分别从普通服务模式、领域驱动设计模式、六边形架构模式、Clean架构模式、DCI架构模式、CQRS架构模式对业务微服务架构进行分析和设计。
第4部分,微服务管理体系。这一部分主要从管理角度描述微服务,包含3个章节,分别是第8~10章。
√ 第8章,微服务管理体系概述。主要内容包括微服务应用的成熟度级别、微服务标准规范、微服务工具、微服务文化和度量指标、微服务的组织机构和开发/运维流程等。重点介绍了微服务应用的成熟度级别、微服务应用的“12要素”原则、微服务标准规范和微服务的8个主要度量指标。
√ 第9章,微服务应用的组织、人员和文化。主要讲述在微服务的影响下,对组织、人员和文化应进行适当调整。
√ 第10章,微服务的开发和运维流程。围绕着DevOps来描述基于微服务架构下的开发和运维流程的变化和支撑。
第5部分,微服务体系建设实践。这一部分的内容是主要针对产品或平台进行微服务改造的规划、设计、实施和运维活动及实践,包含两个章节,分别是第11章和第12章。
√ 第11章,传统架构迁徙到微服务架构。主要讲述传统架构迁徙到微服务架构的必要性、需要考虑的问题、策略和实施流程,包括现阶段大部分产品或平台所面临的问题和解决方案。
√ 第12章,新建系统的业务微服务全生命周期过程。主要讲述业务微服务全生命周期过程,包括产品或平台微服务化需要考虑的问题和建设步骤。
勘误和支持
由于笔者水平有限,书中的纰漏和错误在所难免,希望广大读者能给予批评和指正。笔者的联系方式是rengang66@sina.com。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
√ 下载资源:本书如提供示例代码及资源文件,均可在 下载资源 处下载。
√ 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
√ 交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/36872