什么是RPC
RPC是指远程过程调用,是一种进程中间的通信方式,他是一种技术思想,而不是技术规范。 它允许程序员调用另一个地址空间(通常是共享网络的另一台机器上)的过程或者函数。而不用程序员显示编码这个远程调用细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
Dubbo
dubbo 是一款高性能,轻量级的开源Java RPC 框架。
DUBBO架构
Dubbo的配置项目
启动项检查
Dubbo缺省会在启动时检查依赖的服务是否是可用的,不可用的时会抛出异常,阻止Spring初始化完成,以便于上线时能及早发现问题,默认 check = 'true' 但是如果你的spring容器是懒加载的或者是出现了循环依赖,必须有一方先启动,请关闭check <dubbo:consume check="false"/>
配置之间的优先级关系
1,方法级优先,接口级次之,全局配置再次之
2,如果级别(方法级别 接口级别 全局配置级别)一样 则消费方有限 提供方次之
Dubbo的负载均衡策略
- Random Loadbalance:随机,按照权重设置随机的概率(默认)
- RoundRobin Loadbalace:基于权重的轮询负载均衡机制
- LeastActivity LoadBalance :最少活跃数(按照服务器处理请求事件的长短快慢去区分是否活跃) 负载均衡机制
- 一致性hash
服务降级
当服务器压力过大的时候,根据实际业务情况以及流量,对一些服务和页面有策略的不处理或者换种简单的处理方式,从而释放服务器资源以保证核心交易正常运作或者高效运作
- 直接返回null 表示消费方对该服务的方法调用都返回null值,不发起远程调用
- 当消费者对该服务的方法调用失败后,再返回null,不抛出异常
Dubbo的底层逻辑
后续补充