前言
在当今的数字化经济时代,微服务架构已经成为公司业务构建的主流架构模式,代表了未来的技术发展趋势,同时微服务也成为开发者的必备技能。
微服务经过了长足的发展,在每个阶段所产生的信息都很多。在信息爆炸的当今,找到一份将信息梳理得井井有条的资料,是提升学习效率的最佳途径。
今天推荐的这份资料,层次分明,分为原理篇、实践篇和进阶篇,适用于更广泛的人群。理论篇对新手入门非常友好,实践篇非常适合在工作中解决实际问题的开发者,进阶篇则面向响应式编程和云原生架构,是高手的必备技能。
这份资料不仅适合初学者深入理解微服务架构,也可以作为团队管理者或者架构师进阶微服务架构的技术参考手册。
原理篇
目前不仅各大互联网公司已经在大规模地应用微服务架构,而且传统行业也逐渐接受了这种架构模式,纷纷开始采用微服务架构构建业务系统。为什么微服务架构会如此受欢迎?微服务架构是设计而来还是演变而来的呢?要了解这些问题,我们需要从现代经济模式和企业组织架构入手来了解微服务架构崛起的时代背景。
有些公司对微服务架构存在着“盲目崇拜”,大型企业在做微服务架构上的成功更加增加了人们转型微服务架构的信心,但是大公司的技术实践未必适用于你所在的公司,我们有必要重新审视微服务架构,了解微服务的采用前提。
领域驱动设计的软件思想体系和方法论可以用于指导微服务建设模式、微服务划分、微服务架构设计等相关工作,它可以促使技术人员与领域专家达成共识,构建领域边界合理、具备明确界限上下文、关系注点分离、独立自治的微服务。
实践篇
微服务本身是一种架构风格,也是指导组织构建软件的一系列环节佳实践集合。然而,业务团队在拆分应用后,会产生更多细粒度增幅务,并面临这些服务在分布式网络环境中的复杂性。如何专心事业无逻辑而不陷入微服务架构的技术细节,对开发者来说是一大难题。
在微服务架构中,帮助开发者快速构建应用的脚手架技术无疑是非常重要的。以Spring Boot为代表的基底技术在继承了Spring框架思想的同时将简洁便利、约定优于配置、开箱即用等特性进一步发扬光大。然而仅仅依靠Spring Boot还不足以支撑微服务架构应对服务高可用、服务动态配置、服务高可扩展、服务负载均衡、服务容错与隔离等非功能需求,我们还需要相关基础设施提供服务治理及管控能力。
系统集成是相对拆分而言的,当巨石型应用拆分为细粒度的微服务后,错综复杂的代码可以分解为独立的模块加以治理。然而,传统应用内部原本基于方法的调用方式可能会转变为跨进程的分布式网络调用方式,网络的不可靠性给服务模块之间的交互带来了复杂性。所以,微服务系统的集成对微服务架构能否成功落地至关重要。
在微服务架构下,对于数据一致性的处理,强调一致性的事务管理机制不一定是适合的解决方案,之前单体架构下强一致性的事务模式在微服务架构中可能会带来一系列性能损失和数据一致性问题与挑战战。微服务架构有很多不同的设计考量,它强调去中心化的数据治理理念,更强调每个微服务都拥有自己独立的数据存储,而不同服务在数据共享方面需要采取一定的策略和补偿方式来保证数据的一致性。通过对TCC、Saga等模式的介绍,我们可以了解当前微服务架构数据的最种一致性解决方案。
目前,越来越多开发者采用微服务进行软件构建和云原生架构的开发,对自动化运维工具的需求也越来越大。微服务拆分后,细粒度的服务足够小,可以独立部署,能做到对变化及时响应,持续集成和持续部署成为微服务规模化交付的基石。本章我们将介绍软件交付的演进历史,同时会探讨微服务采用什么工具保证持续集成与持续交付,最后介绍脱胎于微服务架构思想的容器技术如何来帮助微服务持续集成和交付。
微服务的引入会带来分布式下服务监控和服务治理的技术挑战,之前系统内部的方法调用转变成分布式网络下的RPC,对于服务之间的交互集成和架构设计有更高的约束和要求。面对规模化的容器集群部署、不同种类的监控数据类型、海量的微服务,服务监控和服务治理成为微服务控制系统的关键组成部分。
进阶篇
响应式编程(Reactive Programming)是相对于命令式编程的一种全新的编程模型,是基于数据流变化传播的编程范式。响应式编程具备快速响应、不可变性、高并发、异步非阻塞、规模扩展、代码可读性高等诸多优势。Java编程领域出现了众多基于响应式流规范的编程开发框架。本章我们会从响应式编程动机、响应式编程基本概念、响应式宣言开始介绍,引出响应式编程的基本特性(数据流、背压等)和核心概念。
Kubernetes作为分布式容器编排及管理系统,本身采用了微服务的架构设计思想和理念。本章我们会简单介绍Kubernetes的基本概念和关键组件,同时讲解Kubernetes与Spring Cloud的生态融合。
随着Docker技术的普及和Kubernetes在互联网公司的大量部署与使用,微服务架构正在围绕应用如何易于开发交付、减少资源消耗、无侵入治理等方面进行变革和演进。本章我们将讲解云原生架构、Service Mesh技术、无服务器架构(Serverless)技术。
趋势与未来
目前,微服务技术的发展趋势是对基础设施层的进一步沉淀,实现现 业 务 与 微 服 务 底 层 架 构 运 行 时 的 分 离 。 以 Service Mesh 、Serverless技术为代表的事件驱动形式的微服务架构,将成为下一阶段微服务的发展趋势和重点关注领域。随着云原生平台的重塑,微服务将进一步演进,平台将使开发人员更加专注于业务逻辑实现,抽离的基础服务将极大地提升开发人员的生产力,围绕着微服务、云原生基础设施、演进式架构,这里既充满挑战,也将会迸发出更多的生机与机遇。
专家引言
本书结构清晰,从原理、实践、进阶三个方面对微服务架构进行深度解析。涵盖内容丰富,从领域驱动设计到微服务治理,从SpringCloud生态到响应式微服务架构体系建设。如果你正在进行Java微服务架构设计,或者正打算快速学习基于Spring Cloud的微服务架构,本书将为你节省许多宝贵的时间。
——黄勇 《架构探险》作者,阿里巴巴高级架构师
需要的请移步主页