《极客时间教程 - 微服务架构核心 20 讲》笔记
《极客时间教程 - 微服务架构核心 20 讲》笔记
什么是微服务架构
微服务六大特点:
- 一组小的服务
- 独立的进程
- 独立部署
- 轻量级通信
- 基于业务能力
- 无集中式管理:可用不同技术栈、不同存储
微服务定义:基于有界上下文的、松散耦合的、面向服务的架构。
架构师如何权衡微服务的利弊
架构之道在于权衡利弊
优点:强模块化边界、可独立部署、技术多样性
缺点:分布式系统复杂性、最终一致性、运维复杂性、测试复杂性
康威法则和微服务给架构师怎样的启示
康威法则:设计系统的架构受制于产生这些设计的组织的沟通结构。

康威四大定律:
- 组织沟通方式会通过系统设计表达出来
- 时间再多一件事也不可能完美,但总有时间做完一件事
- 线型系统和线型组织架构间有潜在的异质同态特性
- 大系统总是比小系统更倾向于分解
核心思想:分而治之
企业应该在什么时候开始考虑引入微服务
- 单体服务适用于小团队;微服务适用于大团队
- 经验数据:团队达到 100 人规模时可考虑微服务架构
- 微服务对平台基础设施要求较高,初期不一定能提高生产力
罗马不是一天建成的:架构是演进的过程,不应一开始就设计得过于复杂。
什么样组织架构更适合微服务

- 传统组织架构:产品流程线性流转,反馈慢,沟通成本高
- 微服务组织架构:跨职能团队(开发+产品+测试),每个团队支持自己的微服务,交付平台对外提供 API

DevOps 理念:谁开发的,谁构建,谁支持。
如何理解阿里巴巴提出的微服务
中台战略与微服务的关系:

- 业务中台 + 技术中台 = 大中台,支撑业务前台
- 与微服务相关的层次:
PaaS(平台即服务)和核心业务层 IaaS:Infrastructure-as-a-Service(基础设施即服务)PaaS:Platform-as-a-Service(平台即服务)
如何给出一个清晰简洁的服务分层方式

SOA / 微服务分层:
- 基础服务:核心领域服务 / 中间层服务 / 公共服务
- 聚合服务:对基础服务的聚合,满足业务需求,提供给外部调用
微服务总体技术架构体系是怎么设计的

- 接入层:接入外部流量,内部负载均衡
- 网关层:反向路由、限流、安全、跨横切面功能
- 业务服务层:聚合服务 + 基础服务
- 支撑服务:公共性后台服务
- 平台服务:管理系统
- 基础设施:运维团队维护
与微服务相关的主要有:网关层、业务服务层、支撑服务、平台服务
微服务最经典的三种服务发现机制
消费者如何发现生产者,三种模式:
模式 1:DNS + LB
通过 DNS 访问负载均衡,LB 分发请求。

模式 2:客户端注册中心
消费者内置 LB,生产者注册到注册中心并发送心跳,消费者定期拉取生产者信息。

模式 3:主机 LB + 注册中心
Consumer 主机上布置 LB,LB 定期同步注册中心信息。运维成本较高。

微服务 API 服务网关(一)原理
网关作用:屏蔽服务内部逻辑,对外提供统一接口。

网关核心功能:
- 反向代理:外部请求换成内部调用
- 安全认证:防刷、防爬虫
- 限流熔断:处理突发流量
- 日志监控:访问审计、流量监控
不要把过多业务逻辑写在网关中

服务 API 服务网关(二)开源网关 Zuul
Zuul 过滤器链:前置路由过滤器 → 路由过滤器 → 后置路由过滤器
- 过滤器可通过脚本开发,上传后被扫描加载到 Filter Runner
- 各 Filter 通过
Request Context共享数据

过滤链流程:

跟 Netflix 学习微服务路由发现体系
Netflix 两大核心支撑服务:
- 服务注册中心:
Eureka - 网关:
Zuul

集中式配置中心的作用和原理是什么
引入配置中心的原因:配置文件属性不便管理、无法动态更新、无法审计
可配置项:业务开关、调用/响应超时、限流、连接字符串、动态参数
配置更新方式:推(Push)和拉(Pull)

携程 Apollo 配置中心:

微服务通讯方式 RPC vs REST
- RPC:远程过程调用
- REST:RESTful 风格

微服务框架需要考虑哪些治理环节
服务治理要点:
- 软负载:蓝绿发布、灰度发布
- 指标(Metrics):调用量、耗时监控
- 调用链埋点:快速定位问题
- 契约生成代码:定义结构体自动生成 JSON 格式

- 阿里巴巴微服务治理生态:Dubbo
微服务监控系统分层和监控架构
五层监控体系:
- 基础层监控:硬件设施
- 系统层监控:操作系统指标
- 应用层监控:URL、Service、MySQL、Cache 可用率、性能、QPS
- 业务层监控:核心指标、登录注册
- 端用户体验监控

监控技术栈:
- 日志监控:
ELK(Elasticsearch + Logstash + Kibana) - Metrics 监控:指标采集
- 健康检查:
Nagios - 调用链监控:链路追踪
- 告警系统

大数据量场景用
Kafka作为缓冲队列
微服务的调用链监控该如何选型
调用链监控由 Google 2010 年提出,通过 Span 跟踪调用链路(RootSpan、ChildSpan,跨进程时包含 Trace ID + Parent Span ID)。

三大主流调用链监控系统对比:

微服务的容错限流是如何工作的
Netflix Hystrix:提供熔断、隔离、限流、降级功能。

工作流程:
Circuit Open判断是否熔断 → 是则执行getFallback()降级run()超时 → 执行降级run()失败 → 执行降级- 成功执行后通过
Calculate Circuit Health计算是否需要熔断
Docker 容器部署技术 & 持续交付流水线
Docker 核心价值:解决环境不一致问题,将所有依赖打包到镜像中。
统一、标准化的交付流水线。
UAT:User Acceptance Test(用户验收测试)

发布模式:蓝绿部署、灰度发布(金丝雀发布)

容器集群调度和基于容器的发布体系
Mesos 资源调度框架架构:

基于容器的云发布体系:
