大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~
文章目录
官网文档
知识点
1.接口,实现类
暴露端口,注册中心配置,相关接口以及实现类
2.配置优先级
方法>接口>全局
消费者>提供者
3.集群容错
失败重试
4.负载均衡
5.线程池
6.只订阅
7.服务分组
同一个类似的业务,但是不同渠道啥的,多渠道不互相影响
,可以用group
8.dubbo 缓存
9.上下文
10.异步
11.dubbo 2.7.5消费者线程池优化
在以前是使用future.get去阻塞获取,同步是服务端通过调用future.get去阻塞,但是 context没有加future,异步是客户端去阻塞
2.7.5通过 CompletableFuture去获取,实现真正的异步,其次同步在客户端 ThreadlessExecutor.wait()去阻塞。
在之前一个连接会创建一个线程池,比如A去调用B,C,这时会有两个线程池。其实没有必要做线程隔离。
所以后面用共享线程池去处理,串行阻塞队列。当有值返回的时候会去解码然后set到future里面。(也就是减少线程池的消耗)
12.协议以及序列化
dubbo协议
单一长连接,增加线程的复用,但是不能使用大包,网络可能会形成瓶颈。
Rest协议
Hessian协议
thrift 协议
13.dubbo ioc以及spi跟java比较
总结一下:
java spi通过META/services配置实现类,然后把所有实现都加载。
dubbo spi通过ExtensionLoader来加载,配置文件放在META-INF/dubbo
区别
Spring IOC
有两种容器:BeanFactory,ApplicationCotext(在BeanFactory基础上扩展些国际化,资源加载,AOP等等)
Dubbo IOC
dubbo面试题
1.dubbo注册
2.SPI机制
可以扩展机制, META-INF/dubbo/,记录接口,然后指定对应的实现jar
3.设计RPC框架
1)实现方法:netty长连接,减少握手等等资源消耗
2)协议类型,快,提供者小于服务者,dubbo适合传输那些频繁调用的。hession适合大文件传输,短连接
3)注册中心,监控等等