![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DUBBO
文章平均质量分 92
JAVA前线
微信公众号「JAVA前线」
展开
-
长文图解七种负载均衡策略
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 三组概念负载均衡、集群容错、服务降级这三个概念在DUBBO中非常重要,同理其它分布式框架也都有相同或者相近之概念。从调用顺序角度分析,调用顺序依次是负载均衡、集群容错、服务降级。从解决问题角度分析,负载均衡解决了「选哪一个」问题,集群容错解决了「换哪一个」问题,服务降级解决了「全错怎么办」问题。假设有1个服务消费者面.原创 2022-02-03 20:45:24 · 2750 阅读 · 0 评论 -
DUBBO负载均衡、集群容错、服务降级有什么区别与联系
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述负载均衡、集群容错、服务降级这三个概念在DUBBO中非常重要,同理其它分布式框架也都有相同或者相近之概念,那么三者分别代表什么含义,有什么联系和区别,解决了什么问题,正是本文需要回答的问题。从调用顺序角度分析,调用顺序依次是负载均衡、集群容错、服务降级。从解决问题角度分析,负载均衡解决了「选哪一个」问题,集群.原创 2022-01-28 13:29:56 · 1387 阅读 · 0 评论 -
一文讲清楚DUBBO SPI机制六个特性
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述SPI(Service Provider Interface)是一种服务发现机制,本质是将接口实现类全限定名配置在文件,并由服务加载器读取配置文件加载实现类,这样可以在运行时动态为接口替换实现类,通过SPI机制可以为程序提供拓展功能。之前在文章《JDK SPI机制》已经讨论了JDK SPI如何实现,在文章《S.原创 2022-01-18 12:26:00 · 667 阅读 · 0 评论 -
警惕看不见的重试机制:为什么使用RPC必须考虑幂等性
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习0 文章概述在RPC场景中因为重试或者没有实现幂等机制而导致的重复数据问题,必须引起大家重视,有可能会造成例如一次购买创建多笔订单,一条通知信息被发送多次等问题,这是技术人员必须面对和解决的问题。有人可能会说:当调用失败时程序并没有显示重试,为什么还会产生重复数据问题呢?这是因为即使没有显示重试,RPC框架在集群容错机制中.原创 2021-06-08 18:39:55 · 813 阅读 · 1 评论 -
DUBBO消费异步化实例与源码分析
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习1 文章概述我们在服务端开发时如果需要实现异步调用,首先声明一个线程池,并将调用业务方法封装成一个任务提交至线程池,如果不需要获取返回值则封装为Runnable,需要获取返回值则封装为Callable并通过Future对象接受结果。class CalcTask1 implements Callable<Integer.原创 2021-05-09 17:07:44 · 219 阅读 · 1 评论 -
为什么一段看似正确的代码会导致DUBBO线程池被打满
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习1 一个公式我们在之前一篇文章中用一个公式分析了为什么DUBBO线程池为什么会打满,在本文开始时我们不妨先回顾一下这个公式:一个公司有7200名员工,每天上班打卡时间是早上8点到8点30分,每次打卡系统耗时5秒。请问RT、QPS、并发量分别是多少?RT表示响应时间,问题已经告诉了我们答案:RT = 5QPS表示每秒查询.原创 2021-05-03 21:02:57 · 465 阅读 · 1 评论 -
一个公式看懂:为什么DUBBO线程池会打满
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,欢迎大家加我微信「java_front」一起交流学习0 文章概述大家可能都遇到过DUBBO线程池打满这个问题,刚开始遇到这个问题可能会比较慌,常见方案可能就是重启服务,但也不知道重启是否可以解决。我认为重启不仅不能解决问题,甚至有可能加剧问题,这是为什么呢?本文我们就一起分析DUBBO线程池打满这个问题。![在这里插入图片描述](https://img-blog.csdnimg..原创 2021-04-17 16:14:26 · 1109 阅读 · 0 评论 -
面试官从Dubbo泛化调用问到了设计模式,我们聊了三十分钟
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,欢迎大家加我微信「java_front」一起交流学习1 泛化调用是什么对于JAVA服务端开发者而言,我们在使用Dubbo时并不经常使用泛化调用,通常方法是在生产者发布服务之后,消费者可以通过引入生产者提供的client进行调用。那么泛化调用使用场景是什么呢?第一种场景是消费者不希望引入生产者提供的client依赖,只希望关注调用哪个方法,需要传什么参数即可。第二种场景是消费者不是.原创 2021-04-03 20:26:00 · 292 阅读 · 0 评论 -
什么是服务降级?Dubbo服务降级不能降级哪类异常?
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,欢迎大家加我微信「java_front」一起交流学习1 服务雪崩在分析服务降级之前,我们首先谈一谈什么是服务雪崩。现在我们假设存在A、B、C、D四个系统,系统间存在如下调用链路:正常情况系统之间调用正常,系统运行平稳但是此时用户访问系统A的流量激增,这些流量在瞬间透传到B、C、D三个系统。B、C系统服务器节点较多抗住了这些流量,但是D系统服务器节点较少,没有抗住这些流量,导致.原创 2021-01-22 22:38:02 · 589 阅读 · 0 评论 -
长文详解:DUBBO源码使用了哪些设计模式
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,欢迎大家加我微信「java_front」一起交流学习0 文章概述DUBBO作为RPC领域优秀开源的框架在业界十分流行,本文我们阅读其源码并对其使用到的设计模式进行分析。需要说明的是本文所说的设计模式更加广义,不仅包括标准意义上23种设计模式,还有一些代码中常见经过检验的代码模式例如双重检查锁模式、多线程保护性暂停模式等等。1 模板方法模板方法模式定义一个操作中的算法骨架,一.原创 2021-01-02 13:02:43 · 537 阅读 · 1 评论 -
「DUBBO系列」服务超时机制源码分析
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,欢迎大家加我微信「java_front」一起交流学习1 文章概述DUBBO有很多地方可以配置超时时间,可以配置在消费者,可以配置在生产者,可以配置为方法级别,可以配置为接口级别,还可以配置为全局级别,DUBBO官方文档介绍这些配置优先级如下:第一优先级:方法级 > 接口级 > 全局级第二优先级:消费者 > 生产者本文从源码层面对超时机制进行分析,我们首先分.原创 2020-12-21 12:38:52 · 410 阅读 · 1 评论 -
「DUBBO系列」JDK SPI机制原理
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习1 文章概述SPI(Service Provider Interface)是一种服务发现机制,本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件加载实现类,这样可以在运行时动态为接口替换实现类,我们通过 SPI 机制可以为程序提供拓展功能。本文我们介绍JDK SPI使用方法并通过分析源码深入理解。后续文章介绍.原创 2020-11-14 11:43:34 · 172 阅读 · 0 评论 -
多线程设计模式:保护性暂停模式详解以及其在DUBBO应用源码分析
欢迎关注公众号【JAVA前线】查看精彩文章1 文章概述在多线程编程实践中,我们肯定会面临线程间数据交互的问题。在处理这类问题时需要使用一些设计模式,从而保证程序的正确性和健壮性。保护性暂停设计模式就是解决多线程间数据交互问题的一种模式。本文先从基础案例介绍保护性暂停基本概念和实践,再由浅入深,最终分析DUBBO源码中保护性暂停设计模式使用场景。2 什么是保护性暂停我们设想这样一种场景:线程A生产数据,线程B读取数据这个数据。但是有一种情况:线程B准备读取数据时,此时线程A还没有生产出数据。.原创 2020-10-31 20:09:55 · 330 阅读 · 0 评论 -
「DUBBO系列」线程池打满源码分析
1 文章概述DUBBO线程池打满是一个严重问题,本文通过一个实例分析如何排查这个问题,首先我们用代码重现这个异常。1.1 生产者配置<beans> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:protocol name="dubbo" port="8888" /> <dubbo:service interface="com.itxpz.dubbo.demo....原创 2020-06-17 19:13:04 · 937 阅读 · 0 评论 -
「DUBBO系列」线程池策略源码分析
1 文章概述本系列文章已经分析了DUBBO线程模型实现原理,本文简单进行回顾。我们知道DUBBO提供五种线程模型all所有消息都派发到业务线程池,包括请求,响应,连接事件,断开事件,心跳direct所有消息都不派发到业务线程池,全部在IO线程直接执行message只有请求响应消息派发到业务线程池,其它连接断开事件,心跳等消息直接在IO线程执行execution只有请求消息派发到业务线程池,响应和其它连接断开事件,心跳等消息直接在IO线程执行connection在IO线程上原创 2020-06-07 21:56:31 · 425 阅读 · 0 评论 -
「DUBBO系列」并发控制源码分析
1 文章概述生产者和消费者提供了并发控制配置,通过并发控制配置项可以实现限流功能,从而有效进行系统保护。本文我们介绍生产者和消费者并发控制怎样配置并且在源码层面分析并发控制实现原理。2 生产者2.1 配置方式HelloService服务每个方法在每个生产节点执行并发数不超过100<beans> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:protocol nam.原创 2020-06-07 21:44:09 · 289 阅读 · 0 评论 -
「DUBBO系列」责任链模式源码分析
1 文章概述责任链模式将请求发送和接收解耦,让多个接收对象都有机会处理这个请求。这些接收对象串成一条链路并沿着这条链路传递这个请求,直到链路上某个接收对象能够处理它。本文我们介绍责任链模式两种应用场景和四种代码实现方式,最后介绍了DUBBO如何应用责任链构建过滤器链路。2 应用场景2.1 命中立即中断我们实现一个关键词过滤功能。系统设置三个关键词过滤器,输入内容命中任何一个过滤器规则就返回校验不通过,链路立即中断无需继续进行。(1) 实现方式一public interface.原创 2020-06-07 21:33:57 · 956 阅读 · 0 评论