主要功能
基础功能RPC
- 多协议(序列化、传输、RPC)
- 服务注册和发现
- 配置、元数据管理
- 框架分层设计,可任意组装和扩展
扩展功能
隐式传参
- 对http协议是通过增加header实现
- 对其他协议要侵入修改报文
mock
应用场景
分布式服务化改造
- 业务系统规模复杂,垂直拆分改造
- 数据相关改造
- 服务设计
- 团队配合
-
开放平台
将公司的业务能力开放出来,形成开放平台,对外输出业务或技术能力
BFF
作为前端使用的后端
-
服务化中台
业务能力包装成API
-
最佳实践
开发分包
将服务接口、服务数据模型、服务异常均放到API包中,符合分包原则
- 重用发布等价原则(REP)
- 共同重用原则(CRP)
- 服务接口尽可能大粒度,每个服务方法代表一个功能,而不是一个功能的一个步骤,否则面临分布式事务问题
- 不建议使用过于抽象的通用接口,如Map query(Map),语义不明确不便于维护
服务接口建议以业务场景为单位划分,对相近业务做抽象,防止接口数量爆炸
环境隔离与分组
环境隔离方式
- 部署多套
- 多注册中心机制
- group机制
- 版本机制
- 接口增加方法,模型增加字段可向后兼容
-
参数配置
通用参数以consumer端为准,如果consumer没有配置,使用provider的配置
- 建议provider端配置的consumer端参数有
- timeout
- retries
- loadbalance
- actives:consumer端最大并发调用限制,当consumer对一个服务的并发调用达到上限后,新调用会阻塞直到超时,可以配置在方法或服务上
建议provider端配置的provider参数有
注册的IP的问题有两个解决方法
DubboAdmin功能比较简单
- 公司需要定制,对接自己的监控系统
可观测性
柔性事务(TCC,AT)
- seata
- hmily
-
重试与幂等
服务调用失败默认重试2次,如果接口不是幂等的,会造成业务重复处理
- 如何设计幂等接口
- 去重(bitmap)
- 类似乐观锁机制

