Dubbo 服务降级,失败重试怎么做?
可以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修 改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口 名称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑
16、Dubbo 使用过程中都遇到了些什么问题?
在注册中心找不到对应的服务,检查 service 实现类是否添加了@service 注解 无法连接到注册中心,检查配置文件中的对应的测试 ip 是否正确
17、Dubbo Monitor 实现原理?
Consumer 端在发起调用之前会先走 filter 链;provider 端在接收到请求时也是 先走 filter 链,然后才进行真正的业务逻辑处理。 默认情况下,在 consumer 和 provider 的 filter 链中都会有 Monitorfilter。
1、MonitorFilter 向 DubboMonitor 发送数据
2、DubboMonitor 将数据进行聚合后(默认聚合 1min 中的统计数据)暂存到 ConcurrentMap statisticsMap,然后使用一个 含有 3 个线程(线程名字:DubboMonitorSendTimer)的线程池每隔 1min 钟, 调用 SimpleMonitorService 遍历发送 statisticsMap 中的统计数据,每发送完毕 一个,就重置当前的 Statistics 的 AtomicReference
3、SimpleMonitorService 将这些聚合数据塞入 BlockingQueue queue 中(队 列大写为 100000)
4、SimpleMonitorService 使用一个后台线程(线程名为: DubboMonitorAsyncWriteLogThread)将 queue 中的数据写入文件(该线程以 死循环的形式来写)
5、SimpleMonitorService 还会使用一个含有 1 个线程(线程名字: DubboMonitorTimer)的线程池每隔 5min 钟,将文件中的统计数据画成图表