目录
一、从需求出发:微服务架构必须回答的五个问题
(一)为什么选型必须从需求倒推
(二)五大核心能力
1、服务注册与发现:实例在哪里、是否健康
2、服务间通信:用什么协议、什么格式、同步还是异步
3、服务容错:依赖失败时如何不被拖垮
4、数据管理:库归谁、一致性怎么保
5、API 网关:外部请求从哪里进来
(三)五项之外的三类支撑能力
1、配置中心
2、可观测性
3、安全与治理
(四)从业务约束到能力优先级
二、立尺子:技术选型的两个参考标准
(一)核心组件完备性
1、完备性矩阵
2、完备性不等于越全越好
(二)关键要素实现难度
1、难度的三种来源
2、把难度量化:加权评分法
(三)尺子之外的约束
三、注册中心的十维评估:Consul、ZooKeeper、etcd、Eureka 与 Nacos
(一)五位候选人的出身
(二)十个维度逐一拆解
1、服务健康检查
1.1 三种检查模式
1.2 实测:宕机后多久不再收到请求
1.3 Eureka 的四分钟是怎么来的
2、多数据中心支持
3、KV 存储服务
4、一致性协议
5、CAP 理论支持
5.1 两种取向的行为差异
5.2 实测:跨机房分区下的六种组合
6、使用接口(多语言能力)
7、Watch 支持
8、自身监控
9、安全
10、Spring Cloud 集成
(三)综合评分与推荐
1、十维评分总表
2、场景加权与敏感性检验
3、推荐结论
(四)服务可靠性:注册中心挂了怎么办
1、第一道保险:客户端本地缓存
2、第二道保险:保护阈值与推空保护
3、第三道保险:注册中心自身的高可用
四、四大框架横向对比:Spring Cloud、Dubbo、gRPC、Istio
(一)四种框架的定位差异
(二)五个维度的逐项比较
1、通信方式
1.1 四种协议栈
1.2 实测:同一份数据,两种编码各占多少字节
1.3 连接模型与流式能力
2、服务发现与注册
3、容错和熔断机制
4、配置中心
5、监控能力
(三)适用场景总结
1、五维对比总表
2、四类典型场景
3、选型决策树
(四)混搭与迁移:现实中的选型很少是单选题
1、常见的混搭模式
2、平滑迁移的路径
五、演进趋势与建议
(一)服务网格与 Kubernetes 原生化
1、治理能力的三次下沉
2、服务网格的真实成本
(二)协议收敛:HTTP/2、gRPC 与 Triple
(三)给不同阶段团队的建议
1、起步阶段:十个以内的服务
2、成长阶段:几十到上百个服务
3、平台阶段:数百个服务、多语言、多机房
六、总结
参考文献与延伸阅读
干货分享,感谢您的阅读!
在微服务的技术评审会上,最常见的争论不是“要不要拆”,而是“用什么拆”。有人推 Spring Cloud,理由是团队熟、资料多;有人推 Dubbo,理由是性能好、治理细;有人说 gRPC 才是跨语言的正道;还有人认为这些都过时了,直接上服务网格。争到最后,往往是职级最高的那个人拍板,或者谁的 PPT 做得好看谁赢。半年之后,问题陆续暴露:注册中心在机房网络抖动时把一半实例摘掉了,配置改了要等几分钟才生效,Go 写的新服务接不进 Java 的治理体系,监控大盘上看不到跨服务的调用链……这时再回头看当初的决策记录,会发现几乎没有人认真回答过两个问题:我们到底需要什么能力?用什么标准判断一个方案能不能提供这些能力?
技术选型本质上是一次营造前的度量。木匠下料之前要先拿鲁班尺量一量,再拿墨斗弹一道线;选型之前同样要先立好尺子——先把需求拆成可以检验的能力清单,再确定评估的维度与权重,最后才是把候选方案一个个放到尺子上去量。尺子立得正,结论才经得起时间;尺子立歪了,比较得再细也只是在错误的方向上精确。
本次我们沿着这条路线展开:先从微服务架构必须回答的五个基本问题出发,梳理五大核心能力与三类支撑能力;然后确立“核心组件完备性”与“关键要素实现难度”两把尺子,并给出可以落地的加权评分方法;接着用这两把尺子对 Consul、ZooKeeper、etcd、Eureka 以及后来居上的 Nacos 做十个维度的逐项评估,其中健康检查时延与跨机房分区两项用可复现的仿真程序给出实测数字;再对 Spring Cloud、Dubbo、gRPC、Istio 四大框架在通信、发现、容错、配置、监控五个维度上