问题导读
一、说说Dubbo Monitor 实现原理??
二、Dubbo 和Spring Cloud 有什么关系?
三、Dubbo 和Spring Cloud 有什么哪些区别?
01
说说Dubbo Monitor 实现原理?
Consumer 端在发起调用之前会先走filter 链;
provider 端在接收到请求时也是先走filter 链,然后才进行真正的业务逻辑处理。
默认情况下,在consumer 和provider 的filter链中都会有Monitorfilter。
MonitorFilter 向DubboMonitor 发送数据
DubboMonitor 将数据进行聚合后
(默认聚合1min 中的统计数据)
暂存到ConcurrentMap<Statistics, AtomicReference> statisticsMap,
然后使用一个含有3个线程
(线程名字:DubboMonitorSendTimer)
的线程池每隔1min 钟,调用SimpleMonitorService 遍历发送statisticsMap 中的统计数据,
每发送完毕一个,就重置当前的Statistics 的AtomicReference
SimpleMonitorService 将这些聚合数据塞入BlockingQueue queue 中
(队列大写为100000)
SimpleMonitorService 使用一个后台线程
(线程名为:DubboMonitorAsyncWriteLogThread)
将queue 中的数据写入文件(该线程以死循环的形式来写)
SimpleMonitorService 还会使用一个含有1 个线程
(线程名字:DubboMonitorTimer)
的线程池每隔5min 钟,将文件中的统计数据画成图表
分享朋友圈,记录学习每一天~
02
Dubbo 和Spring Cloud 有什么关系?
Dubbo 是SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。
而Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了Spring、Spring Boot 的优势之上,
两个框架在开始目标就不一致,Dubbo 定位服务治理、Spring Cloud 是打造一个生态。
03
Dubbo 和Spring Cloud 有什么哪些区别?
Dubbo 底层是使用Netty 这样的NIO 框架,是基于TCP 协议传输的,配合以Hession序列化完成RPC 通信。
Spring Cloud 是基于Http 协议Rest 接口调用远程过程的通信,相对来说Http 请求会有更大的报文,占的带宽也会更多。
但是REST 相比RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,
这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体考虑。
- End -
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有