微服务精讲
微服务架构
组织架构和技术架构
1、什么是微服务架构?
微服务架构
- 一组小的服务
- 独立的进程
- 轻量级通信
- 基于业务能力
- 独立部署
- 无集中式管理
Loosely Coupled Service Oriented architecture with bounded Context
2、微服务架构的利弊?
利
- 强模块化边界
- 可独立部署
- 技术多样性
弊
- 分布式复杂性
- 最终一致性
- 运维复杂性
- 测试复杂性
3、康威法则和微服务给架构师怎样的启示?
康威法则:设计系统的组织,其产生的设计等价于组织的沟通结构
4、企业应该在什么时候开始考虑引入微服务?
单块优先
5、什么样的组织架构更适合微服务?
由端到端的产品线延伸至跨职能的微服务架构
End-End Ownershop
:
Architect —> Design —> Develop —> Review —> Test —> Deploy —> Run —> Support
端到端的产品线:传统的单体架构开发方式
跨职能的产品线:将单体架构拆分为多个模块,每个模块由各自的完整团队进行组织开发
6、阿里巴巴的微服务中台战略
大中台、小前台理念:赋能业务的持续创新,产生出各种不同的业务模式,快速响应市场需求
7、如何给出一个清晰简洁的服务分层方式
8、微服务总体技术架构设计
- 接入层:外部+内部
LB
- 网关层:内部
GW
、H5GW
、无线GW
、第三方GW
、开放平台GW
- 业务服务层:聚合服务、基础服务
- 支撑服务:注册发现、集中配置、容错限流、认证授权、日志聚合、监控告警、后台服务(
DB、MQ、Cache、Job
) - 平台服务:发布系统、集群资源调度、镜像治理、资源治理、
IAM
(Identity and Access Management
:身份识别与访问管理) - 基础设施层:计算、网络、存储、
NOC
监控、安全、IDC
9、微服务最经典的三种服务发现机制
服务网格【Service Mesh
】(服务发现)
- 使用硬件
LB
,在用DNS
进行域名解析的时候,进行流量分发 - 将
LB
迁移到应用进程内 - 将
LB
以独立进程的形式,部署到一台独立的主机上
服务发现~独立LB
服务发现~进程内LB
服务发现~主机独立进程LB
10、微服务API
服务网关原理
作用:屏蔽内部服务细节,对外提供统一接口
- 反向路由
- 认证安全
- 限流熔断
- 日志监控
11、微服务API
服务开源网关Zuul
12、Netflix
微服务路由发现体系
13、集中式配置中心的作用和原理
14、微服务通讯方式RPC vs REST
RPC | REST | |
---|---|---|
耦合性 | 强耦合 | 松散耦合 |
消息协议 | 二进制thrift, protobuf, avro | 文本XML,JSON |
通讯协议 | TCP | HTTP/HTTP2 |
性能 | 高 | —般低于RPC |
接口契约IDL | Thrift, protobufidl | Swagger |
客户端 | 强类型客户端,—般自动生成,可支持多语言客户端 | 一般HTTP client可访问,也可以自动生成强类型客户端,可支持多语言客户端 |
案例 | Dubbo, motan,Tars,grpc, thrift | Spring MVC/Boot,Jax-rs,dropwizard |
开发者友好 | 客户端比较方便,但是二进制消息不可读 | 文本消息开发者可读,浏览器就可以访问 |
对外开放 | 对外一般需要转换成REST/文本协议 | 直接可以对外开放 |
15、微服务框架需要考虑哪些治理环节?
16、微服务监控系统分层和监控架构
端到端的全链路监控
四层监控体系和监控分类
监控架构和主流技术栈
Trace
调用链监控原理
17、微服务的调用链监控该如何选型?
CAT | Zipkin | Pinpoint | |
---|---|---|---|
调用链可视化 | 有 | 有 | 有 |
报表 | 非常丰富 | 少 | 中 |
ServerMap | 简单依赖图 | 简单 | 好 |
埋点方式 | 侵入 | 侵入 | 不侵入字节码增强 |
Heartbeat支持 | 有 | 无 | 有 |
Metric支持 | 有 | 无 | 无 |
Java/.Net客户端支持 | 有 | 有 | 只有Java |
Dashboard中文支持 | 好 | 无 | 无 |
社区支持 | 好,文档较丰富,作者在 携程点评 | 好,文档一般,暂无中文社区 | -般,文档缺,无中文社 区 |
国内案例 | 携程、点评、陆金所 | 京东、阿里不开源 | 暂无 |
源头祖先 | eBayCAL~Centralized ApplicationLogging | GoogleDapper | GoogleDapper |