微服务架构核心
01 | 微服务定义
1、Martin Fowler
1)一种架构风格,将单体应用划分成一组小的服务,服务之间相互协作,实现业务功能
2)每个服务运行在独立的进程中,服务间采用轻量级的通信机制协作(通常是HTTP/JSON)
3)每个服务围绕业务能力进行构建,并且能够通过自动化机制独立地部署
4)很少有集中式的服务管理,每个服务可以使用不同的语言开发,使用不同的存储技术
2、Martin Fowler
1)基于有界上下文的,松散耦合的面向服务的架构
02 | 微服务的利和弊
1、优势
1)强化模块边界
2)可独立部署
3)技术多样性
2、缺点
1)分布式系统复杂性
2)最终一致性
3)运维复杂性
4)测试复杂性
03 | 康威法则
1、定义
1)设计系统的组织,其产生的架构设计等价于组织间的沟通结构
2、解释
1)单体:多个团队共同维护一个应用,修改升级应用时,沟通成本高
2)微服务:将应用拆分为几个模块,每个团队维护一个模块,修改升级某个模块时,每个小团队就基本能完成,沟通成本较低
04 | 微服务的适用性
1、单块优先
1)推荐在项目开始时优先使用单体结构,等访问量和项目的复杂度增加之后,在考虑拆分成微服务
2、生产效率和复杂性
1)在复杂度较低时,单体应用的生产效率高于微服务,随着复杂度的升高单体应用和微服务的生产效率会有一个交集点,在这个交集点可以考虑开始微服务的拆分。
05 | 服务分层概念
1、聚合服务、基础服务
06 | 微服务总体架构体系图
1、可以划分为:基础设施层、平台服务、支撑服务、业务服务层、网关层、接入层
07 | 服务发现
1、独立LB
2、进程内LB
3、主机独立进程LB
08 | 四层监控体系和监控分类
1、监控体系
1)监控体系:端用户体验监控、业务监控、应用层监控、系统层监控、基础设施监控
2、监控分类
1)日志监控、Metrics 监控、调用链监控、告警监控、健康检查
09 | 思维导图
1、微服务架构核心思维导图
参考文献:
[1]杨波. 微服务架构核心20讲[M]. 极客时间, 2018.