任钢 著
第1部分,微服务体系概述
是顺应时代的发展产生的。
微服务架构(MSA)的定义
微服务是一个完整的体系,并说明了什么是体系。(这个好)
第1章,微服务概述
关于微服务的一些辨证关系
辨证这个词在以往的文章中出现的比较少。
结构化分析设计,面向对象分析和设计,重构设计,领域设计,敏捷软件开发 = 只做好一件事。
第零个时代:主机时代
第一个时代:单体应用的 C/S 客户服务器时代。
第二个时代:分布式组件化应用时代。
第三个时代:SOA 时代(面向服务架构)。
第四个时代:微服务架构时代。
主机时代:那时应用程序都在后台,即所谓的中心大型机。当时没有服务的概念,只有计算的概念。前台终端作为输入/输出的工具。
第一个时代:以 CRUD 为主的单体应用。
1,程序代码汇总在一起,无法协同开发。
2,系统高度集中,非核心问题也可能导致整个系统瘫痪,稳定性差。
3,代码功能耦合度高,后期维护复杂,功能扩展困难。
4,业务功能变更或整合会导致重构整个系统,迭代时间长。
5,对开发语言的依赖性强。
第二个时代:
EJB , COM, CORBA
EJB 产生了一个伟大的时代,紧接着 Spring 创造了一个新时代。但本质是同样的。
第三个时代:
企业内部实现数据共享,独立系统之间相互访问。
SOA 设计中有十大原则:显式消息传递,基于合约的行为,自治性,松耦合,元数据驱动等。
问题:
复杂的 ESB 总线处于核心位置;
整个系统的架构并没有实现完全的组件化及面向服务;
学习和使用门槛依然偏高;
传输效率低,无用信息较多;不利于多并发应用。
实施中对规范和标准要求比较高,实施难度高。
2000年 Roy Fielding 博士的论文 Architectural Styles and the Design of Network-based Software Architectures 提出了 REST
第四个时代:
细粒度 SOA
微服务是可独立部署,独立扩展,独立测试且具有单纯职责的一个小型应用程序。
独立进程,可以使用不同的开发语言实现。轻量级的通信方式。
定义:即微服务领域
服务:微小,独立,自治。
微服务架构:微服务本身和微服务的运行环境。
三个特征:1,有一定功能价值的服务。2,颗粒度不大。3,有自治管理能力。
业务微服务
会员微服务
订单微服务
商品微服务
员工微服务
岗位微服务
项目微服务
任务微服务
技术微服务
缓存微服务
文件微服务
数据微服务
安全微服务
表现微服务
逻辑微服务
存储微服务
是一种低耦合的软件架构。
微服务框架需要支持服务注册,服务发现,共享配置存储,验证和授权,请求路由,负载平衡,通信稳定性及服务监控等微服务架构基础功能。
微服务应用与单体应用的比较,选择
微服务的颗粒度大小的判断(辨证)
过小灵活,耦合度低,但自治难度增大。
微服务进程内外的辨证
组件独立性和共享性的辨证
去中心化和管理规范化之间的辨证
松耦合和敏捷性要求之间的辨证
投入成本和复杂度之间的辨证
微服务安全性与无状态性之间的辨证
无状态的微服务缺少个体的安全认证信息。
不应微服务解决的问题:
技术上的纯算法问题
业务架构的抽象
研发管理流程落后
第2章
业务层面
扩展能力强,快速响应业务。
快速响应市场需求,实现迅速开发,快速交付功能。
快速增加新功能,同时又不影响稳定性与安全性。
康威定律:设计系统的组织其产生的设计等价于组织间的沟通结构。
微服务体系
微服务与云原生架构的不同,33页
微服务体系与 API 开放框架平台的关系
第2部分,微服务技术体系
基础架构:
服务发现
注册组件
API 网关组件
服务容错组件
服务监控告警日志组件
认证授权组件
统一配置管理组件
架构是如何将系统分解成不同的部分、以有各部分之间的静态结构关系和动态交互关系。
框架是一个可实例化的,部分完成的软件系统或实体。39页
IaaS,VM 虚拟化
CaaS,容器虚拟化
微服务技术框架体系不依赖 DevOps 和容器云。如果应用效果更好。
DevOps:
分布式消息队列系统,55页
微服务的集成平台自动化工具
微服务的基础设施环境
第4章,微服务技术架构体系
微服务技术架构体系概述
微服务运行时服务架构的组成部分
微服务运行时基础架构的组成部分
微服务运行时后端架构的组成部分
微服务技术架构设计模式
常用微服务技术架构设计模式:171页
-
聚合器微服务设计模式
-
代理微服务设计模式
-
链式微服务设计模式
-
分支微服务设计模式
-
数据共享微服务设计模式
-
异步消息传递微服务设计模式
微服务技术架构设计模式及其特性
第5章,微服务技术框架体系
开发型微服务基础框架平台
-
Spring Cloud 微服务框架
-
Dubbo 分布式服务框架
……
运维型微服务基础框架平台
-
Kubernetes 微服务框架
-
Docker Swarm 微服务框架
-
ZeroC IceGrid 微服务框架
-
Istio 微服务框架
微服务开发框架平台
-
基于 java 的微服务开发框架
-
基于 Microsoft .Net FRamework 的微服务开发框架
-
基于 JavaScript 的微服务开发框架
-
基于 PHP 的微服务开发框架
-
基于 Go 的微服务开发框架
-
基于 Python 的微服务开发框架
第3部分,微服务业务体系
第6章,微服务业务体系概述
-
业务微服务是设计层面的服务。
-
业务服务是需求层面的服务。
第7章,业务微服务分析设计方法论
普通服务分析和设计
领域驱动设计和微服务
六边形架构分析和设计
Clean 架构分析和设计
DCI 架构分析和设计
CQRS 架构分析和设计
第4部分,微服务管理体系
第8章,微服务管理体系概述
微服务管理体系的定义
微服务管理体系的内容
微服务应用成熟度级别
微服务应用的12要素原则
微服务规范
微服务度量指标
第9章,微服务应用的组织、人员和文化
单体架构应用的团队问题
微服务对组织、人员和文化的影响
根据微服务的需要调整组织、人员和文化
invest 原则
-
独立性,可协商性,有价值,可以估算性,短小,可测试性
第10章,微服务的开发和运维流程
软件开发流程的演化历史
DevOps 概述
软件开发人员,IT 运维技术人员。
它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。
透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
构建工具:Ant、Gradle、maven
自动部署:Capistrano、CodeDeploy
持续集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方厂商如AWS
编排:Kubernetes、Core、Apache Mesos、DC/OS
服务注册与发现:Zookeeper、etcd、Consul
脚本语言:python、ruby、shell
日志管理:ELK、Logentries
系统监控:Datadog、Graphite、Icinga、Nagios
性能监控:AppDynamics、New Relic、Splunk
压力测试:JMeter、Blaze Meter、loader.io
预警:PagerDuty、pingdom、厂商自带如AWS SNS
HTTP加速器:Varnish
消息总线:ActiveMQ、SQS
应用服务器:Tomcat、JBoss
Web服务器:Apache、Nginx、IIS
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
计划,需求,设计,开发,部署,运维,运营
-
敏捷规范
-
持续交付
-
IT 服务管理
-
精益管理
在微服务下 DevOps 的实现
第5部分,微服务体系建设实践
第11章,传统架构迁徙到微服务架构
迁徒的必要性
需要考虑的问题
-
需要考虑的问题
-
业务方面的问题
-
技术方面的问题
-
管理方面的问题
-
支撑方面的问题
传统架构迁徙到微服务架构的原则
传统架构迁徙到微服务架构的策略
传统架构迁徙到微服务架构的实施流程
第12章,新建系统的业务微服务全生命周期过程
业务微服务全生命周期过程概述
产品或平台微服务化需要考虑的问题
产品或平台业务微服务的建设步骤
一个讲级通透的书,代码不多,看了几页。个人感觉本书的代码不是重要的,文字的举例和说明很全面。有粗有细比较到位。从整体上讲解了微服务体系的技术、架构、框架、业务架构、管理整合及实践。本书不适合编写代码的程序员,但适合对架构(微服务架构)希望有进一步了解的人。本书的主要特点是采用体系化的思维来诠释和构建微服务体系。没有对微服务技术或框架用法进行细节说明,而是从整体上阐述的。还从微服务的落地上也进行了讲解。
参见:
《应用架构模式》
《ANSI/IEEE 610.12-1990 软件工程术语的标准汇编》英文
完。