dubbo

本文深入解析SOA架构概念,探讨分布式系统中任务划分与独立性,重点介绍Dubbo服务治理中间件的功能与组件,包括容器、服务生产者、注册中心、消费者及监控中心的运作流程。详细阐述Dubbo在服务注册、调用、负载均衡及容错策略上的机制,同时对比多种协议特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SOA的理解:

可以把SOA架构看作成一个完整的企业架构,企业里有各种业务,每个业务都有自己的服务,业务通过企业服务总线串联起来,有个服务注册中心,业务把自己的服务注册到注册中心。消费者可以在注册中心找到自己的服务,完成自己的需求。达到一站式服务。

分布式的理解

​ 简单的讲: 大任务划分为小任务。一个或多个人完成同一任务中的不同部分。
​ 被分解后的小任务相互之间有独立性,节点之间只管接受和传递信息。

Dubbo:

什么是dubbo?

Dubbo是个服务治理中间件,是一款远程调用框架,就是资源调度和治理中心的管理工具。;

Dubbo的组成部分:

​ 1、容器 (spring容器)

​ 2、服务生产者

​ 3、注册中心 (zookeeper 、redis (发布订阅 -频道))

​ 4、服务消费者

​ 5、监控中心(可以查看哪个方法的使用次数)

Dubbo的运行流程:

​ 容器启动,服务生产者会把自己的服务的接口地址报告给注册中心。服务消费者订阅它需要的服务,他去查询注册中心,问问是否有地址吗?有就返回服务地址。消费者拿到地址就可以去调用服务。监控中心:监控生产者和消费者的健康状况。

【dubbo,zookeeper流程,从生产者到消费者】
​ 生产者和消费者都要进行dubbo的配置 ,都需要注册zookeeper主机地址,
​ 生产者要配置dubbo使用的协议(默认dubbo)和端口号用来暴露服务到注册中心,
​ 生产者定义接口和实现类,并在配置文件中进行注册服务,
​ 生产者启动时会自动把注册的接口的信息转化为一个url,
​ 并通过hessian二进制序列化存储到zookeeper的节点中
​ 消费者在配置文件中引入要使用的服务接口,
​ 消费者启动时会从zookeeper中获取与引用的接口匹配的url,
​ 并把自己的信息留在zookeeper中
​ 服务者和消费者在zookeeper中的信息都会被监控中心monitor获取到,

​ 可以通过monitor服务对zookeeper中的内容进行管理

【服务的配置】
    服务者
	<!-- 给服务起一个名称,唯一标识,用来监控服务器调用关系,调用次数 -->
	<dubbo:application name="provider" />
	<!-- 使用dubbo官方推荐注册中心模式注册对象 -->
	<dubbo:registry address="zookeeper://192.168.17.129:2181" />
	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />
	<!-- 发布服务:itemService 注册对象,通过接口来注册对象 -->
	<!-- 和本地bean一样实现服务 -->
	<bean id="xxx.xxx.xxx.XxxImpl" class="xxx.xxx.xxx.XxxImpl" />
	<dubbo:service interface="xxx.xxx.xxx.Ixxx"
		ref="xxxImpl" />

    消费者
	<!-- 给服务起一个名称,唯一标识,用来监控服务器调用关系,调用次数 -->
	<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
	<dubbo:application name="consumer" />
	<!-- 使用multicast广播注册中心暴露发现服务地址 -->
	<dubbo:registry address="zookeeper://192.168.17.129:2181" />
	<!-- 生成远程服务代理,可以和本地bean一样使用itemService -->
	<dubbo:reference id="xxx"
		interface="xxx.xxx.xxx.Ixxx" timeout="1000000" retries="2"/>

注册中心挂了会产生什么影响?

答:对服务的调用没有任何影响,因为本地缓存了服务端的地址。

​ 为什么使用Dubbo?答:1、Dubbo提供了丰富的协议选择:Dubbo协议(服务调用),注册服务:zookeeper协议,tcp协议,http协议等。协议越底层,传输效率越高。 2、io的选择:异步的nio。

Dubbo负载均衡策略:

random loadbalance :随机负载均衡

默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。

roundrobin loadbalance 均匀负载均衡

均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性能差的机器负载过高。所以此时需要调整权重,让性能差的机器承载权重小一些,流量少一些。

leastactive loadbalance 不活跃的性能差的机器更少的请求**

这个就是自动感知一下,如果某个机器性能越差,那么接收的请求越少,越不活跃,此时就会给不活跃的性能差的机器更少的请求。

consistanthash loadbalance 一致性hash

一致性Hash算法,相同参数的请求一定分发到一个provider上去,provider挂掉的时候,会基于虚拟节点均匀分配剩余的流量,抖动不会太大。如果你需要的不是随机负载均衡,是要一类请求都到一个节点,那就走这个一致性hash策略

dubbo集群容错策略:

failover cluster模式 (默认)

失败自动切换,自动重试其他机器,默认就是这个,常见于读操作。

failfast cluster模式

一次调用失败就立即失败,常见于写操作。

failsafe cluster模式

出现异常时忽略掉,常用于不重要的接口调用,比如记录日志。

failback cluster模式

失败了后台自动记录请求,然后定时重发,比较适合于写消息队列这种。

forking cluster模式

并行调用多个provider,只要一个成功就立即返回。

broadcacst cluster模式

逐个调用所有的provider

dubbo动态代理策略:

默认使用javassist动态字节码生成,创建代理类

Dubbox支持的协议:

​ dubbo协议(默认),单一长连接,NIO异步通信,基于**hessian(默认)**作为序列化协议. 适用的场景就是:传输数据量很小(每次请求在100kb以内),但是并发量很高 . 注意Dubbo的默认配置是100个连接数

​ http协议 json序列化

​ rmi协议 java二进制序列化

​ webservice协议 SOAP文本序列化

​ hessian序列化,传输的数据格式为PB,谷歌出品的一种轻量级并且高效的结构化数据存储格式,性能比 xml,json要高很多,

​ 相对于xml,json ,PB结构数据使用了proto编译器,自动进行序列化和反序列化,速度非常快,第二数据压缩效果好,体积比xml,json小,在网络传输上有优势,带宽和速度上有优势.

zookeeper的个人理解和怎么使用的

个人理解:Zookeeper是在分布式系统中帮助我们协调任务,能够在各个服务或节点之间进行协调的服务或中间人。

使用:在服务方的配置文件中配置zk的的地址和暴露接口,而消费方在配置文件中配置zk地址和扫描服务方的接口。

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值