Monitorfilter。
1. MonitorFilter 向 DubboMonitor 发送数据
2. DubboMonitor 将数据进行聚合后(默认聚合 1min 中的统计数据)暂存到
ConcurrentMap<Statistics, AtomicReference> statisticsMap,然后使用一个含有 3 个线程(线
程名字:DubboMonitorSendTimer)的线程池每隔 1min 钟,调用 SimpleMonitorService 遍历
发送 statisticsMap 中的统计数据,每发送完毕一个,就重置当前的 Statistics 的
AtomicReference
3. SimpleMonitorService 将这些聚合数据塞入 BlockingQueue queue 中(队列大写为 100000)
4. SimpleMonitorService 使用一个后台线程(线程名为:DubboMonitorAsyncWriteLogThread)
将 queue 中的数据写入文件(该线程以死循环的形式来写)
5. SimpleMonitorService 还会使用一个含有 1 个线程(线程名字:DubboMonitorTimer)的线程
池每隔 5min 钟,将文件中的统计数据画成图表
分布式框架
9. Dubbo 类似的分布式框架还有哪些?
比较著名的就是 Spring Cloud。
10. Dubbo 和 Spring Cloud 有什么关系?
Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而
Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了
Spring、Spring Boot 的优势之上,两个框架在开始目标就不一致,Dubbo 定位服务治理、
Spring Cloud 是打造一个生态。
11. Dubbo 和 Spring Cloud 有什么哪些区别?
Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于 TCP 协议传输的,配合以 Hession 序列化完
成 RPC 通信。
Spring Cloud 是基于 Http 协议 Rest 接口调用远程过程的通信,相对来说 Http 请求会有更大的报
文,占的带宽也会更多。但是 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸
契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通
信速度还是方便灵活性,具体情况具体考虑。
12. Dubbo 和 Dubbox 之间的区别?
Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如加了服务可 Restful
调用,更新了开源组件等。
注册中心
13. Dubbo 有哪些注册中心?