dubbo–rpc框架相关
分层
- service、config、cluster、 monitor、protocol、exchange、registry、proxy、transport、serialize等
网络通信协议、序列化协议
- dubbo 长连接、nio、高并发、数据量小
- hessian
- 还有其他 json 、java二进制、rmi等
负载均衡
- 权重、轮询、自动感知、一致性hash
- 方法级别配置
spi
- 插件扩展
动态代理
静态代理
- 编译时就将接口、实现类、代理类这些都变成了一个个实际的 class 文件
- 代理类中包含具体代理的接口类
动态
可以不需要针对每个目标类都创建一个代理类,静态代理中接口一旦新增加方法,目标对象和代理对象都要进行修改,非常麻烦
jdk动态
- InvocationHandler 接口和 Proxy 类 (InvocationHandler里面会用到Proxy类)
SmsService smsService = (SmsService) JdkProxyFactory.getProxy(new SmsServiceImpl());
- JDK 动态代理只能只能代理实现了接口的类或者直接代理接口,而 CGLIB 可以代理未实现任何接口的类
cglib动态代理
- 自定义 MethodInterceptor 并重写 intercept 方法,intercept 用于拦截增强被代理类的方法
AliSmsService aliSmsService = (AliSmsService) CglibProxyFactory.getProxy(AliSmsService.class);
- CGLIB 动态代理是通过生成一个被代理类的子类来拦截被代理类的方法调用,因此不能代理声明为 final 类型的类和方法。
服务治理
- 链路、压力、时长、可用性(成功率)、服务分层(循环依赖)
- 服务降级
- dubbo中的mock
- 类加上Mock后缀,作为降级策略
- dubbo中的mock
- 失败重试、超时重试
- 200ms超时,重试3次
本文作者:
yuqing wang
本文链接: https://satyrswang.github.io/2021/04/05/dubbo/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://satyrswang.github.io/2021/04/05/dubbo/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!