摘要:
什么是泛化调用? 泛化调用就是服务消费者端因为某种原因并没有该服务接口,这个原因有很多,比如是跨语言的,一个PHP工程师想调用某个java接口,他并不能按照你约定,去写一个个的接口,Dubbo并不是跨语言的RPC框架,但并不是不能解决这个问题,这个PHP程序员搭建了一个简单的java web项目,引 阅读全文
摘要:
本地伪装通常用于在远程调用出错的情况下服务降级,即本地伪装用来做容错处理 通过将服务端设置睡眠使用得客户端调用超时,抛出异常 public String sayHello(String name) { // Dubbo 默认的超时时间是 1000 ms,这里通过睡眠 5000ms 来达到触发超时异常 阅读全文
摘要:
本地存根的工作方式与 AOP 的 around advice 类似,而本地伪装的工作方式等同于 AOP 中的 after-throwing advice,也就是说,只有当远程调用发生 exception 的时候才会执行本地伪装。本地存根和本地伪装的工作流程如下图所示: 服务消费者发起调用 如果服务消 阅读全文
摘要:
前言 长连接和短连接 短连接:每次通信结束后关闭连接,下次通信需要重新创建连接;优点就是无需管理连接,无需保活连接; 长连接:每次通信结束不关闭连接,连接可以复用,保证了性能;缺点就是连接需要统一管理,并且需要保活; 主流的RPC框架都会追求性能选择使用长连接,所以如何保活连接就是一个重要的话题,也 阅读全文
摘要:
方法说明 oninvoke方法:必须具有与真实的被调用方法sayHello相同的入参列表:例如,oninvoke(String name) onreturn方法:至少要有一个入参且第一个入参必须与sayHello的返回类型相同,接收返回结果:例如,onreturnWithoutParam(Strin 阅读全文
摘要:
Dubbo 提供了4种负载均衡实现,分别是 基于权重随机算法的 RandomLoadBalance 基于最少活跃调用数算法的 LeastActiveLoadBalance 基于hash一致性的 ConsistentHashLoadBalance 基于加权轮询算法的 RoundRobinLoadBal 阅读全文
摘要:
官方介绍 为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样,在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理 阅读全文
摘要:
服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者 Dubbo 目前提供了三种服务路由实现,分别为 条件路由 ConditionRout 阅读全文
摘要:
前言 集群容错源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance 集群工作过程可分为两个阶段: 第一个阶段是在服务消费者初始化期间,集群 Cluster 实现类为服务消费者创建 Cluster Invoker 实例, 阅读全文
摘要:
一、前言 Dubbo内核 dubbo所有功能都是基于dubbo内核之上完成的,dubbo内核由四部分构成,分别为SPI、Adaptive、Wrapper、Activate。而dubbo的内核设计原则,也是我们所熟悉的aop,ioc与动态编译compiler,这些称之为dubbo的内核原理。 Wrap 阅读全文