任钢 著
第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 软件工程术语的标准汇编》英文
完。