首页
学习
活动
专区
工具
TVP
发布

wannshan(javaer,RPC)

专栏作者
44
文章
63680
阅读量
29
订阅数
dubbo SPI 主要配置技术解读
dubbo 的SPI 不但实现了实现类的动态加载,还实现了类似spring 的IOC,AOP的功能
技术蓝海
2020-10-23
8241
认识dubbo
dubbo是基于java (目前最新是2.7.8发布版本)语言编写的一个高性能RPC框架,前身是阿里内部的后台服务框架,后来开源接收社区提交,现在属于apache 软件基金组织的一个开源项目
技术蓝海
2020-10-22
3950
dubbo集群容错策略的代码分析3
接上篇 https://cloud.tencent.com/developer/article/1109591 dubbo 版本2.5.3 通过代码可以看到failback,failover,failsafe,forking,failfast都通过了父类的select方法选择服务提供者(invoker) 这个方法里,也包含有dubbo处理集群的机制,包括使用负载均衡的策略。通知可以看到available和broadcast方案目前没用到负载均衡策略,先看先看select方法 /** * 使用lo
技术蓝海
2018-04-26
9370
dubbo负载均衡代码分析2(一致性hash策略)
接上篇 https://cloud.tencent.com/developer/article/1109586 说 这篇说dubbo一致性hash负载均衡策略。要先大致了解下,什么是一直性hash算法。 一致性hash算法最早是用来解决,分布式缓存在有节点变动(新增后者删除)后,节点负载不均衡问题的。 而用一致性hash算法,就是为了达到,当集群中有节点加入或者节点删除时,尽量把负载的变化(加负,减负)均摊到每一个节点。 而没有接点变化时,一直性hash本身就是基本均衡(看hash函数)的负载策略。
技术蓝海
2018-04-26
1.3K0
dubbo负载均衡代码分析1(leastactive策略)
接上篇 https://cloud.tencent.com/developer/article/1109584 既然有集群容错,自然会有负载均衡。dubbo通过spi默认实现了4种lb策略 分别是 权重随机(random),实现类RandomLoadBalance 权重轮询(roundrobin),实现类RoundRobinLoadBalance 最少活跃(leastactive)负载策略,实现类LeastActiveLoadBalance 一致性hash(consistenthash)实现类Co
技术蓝海
2018-04-26
8580
dubbo负载均衡代码分析3(加权轮询策略)
接上篇 https://cloud.tencent.com/developer/article/1109577 加权轮询,我第一次没理解,个人觉得不好理解。于是先仿照源码抽象出逻辑模型,代码如下: public static void main(String[] args) { //存储调用的方法和总的调用次数的map final ConcurrentMap<String, AtomicInteger> sequences = new ConcurrentHashM
技术蓝海
2018-04-26
1.1K0
dubbo集群容错策略的代码分析2
接上篇 https://cloud.tencent.com/developer/article/1109572 dubbo版本2.5.3 dubbo本身集群容错策略有7种。都实现了Cluster接口(
技术蓝海
2018-04-26
1.9K0
dubbo集群容错机制代码分析1
dubbo版本2.5.3 我们这里以zookeeper作为注册中心为例说明。 这里说的集群,可以理解为,一个接口服务对应有多个提供者。 在dubbo的调用方(reference)看来,每个提供方(service)对应一个invoker。 关于一个调用方对应多个提供方的场景大概包括三大类: 1,者调者订阅一个注册中心,此注册中心,同一个服务有多个提供者(以不同机器,端口,版本等发布的服务) 2,者调者订阅多个注册中心的服务,每个注册中心都有引用的服务的提供者(一个或者多个)。 3,调用方,通过url
技术蓝海
2018-04-26
1K0
dubbo路由代码分析4(script路由器file路由器)
接上篇 https://cloud.tencent.com/developer/article/1109564 这篇分析下,script类型和file类型路由器。 目前,script类型和file路由规则,还不能通过dubbo的admin管理页面添加。可以通过java api添加。具体看这里 先说,script路由器,它由ScriptRouterFactory路由工厂创建如下: public class ScriptRouterFactory implements RouterFactory {
技术蓝海
2018-04-26
1.6K0
dubbo路由代码分析3(condition路由器)
这篇说说,dubbo condition类型路由器的路由解析和执行过程 由 https://cloud.tencent.com/developer/article/1109552 这篇我们可以看到 condition类型路由器是由condition路由工厂获取,源码如下 public class ConditionRouterFactory implements RouterFactory { public static final String NAME = "condition";
技术蓝海
2018-04-26
1.4K0
dubbo路由机制分析2(路由设置存储)
接上次 https://cloud.tencent.com/developer/article/1109552 目前dubbo支持的路由类型分三种conditon,script,file 这次说conditon路由规则的设置方法和存储方式 向注册中心写路由规则,dubbo目前提供两种方式, 1,通过api代码写路由规则 如下:以zookeeper为注册中心为例 RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(
技术蓝海
2018-04-26
1.5K0
dubbo路由机制代码分析1
这回说说,dubbo路由特性,dubbo的路由干的事,就是一个请求过来, dubbo依据配置的路由规则,计算出哪些提供者可以提供这次的请求服务。 所以,它的优先级是在集群容错策略和负载均衡策略之前
技术蓝海
2018-04-26
1.1K0
dubbo通信消息解析过程分析(1)
由于rpc底层涉及网络编程接口,线程模型,网络数据结构,服务协议,细到字节的处理。牵涉内容较多,本文就先从一个点说起。通过源码说明下dubbo通过netty框架做传输层,从接到数据字节流到把字节转换为dubbo上层可读的Request消息对象的过程。dubbo还支持mina,grizzly做底层传输层。这里包括两部,反序列化和解码。这篇主要是说解码的过程。 本文是说明下图dubbo架构图中红框中的部分。
技术蓝海
2018-04-26
1.7K0
dubbo 缓存的使用和实现解析
dubbo缓存主要实现,对方法调用结果的缓存。 在服务消费方和提供方都可以配置使用缓存。 以消费方为例,可以配置全局缓存策略,这样所有服务引用都启动缓存 <dubbo:consumer cache="lru"/> 可以对某个服务引用配置缓存策略 <dubbo:reference id="demoService"   interface="demo.dubbo.api.DemoService" cache="lru"  > 也支持对单个方法启用缓存策略 <dubbo:reference id="
技术蓝海
2018-04-26
2.1K0
dubbo @Activate 注解使用和实现解析
Activate注解表示一个扩展是否被激活(使用),可以放在类定义和方法上,dubbo用它在spi扩展类定义上,表示这个扩展实现激活条件和时机。先看下定义: @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) public @interface Activate { /** * Group过滤条件。 * <br /> * 包含{@l
技术蓝海
2018-04-26
1.9K0
dubbo请求处理线程模型实现分析
如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识, 则直接在 IO 线程上处理更快,因为减少了线程池调度。
技术蓝海
2018-04-26
4.2K0
dubbo监控机制之监控中心实现分析
github 地址 https://github.com/apache/dubbo-admin ,被单独移到dubbo-admin中维护,在master 分支中
技术蓝海
2018-04-26
3.1K0
dubbo监控机制之监控数据上报分析
dubbo对服务运行的监控,是通过从provider和consumer方收集调用信息存盘后,再由监控中心对数据分析绘表的方式完成的。 具体实现是provider和consumer向监控中心推数据。 今天以服务消费方为例,通过源码分析下消费方向监控中心上报数据的过程。 配置监控中心的两种方式:
技术蓝海
2018-04-26
1.8K0
dubbo基于spring运行原理解析
dubbo是基于spring构建和运行的,兼容spring配置。这篇说说dubbo基于spring的过程。 dubbo首先利用了从spring2.0开始的一个特性,Extensible XML authoring,扩展spring了标签功能。 关于如何利用spring扩展自己的标签,可以参考下官方介绍 https://docs.spring.io/spring/docs/3.2.18.RELEASE/spring-framework-reference/htmlsingle/#extensible-xml 根据文档的说法,需要如下4步: 1,编写xml,描述需要扩展的标签的配置属性,dubbo实现放在jar包META-INF/dubbo.xsd文件里 同时通过编写META-INF/spring.handlers文件,提供给spring,内容如下 http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd xsd文件也很好编写阅读,里面有继承和嵌套的概念。 2,写一个NamespaceHandler接口实现类,dubbo的实现类是DubboNamespaceHandler 同时通过编写META-INF/spring.schemas文件,提供给spring,内容如下: http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler 3,编写一个(或者多个)BeanDefinitionParser实现类,用来解析扩展的元素,dubbo实现类是DubboBeanDefinitionParser, 这个类也是真正的需要自己处理的代码所在。 4,把以上组件注册给spirng,这个dubbo其实在DubboNamespaceHandler类里。
技术蓝海
2018-04-26
1.8K0
dubbo SPI机制源码分析
dubbo是微内核架构,SPI是dubbo的架构根基 什么是微内核?还是开闭原则的应用。把核心流程架构固定,但流程各个节点对重新改进是开放的,也可以说是面下接口编程。具体实现方法就是SPI(servi
技术蓝海
2018-04-26
1.6K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档