Dubbo
理论:
1:注册中心宕机,注册者和消费者依然可以保持通讯(使用本地缓存配置),切换下一台直至链接可用。
ps1:没有新的注册者的前提下正常,如有新注册者,消费者走本地缓存不会更新新的注册者等同无效,需重启服务重新读取并更新本地缓存。
ps2:全部服务者宕机,消费者无限制重连。
2:负载均衡策略
1:随机+权重
2:轮询+权重
ps:处理慢的服务者会累计请求
3:活跃数值 慢服务者请求会收到更少请求
4:一致性HASH 相同参数发往同一服务者,服务者宕机其他服务者平摊
3:安全
通过Token令牌防止用户绕过注册中心直接连接,然后在注册中心管理授权
提供服务黑白名单管理,控制服务所允许的调用方
4:容错机制
1:failover 重试(缺省默认) 常用于读操作 retries(设置重试次数)
2:Failfast 失败即报错 常用于写操作
3:Failsafe 安全失败忽略异常 用于写入审计日志
4:Failback 失败自动恢复,定时重发 用于消息通知
5:Forking 并行调用多服务者,成功一个即返回 用于实时性要求较高的读操作 forks(设置对打并行数)
5:协议
协议 | 链接 | 协议 | 传输方式 | 序列化 | 优缺点 | 适用场景 |
dubbo | 单个长链接 | TCP | NIO异步传输 | Hessian二进制序列化 | 减少连接握手验证等 | 传入传出参数数据包较小(<100k),消费者比提供者个数多,单一消费者无法压满提供者。常规远程服务方法调用。 |
RMI | 多个短链接 | TCP | 同步传输 | Java标准二级制序列化 | 传入传出参数数据包大小混合,消费者与提供者个数差不多,可传 文件。 | 常规远程服务方法调用,与原生 RMI 服务互操作 |
Hessian | 多个短链接 | HTTP | 同步传输 | Hessian二进制序列化 | 传入传出参数数据包较大,提供者比消费者个数多,提供者压力较 大,可传文件。 | 页面传输,文件传输,或与原生 hessian 服务互操作 |
HTTP | 多个短链接 | HTTP | 同步传输 | 表单序列化(JSON) | 传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览 器查看,可用表单或 URL 传入参数,暂不支持传文件。 | 需同时给应用程序和浏览器 JS 使用的服务 |
WebService | 多个短链接 | HTTP | 同步传输 | SOAP 文本序列化 | 系统集成,跨语言调用。 | |
Thrif |