摘要:Javaassist 就是一个用来处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字节码方面有深入的了解。同时也可以去生成一个新的类对象,通过完全手动的方式。 引入依赖 <dependency> <groupId>org.javassist< 阅读全文
posted @ 2020-06-16 13:29 cao_xiaobo 阅读(135) 评论(0) 推荐(0) 编辑
摘要:一、使用示例 (1)创建一个XxxFilter,并实现com.alibaba.dubbo.rpc.Filter 这个类 public class MyDubboFilter implements Filter { public Result invoke(Invoker<?> invoker, In 阅读全文
posted @ 2020-06-16 13:24 cao_xiaobo 阅读(315) 评论(2) 推荐(0) 编辑
摘要:当一个应用既是一个服务的提供者,同时也是这个服务的消费者的时候,可以直接对本机提供的服务发起本地调用。从 2.2.0 版本开始,Dubbo 默认在本地以 injvm 的方式暴露服务,这样的话,在同一个进程里对这个服务的调用会优先走本地调用。 与本地对象上方法调用不同的是,Dubbo 本地调用会经过 阅读全文
posted @ 2020-06-16 13:18 cao_xiaobo 阅读(443) 评论(0) 推荐(0) 编辑
摘要:什么是泛化调用? 泛化调用就是服务消费者端因为某种原因并没有该服务接口,这个原因有很多,比如是跨语言的,一个PHP工程师想调用某个java接口,他并不能按照你约定,去写一个个的接口,Dubbo并不是跨语言的RPC框架,但并不是不能解决这个问题,这个PHP程序员搭建了一个简单的java web项目,引 阅读全文
posted @ 2020-06-16 13:13 cao_xiaobo 阅读(316) 评论(0) 推荐(0) 编辑
摘要:本地伪装通常用于在远程调用出错的情况下服务降级,即本地伪装用来做容错处理 通过将服务端设置睡眠使用得客户端调用超时,抛出异常 public String sayHello(String name) { // Dubbo 默认的超时时间是 1000 ms,这里通过睡眠 5000ms 来达到触发超时异常 阅读全文
posted @ 2020-06-16 13:10 cao_xiaobo 阅读(190) 评论(0) 推荐(0) 编辑
摘要:本地存根的工作方式与 AOP 的 around advice 类似,而本地伪装的工作方式等同于 AOP 中的 after-throwing advice,也就是说,只有当远程调用发生 exception 的时候才会执行本地伪装。本地存根和本地伪装的工作流程如下图所示: 服务消费者发起调用 如果服务消 阅读全文
posted @ 2020-06-16 13:08 cao_xiaobo 阅读(136) 评论(0) 推荐(0) 编辑
摘要:前言 长连接和短连接 短连接:每次通信结束后关闭连接,下次通信需要重新创建连接;优点就是无需管理连接,无需保活连接; 长连接:每次通信结束不关闭连接,连接可以复用,保证了性能;缺点就是连接需要统一管理,并且需要保活; 主流的RPC框架都会追求性能选择使用长连接,所以如何保活连接就是一个重要的话题,也 阅读全文
posted @ 2020-06-16 13:06 cao_xiaobo 阅读(238) 评论(0) 推荐(0) 编辑
摘要:方法说明 oninvoke方法:必须具有与真实的被调用方法sayHello相同的入参列表:例如,oninvoke(String name) onreturn方法:至少要有一个入参且第一个入参必须与sayHello的返回类型相同,接收返回结果:例如,onreturnWithoutParam(Strin 阅读全文
posted @ 2020-06-16 13:02 cao_xiaobo 阅读(108) 评论(0) 推荐(0) 编辑
摘要:Dubbo 提供了4种负载均衡实现,分别是 基于权重随机算法的 RandomLoadBalance 基于最少活跃调用数算法的 LeastActiveLoadBalance 基于hash一致性的 ConsistentHashLoadBalance 基于加权轮询算法的 RoundRobinLoadBal 阅读全文
posted @ 2020-06-16 12:56 cao_xiaobo 阅读(90) 评论(0) 推荐(0) 编辑
摘要:官方介绍 为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样,在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理 阅读全文
posted @ 2020-06-16 12:53 cao_xiaobo 阅读(73) 评论(0) 推荐(0) 编辑