Dubbo简介

Dubbo简介,第1张

Dubbo是Alibaba开源的分布式服务框架,它按照分层的方式来架构,使用这种方式可以使各层解耦。

Dubbo在调用远程的服务的时候再本地有一个接口,就想调用本地方法一样去调用,底层实现好参数传输和远程服务运行结果传回之后的返回。

Dubbo的特点:

(1)它主要使用高效的网络框架和序列化框架,让分布式服务之间调用效率更高。

(2)采用注册中心管理众多的服务接口地址,当你想调用服务的时候只需要跟注册中心询问即可,不像使用WebService一样每个服务都得记录好接口调用方式。

(3)监控中心时实现服务方和调用方之间运行状态的监控,还能控制服务的优先级、权限、权重、上下线等,让整个庞大的分布式服务系统的维护和治理比较方便。

(4)高可用,如果有服务挂了,注册中心就会从服务列表去掉该节点,客户端会像注册中心请求另一台可用的服务节点重新调用。同时注册中心也能实现高可用(ZooKeeper)。

(5)负载均衡,采用软负载均衡算法实现对多个相同服务的节点的请求负载均衡。

Dubbo需要四大基本组件:Rigistry,Monitor,Provider,Consumer。
1、监控中心的配置文件-dubboproperties文件

(1)容器,监控中心是在jetty和spring环境下运行,依赖于注册中心,日志系统是log4j

    dubbocontainer = log4j,spring,registry,jetty

(2)监控服务的名称,监控系统对整个Dubbo服务系统来说也是一个服务

    dubboapplicationname = simple-monitor

(3)服务的所有者,这是Dubbbo的服务的功能,可以指定服务的负责人

    dubboapplicationowner = coselding

(4)注册中心的地址,配置后监控中心就能通过注册中心获取当前可用的服务列表及其状态,在页面向你汇报Dubbo中的服务运行情况。

    dubboregistraddress = multicast://{ip}:{port} //广播

    dubboregistraddress = zookeeper://{ip}:{port} //zookeper

    dubboregistraddress = redis://{ip}:{port} //redis

    dubboregistraddress = dubbo://{ip}:{port} //dubbo

(5)dubbo协议端口号

    dubboprotocolport = 7070

(6)jetty工作端口号

    dubbojettyport = 8082

(7)工作目录,用于存放监控中心的数据

    dubbojettydirectory = ${userhome}/monitor

(8)监控中心报表存放目录

    dubbochartsdirectory=${dubbojettydirectory}/charts

(9)监控中心数据资料目录

    dubbostatisticsdirectory=${userhome}/monitor/statistics

(10)监控中心日志文件路径

    dubbolog4jfile=logs/dubbo-monitor-simplelog

(11)监控中心日志记录级别

    dubbolog4jlevel=WARN

2、Dubbo提供负载均衡方式

(1)Random,随机,按权重配置随机概率,调用量越大分布越均匀,默认方式。

(2)RounRobin,轮询,按权重设置轮询比例,如果存在比较慢的机器容易在这台机器上请求阻塞较多。

(3)LeastActive,最少活跃调用数,不支持权重,只能根据自动识别的活跃数分配,不能灵活调配。

(4)ConsistenHash,一致性hash,对相同参数的请求路由到一个服务提供者上,如果有类似灰度发布需求可采用。

3、Dubbo过滤器

Dubbo初始化过程加载ClassPath下的META-INF/dubbo/internal/,META-INF/dubbo/,META-INF/services/三个路径下的comalibabadubborpcFilter文件。文件内容:

    Name = FullClassName,这些类必须实现Filter接口。
自定义Filter类:

配置文件在配置过滤器,consumerxml中:
Dubbo对过滤器的加载过程:

    先加载三个路径下的comalibabadubborpcFilter文件里面的键值对,key为过滤器名称,value为过滤器的类的全限定名(这个类必须实现Dubbo中的Filter接口)。

    自定义的类中@Active注解是过滤器设定的全局基本属性。

    Spring在加载consumerxml文件时,通过 <dubbo:consumer filter="xxx" id = "xxx" retrries = "0">这个配置指定消费者端要加载的过滤器,通过filter属性指定过滤器名称。

@Activate注解-自动激活,group属性是表示匹配了对应的角色才被加载,value表示表明过滤条件,不写则表示所有条件都会被加载,写了则只有dubbo URL中包含该参数名且参数值不为空才被加载,这个参数会以dubbo协议的一个参数K-V对传到Provider。

4、Dubbo的Provider配置

5、Dubbo的Consumer配置

1、Dubbo是什么?

Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式框架。

2、为什么使用Dubbo?

很多公司都在使用,经过很多线上的考验,内部使用了Netty,Zookeeper,保证了高性能可用性。

使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可以提高业务复用灵活性扩展,使前端应用能快速的响应对边的市场需求。分布式架构可以承受更大规模的并发流量。

Dubbo的服务治理图:

3、Dubbo和Spring Cloud的区别

两个没有关联,但是非要说区别,有如下几点:

(1)通信方式不同,Dubbo使用RPC通信,Spring Cloud使用>默认情况下,每个dubbo服务都会被以InjvmProtocol注册到本地

可以通过设置scope来调整

根据url的protocol的injvm参数来获取InjvmProtocol协议对象,来暴露服务

在ReferenceConfig的createProxy会调用InjvmProtocolgetInjvmProtocol()的isInjvmRefer方法,是否是jvm引用

直接调用exporter的Invoker来执行

参考:
>dubbo启动有一个选项:即是否检查依赖的服务是否启动,把这个选项置为false就可以了。
这个是从文档上面摘下来的:
<dubbo:reference interface="comfooBarService" check="false" />


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12973644.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存