工作以来用到的微服务只有Dubbo。简单总结Dubbo的一点问题,以及ZooKeeper在其中的作用,以自勉。
1. Dubbo 超时原因及处理
Dubbo 的默认超时时间 DEFAULT_CONNECT_TIMEOUT = 3000,默认重试次数 DEFAULT_RETRIES = 2。
Dubbo 配置粒度为全局、接口、方法。
按照默认配置,当第一次调用超过 3s 没有响应,Dubbo 会重新路由触发第二次调用;当第二次调用超过 3s 没有响应,按同样操作触发第三次;当第三次超时时,会抛出 com.alibaba.dubbo.remoting.TimeoutException 。
超时原因:a. Provider 服务提供者处理时间大于消费者等待时间;b. 网络延迟
处理方法:a. 由于实际需要时间大于等待时间,没有必要设置超时时间,或者设置大于处理时间的超时时间。
b. 防止出现网络延迟问题,建议保留超时重试机制。
c. 对于查询类的请求,直接告知超时即可;
d. 对于增、删、改类的请求,建立容错机制,如忽略重复请求,或通过业务主键、状态检查等保证数据的唯一性、正确性。
2. Dubbo 与 ZooKeeper
在 Dubbo 的架构体系中有注册中心模块,它不是必须的。注册中心可以实现服务注册、服务订阅。即当有多个服务提供者,注册中心可以整合告知消费者可用的有哪些。
ZooKeeper 在 Dubbo 架构体系中的角色是注册中心。
ZooKeeper 提供命名服务,通过文件目录的树状结构创建服务节点,存储服务路径(URL);通过心跳检测机制,发现挂掉的服务,将其从服务列表中清除。
这样简单总结不免道听途说,浅尝辄止。不过总结一下,督促自己学习,总比不学强。
越学习越发现所知甚少。从别人那里听到不觉得怎样,当有亲身体会时觉得很恐怖。持续学习,持续进步。
网友评论