随笔分类 - dubbo
摘要:高并发下Redis会出现的问题: 缓存穿透 缓存雪崩 热点缓存 一、定义commons工程11-dubboCommons (1) 创建工程 创建Maven的Java工程,并命名为11-dubboCommons (2) 定义pom文件 <groupId>com.abc</groupId><artifa
阅读全文
摘要:从前面“对提供者的异步调用”例子可以看出,消费者对提供者实现了异步调用,消费者线程的执行过程不再发生阻塞,但提供者对IO耗时操作仍采用的是同步调用,即IO操作仍会阻塞Dubbo的提供者线程。 但需要注意,提供者对IO操作的异步调用,并不会提升RPC响应速度,因为耗时操作终归是需要消耗那么多时间后才能
阅读全文
摘要:使用Future实现异步调用,对于无需获取返回值的操作来说不存在问题,但消费者若需要获取到最终的异步执行结果,则会出现问题:消费者在使用Future的get()方法获取返回值时被阻塞。为了解决这个问题,Dubbo又引入了CompletableFuture来实现对提供者的异步调用 一、创建提供者10-
阅读全文
摘要:Dubbo的四大组件工作原理图,其中消费者调用提供者采用的是同步调用方式。消费者对于提供者的调用,也可以采用异步方式进行调用。异步调用一般应用于提供者提供的是耗时性IO服务 一、Future异步执行原理 黑色同步调用,而红色为异步调用 UserThread:消费者线程 IOThrea:提供者线程 S
阅读全文
摘要:Dubbo的四大组件工作原理图,其中消费者调用提供者采用的是同步调用方式。消费者对于提供者的调用,也可以采用异步方式进行调用。异步调用一般应用于提供者提供的是耗时性IO服务 一、Future异步执行原理 黑色同步调用,而红色为异步调用 UserThread:消费者线程 IOThrea:提供者线程 S
阅读全文
摘要:Dubbo 2.6.5 版本以后,如果我们的服务启动过程需要warmup事件,就可以使用delay进行服务延迟暴露。只需在服务提供者的<dubbo:service/>标签中添加delay属性。其值可以有三类 正数:单位为毫秒,表示在提供者对象创建完毕后的指定时间后再发布服务。 0:默认值,表示当前提
阅读全文
摘要:一、创建提供者08-provider-registers (1) 创建工程 直接复制05-provider-group工程,并命名为08-provider-registers (2) 修改配置文件 二、创建消费者08-consumer-registers (1) 创建工程 直接复制05-consum
阅读全文
摘要:为了进一步提高消费者对用户的响应速度,减轻提供者的压力,Dubbo提供了基于结果的声明式缓存。该缓存是基于消费者端的,所以使用很简单,只需修改消费者配置文件,与提供者无关 一、创建消费者07-consumer-cache (1) 创建工程 直接复制02-consumer-zk工程,并命名为07-co
阅读全文
摘要:为了防止某个消费者的QPS或是所有消费者的QPS总和突然飙升而导致的重要服务的失效,系统可以对访问流量进行控制,这种对集群的保护措施称为服务限流。 Dubbo中能够实现服务限流的方式较多,可以划分为两类:直接限流与间接限流 直接限流:通过对连接数量直接进行限制来达到限流的目的。(官方方案汇总) 间接
阅读全文
摘要:服务降级的发生,其实是由于消费者调用服务超时引起的,即从发出调用请求到获取到提供者的响应结果这个时间超出了设定的时限。默认服务调用超时时限为1秒。可以在消费者端与提供者端设置超时时限。 一、创建提供者工程06-provider-timeout (1) 创建工程 复制02-provider-zk工程,
阅读全文
摘要:一、简介 解决高并发的三把利器:降级、限流、缓存 (1) 什么是服务降级 服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降低服务级别,以释放服务器资源,保证核心任务的正常运行 (2) 服务降级方式 能够实现服务降级方式很多,常见的有如下几种情况: 部分服务暂停 全部服务
阅读全文
摘要:集群容错指的是,当消费者调用提供者集群时发生异常的处理方案 一、Dubbo内置的容错策略 (1) Failover 故障转移策略。当消费者调用提供者集群中的某个服务器失败时,其会自动尝试着调用其它服务器。该策略通常用于读操作,例如,消费者要通过提供者从DB中读取某数据。但重试会带来服务延迟 (2)
阅读全文
摘要:一、搭建负载均衡环境 两个提供者,一个消费者 二、创建提供者 (1) 创建提供者02-provider-zk01 A、创建工程 复制前面的02-provider-zk工程,并重命名为02-provider-zk01 B、 修改配置文件 C、修改Service实现类 (2) 创建提供者02-provi
阅读全文
摘要:除了Dubbo服务暴露协议Dubbo协议外,Dubbo框架还支持另外8种服务暴露协议:RMI协议、Hessian协议、HTTP协议、WebService协议、Thrift协议、Memcached协议、Redis协议、Rest协议。但在实际生产中,使用最多的就是Dubbo服务暴露协议 (1) dubb
阅读全文
摘要:服务分组与多版本控制的使用方式几乎是相同的,只要将version替换为group即可。但使用目的不同。使用版本控制的目的是为了升级,将原有老版本替换掉,将来不再提供老版本的服务,所以不同版本间不能出现相互调用。而分组的目的则不同,其也是针对相同接口,给出了多种实现类。但不同的是,这些不同实现并没有谁
阅读全文
摘要:当系统进行升级时,一般都是采用“灰度发布(又称为金丝雀发布)”过程。即在低压力时段,让部分消费者先调用新的提供者实现类,其余的仍然调用老的实现类,在新的实现类运行没有问题的情况下,逐步让所有消费者全部调用成新的实现类。多版本控制就是实现灰度发布的 一、创建提供者04-provider-version
阅读全文
摘要:2019年初,官方发布了Dubbo管理控制台0.1版本。结构上采取了前后端分离的方式,前端使用Vue和Vuetify分别作为Javascript框架和UI框架,后端采用Spring Boot框架 一、下载 Dubbo管理控制台的下载地址为:https://github.com/apache/dubb
阅读全文
摘要:一、创建提供者03-provider-web (1) 创建工程 创建Maven的web工程,然后创建实现类。 (2) 导入依赖 Spring的版本为4.3.16 需要的依赖有: dubbo2.7.0版本依赖 zk客户端curator依赖 servlet与jsp依赖 spring相关依赖 spring
阅读全文
摘要:在生产环境下使用最多的注册中心为Zookeeper,当然,Redis也可以做注册中心 一、创建提供者02-provider-zk (1) 导入依赖 https://blog.csdn.net/u012965203/article/details/96700308 复制前面的提供者工程01-provi
阅读全文
摘要:一、简介 官网:http://dubbo.apache.org/zh-cn/ Dubbo是 [1] 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [2] Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框
阅读全文