阿里架构师首发:80W 字微服务架构手册 GitHub 上杀疯了
微服务架构是当前很热门的一个概念,是技术发展的必然结果。微服务架构也不是一个缥缈、空洞的术语,它的核心理念与架构原则是实实在在的,虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,稳妥地实施项目的微服务化改造或开发进程。
在互联网时代,在极端情况下每天都有新需求要开发上线。随着代码量及团队成员的增加,传统单体式架构的弊端日益凸显,严重制约了业务的快速创新和敏捷交付,与互联网所追求的“唯快不破”的目标越来越远。这就是微服务架构兴起的时代大背景。
为了帮助大家更好地了解微服务架构,且带领大家走进微服务架构之门。
今天小编就给大家分享一份阿里大佬总结出来的 80W 字微服务架构手册分享给大家!
手册总共分为 3 大篇章:
原理篇
实践篇
进阶篇
由于文章篇幅限制,小编会尽可能多地为大家展示目录及内容,完整文档已备好,感兴趣需要获取学习的朋友,点击此处【架构手册】,即可免费领取!
原理篇
第 1 章 微服务概述
微服务的概念来源于 Martin Fowler 的一篇知名博文:MicroServices。在博文中,“ 微服务架构”这个术语用来描述- -种将软件应用程序设计为可独立部署的服务套件的特定方式。
“细粒度自治服务”“自动化部署”“围绕业务能力”“端点智能”“语言和数据的分散控制”,从这些描述微服务架构特征的术语中,我们发现了-种越来越吸引人的软件系统风格。
第 2 章 微服务的采用前提
有些公司对微服务架构存在着“盲目崇拜”,大型企业在微服务架构.上的成功更加增加了人们转型微服务架构的信心,但是大公司的技术实践未必适用于你所在的公司,我们有必要重新申视微服务架.构,了解微服务的采用前提.
微服务会带来分布式下应用的开发、测试、运维等多方面的间题。拆分后的细粒度服务从原来进程内部方法调用转变为分布式跨网络调用,由此带来了更多的服务治理难题。从技术的角度看,需要根据项目的实际情况和业务场景等工程约束条件,决定是否采用微服务。
通过康威定律,我们知道组织结构与一个公司的技术架构存在着紧密的关联性。公司的数字化转型,不仅在技术上需要与时俱进,还要和企业的组织方式、管理流程的调整同步进行。公司能否围绕技术、组织、流程这些工程要素进行送代升级,是能否转型到微服务架构的前提。
第 3 章 微服务构建
微服务构建本质上是软件构建过程中长期演进积累的一系列理念、架构原则、工具和最佳实践。
领域驱动设计的软件思想体系和方法论可以用于指导微服务建模、微服务划分、微服务架构设计等相关工作,它可以促使技术人员.与领域专家达成共识,构建领域边界合理、具备明确界限上下文、关注点分离、独立自治的微服务。
实践篇
第 4 章 脚手架
微服务本身是一种架构风格,也是指导组织构建软件的一系列最佳实践集合。然而,业务团队在拆分应用后,会产生更多细粒度服务,并面临这些服务在分布式网络环境中的复杂性。如何专心实现业务逻辑而不陷入微服务架构的技术细节,对开发者来说是一一大难题。
本章将 介绍脚手架的概念,井介绍 JVM 环境下在技术成熟度、架构完整性、生态活跃度等方面都占据优势的微服务脚手架项目: SpringBoot.
第 5 章 关键技术
在微服务架构中,帮助开发者快速构建应用的脚手架技术无疑是非常重要的。以 Spring Boot 为代表的基底技术在继承了 Spring 框架思想的同时将简洁便利.的定优于配置、开箱即用等特性进一步 发扬光大.然而仅仅依靠 Spring Boot 还不足以支撑微服务架构应对服务高可用、服务动态配置.服务高可扩展、服务负载均衡、服务容错与隔离等非功能需求,我们还需要相关基础设施提供服务治理及管控能力.
Pivotal 公司的 Spring Cloud 可以说是 JWw 平台上微服务治理框架的集大成者。本章我们将详细讲解服务注册中心、服务配置中心。微服务网关三个微服务运行时的关键支撑系统。另外,将介绍 SpringCloud 组件依赖 Ribbon 及 Hystrix 模块如何实现负载均衡和熔断管理等。
第 6 章 系统集成
系统集成是 相对拆分而言的,当巨石型应用拆分为细粒度的微服务后,错综复杂的代码可以分解为独立的模块加以治理。然而,传统应用内部原本基于方法的调用方式可能会转变为跨进程的分布式网络调用方式,网络的不可掌性给服务模块之间的交互带来了复杂性。所以,微服务系统的集成对微服务架构能否成功落地至关重要。
微服务架构强调基于 HTTP 的轻量级的服务交互模式,这一章我们将这种基于请求/响应模式的交互模式与 RESTful 架构结合,介绍微服务“声明式 API"和契的优先的开发原则。同时我们会深入讲解主流 RPC 架构的实现原理和 RPC 通信方式的优势和缺点。
微服务架构的另外一种集成模式基于消息中间件的异步交互方式。这种交互模式无疑带给了微服务更多的灵活性和自治性,但也带来了复杂性,我们需要在使用场景中做出权衡,选择适合自己的消息中间件。
第 7 章 微服务数据架构
微服 务架构强调技术的多样性,选择最合适的技术解决业务的实际问题,这一原则同样适用于微服务数据存储领城。目前随着数据海量的增长、数据类型的多样性、对数据访间性能更快的诉求,关系数据库越来越不能满足用户的需求,于是 NoSQL 数据库应运而生。本章我们首先介绍数据分类,以及不同数据类型适合采用的不同数据存储技术,同时介绍 NoSQL 存储与关系数据库的主要区别和特性.
在微服务架构下,对于数据一致性的处理,强一致性的事务管理机制不- - 定是适合的解决方案,之前单体架构下强- -致性的事务模式在微服务架构中可能会带来--系列性能损失和数据一-致性间题与挑.战。微服务架构有很多不同的设计考量,它强调去中心化的数据治理,更强调每个微服务都拥有自己独立的数据存储,而不同服务在数据共享方面需要采取一定的策略和补偿方式来保证数据的一致性。通过对 TOC、Saga 等 模式的介绍,我们可以了解当前微服务架构数据的最终一致性解决方案。
第 8 章 微服务交付
软件交付作为软件工程中的一个重要环节,在过去的软件发展历程中一直不断地演进和优化.从最早的瀑布式软件开发过程到敏捷开发流程,从 Scrum 到 Dev0ps, 针对软件交付的方法论和技术也一直在延续发展。目前,基于容器技术的发展,软件交付的频率从按月交付转变为按天交付,交付平台工具和软件架构的发展使交付的成本越来越低,耗费的时间越来越少,不仅提高了工程师的交付.运维。生产效率,也极大地缩短了用户体验软件价值的周期。
持续集成指软件开发人员在开发完成后进行系统集成的过程,包括编译、发布、自动化测试等步骤。而持续交付建立在持续集成的基础上,它将最终产品发布给用户.
目前,越来越多开发者采用微服务进行软件构建和云原生架构的开发,对自动化运维工具的需求也越来越大。微服务拆分后,细粒度的服务足够小,可以独立部署,能做到对变化及时响应,持续集成和持续部署成为微服务规模化交付的基石.
本章我们将介绍软件交付的演进历史,同时会探讨微服务采用什么工具保证持续集成与持续交付,最后介绍脱胎于微服务架构思想的容器技术如何来帮助微服务持续集成和交付。
第 9 章 服务监控治理
俗话说,流水的架构,铁打的监控,任何软件系统能够稳定运行都离不开监控。在微服务架构下,大型的单体架构拆分为众多微服务后,一个请求往往需要经过更多的服务节点。在这种情况下,我们必须知道是在哪个服务环节出现了故障,这就需要针对每-一个服务,以及每一个指标都进行全面的监控。
微服务的引入会带来分布式下服务监控和服务治理的技术挑战,之前系统内部的方法调用转变成分布式网络下的 RPC,对于服务之间的交互集成和架构设计有更高的约束和要求。面对规模化的容器集群部署、不同种类的监控数据类型、海量的微服务,服务监控和服务治理成为微服务控制系统的关键组成部分.
服务系统监控、错误排查定位、系统运行数据的可视化展示和追踪一直是分布式架构系统的难点。而对于微服务系统的监控,必须具备处理和展示这些数据的能力,并能够通过这些数据快速地定位间题,这样才能帮助业务及时止损。
在本章中,我们将按照服务的指标监控、日志监控、全链路调用追踪三个层次,讲解如何增强系统的可观测性和监控运维能力.Spring Cloud 微服务体系在生态上对指标监控、日志及调用追踪等监控技术都有很好的支持,我们会在本章中对相关的 Spring Cloud 技术组件进行介绍.
进阶篇
第 10 章 响应式微服务架构
响应式编程( Reactive Programaing) 是相对于命令式编程的一种:全新的编程模型,是基于数据流变化传播的编程范式。响应式编程具备快速响应、不可变性、高井发、异步非阻塞、规模扩展、代码可读性高等诸多优势.Java 编程领域出现了众多基于响应式流规范的编程开发框架。本章我们会从响应式编程动机、响应式编程基本概念、响应式宜言开始介绍,引出响应式编程的基本特性(数据流、背压等)和核心概念. .
Spring Boot 2. x 微服务框架在 Spring Boot 1. x 的基础上,基于 Spring 5 Reactor 框架实现了响应式的微服务基底技术. Reactor 框架是 Spring 家族在响应式编程领城的子项目,由 Pivota1 公司开发,实现了基于响应式流编程规范. Reactor 最大的优势是与 Spring 生态的无缝集成,Spring WebF1ux 框架正是基于 Reactor 框架实现的。此外,本章还会介绍基于响应式流规范开发的类库实现,包括 Java Flou API.RxJava. Vert. X 等响应式编程框架.
最后,我们会重点介绍 WebFlux 异步非阻塞 Web 框架(核心组件包括 F1ux、Mono、Scheduler 等) 和 Spring Cloud Gateray 项目。 另外,还会介绍 Spring WebF1ux 与 Spring MIVC 在 Web 工作 原理上的差异和关
第 11 章 Kubernetes 容器管理
Kubernetes 作为分布式容器编排及管理系统,本身采用了微服务的架构设计思想和理念。本章我们会简单介绍 Kubernetes 的基本概念和关键组件,同时讲解 Kubernetes.与 Spring Cloud 的生态融合。
第 12 章 微服务发展趋势
随着 Docker 技术的普及和 Kubernetes 在互联网公司的大量部署与使用,微服务架构正在围绕应用如何易于开发交付、减少资源消耗、无侵入治理等方面进行变革和演进。本章我们将讲解云原生架构、Service Mesh 技术.无服务器架构(Serverless) 技术。
文章展示到这里就结束了,相信大家也看到了这份手册有多给力,完整版手册给大家准备好了,感兴趣想要学习一下的朋友,,点击此处【架构手册】,即可免费领取!
评论