微服务架构
组织架构和技术架构
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 |
18、微服务的容错限流是如何工作的?
Netflix Hystrix断路器原理

19、Docker 容器部署技术 & 持续交付流水线
基于镜像治理和多环境的持续交付流水线

蓝绿、金丝雀和灰度发布

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

基于容器云发布体系
