当前位置: 首页 >服务端 > Dubbo+rabbitMQ

Dubbo+rabbitMQ

Dubbo:

微服务框架,底层用的是RPC。zk宕机后,消费者能正确运行。zk会动态的向客户端更新服务列表信息。当zk宕机后,由于之前已经同步了zk的服务列表信息,所以客户端可以按照自己已经缓存的清单进行访问。

dubbo负载均衡策略:在reference标签中配置负载均衡策略;“loadbalance=” random ";四种:Random随机; RoundRobin轮循;LeastActive最少活跃调用数,使慢的提供者收到更少请求;ConsistentHash 一致性Hash,相同参数的请求总是发到同一提供者。

Dubbo通讯协议:采用单一长连接和 NIO 异步通讯,适合小数据量和高并发的服务调用。不适合传送大数据量的服务,比如传文件,传视频等。

Dubbo内置了的服务容器:Spring Container Jetty Container Log4j Container
Dubbo 的服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。

Dubbo缺点
性能低:分布式系统是跨进程,跨网络的,性能受网络延迟和带宽的影响。
可靠性差:高度依赖网络,任何一次远程调用都可能失败。

Dubbo里面的节点角色:

Dubbo与httpClient对比,httpClinet用的是http协议,发送的信息的太多,占用太多网络资源。
Dubbo 使用的是 RPC 通信,Spring Cloud 使用的是 HTTP RESTFul 方式。

Zookeeper:

rabbitMQ:

Exchanges: 交换机 作用:将消息发往不同的队列中
Queues:表示消息队列 存储数据的位置是内存。
消息队列模式:简单模式、工作模式、发布订阅模式、路由模式、主题模式
订阅与工作模式区别:订阅模式每个消费者得到的消息是一样的,工作模式每个消费者得到消息是不一样的。
解决高并发用工作模式;同一个消息,多个模块要处理用订阅。
路由模式:通过定义不同的路由key使得程序将消息发送到不同的队列中。
主题模式:可以通过路由key将消息发送到一类相同的key中 使用通配符实现;符号说明:#号:表示任意字符(任意个.);*号:任意单个字符或者词组(单个.)

原理:当客户端(生产者)将消息写入消息队列中时,消息队列中信息的数量加一。消费者实时监听消息队列,当消息队列中有消息时,则获取消息,之后执行业务逻辑.同时消息队列的数量减一。

数据持久化:队列持久化 + 消息持久化
队列持久化:在生产者和消费者两端设置队列时,设定队列的属性:boolean durable=true
消息持久化:在生产者中为要发送的消息设置属性Properties,实现消息持久化。
BasicProperties.Builder builder = new Builder();
builder.deliveryMode(2); // 把消息保存到硬盘上。
BasicProperties props = builder.build();
消息确认:自动确认和手动确认;
在使用channel链接consumer和队列时,为其设置属性:
boolean autoAck=false; 手动确认
boolean autoAck=true; 自动确认

元数据主要分为 Queue 元数据(queue 名字和属性等)、Exchange 元数据(exchange 名字、类型和属性等)、Binding 元数据(存放路由关系的查找表)
vhost内部均含有独立的 queue、exchange 和 binding 等,拥有独立的权限系统,可以做到 vhost 范围的用户控制,可以作为不同权限隔离的手段。
RAM node 和 disk node 的区别:RAM node 仅将 queue、exchange 和 binding等 RabbitMQ基础构件相关元数据保存到内存中,但 disk node 会在内存和磁盘中均进行存储。
routing_key 和 binding_key 的最大长度是255 字节。
死信队列:dead letter queue;当消息被 RabbitMQ server 投递到 consumer 后,但 consumer 却拒绝时(同时设置 requeue=false),那么该消息会被放入“dead letter”queue 中。该 queue 可用于排查 message 被拒绝原因。

作者:chichao1991
来源链接:https://blog.csdn.net/u012511463/article/details/88705843

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/112882.html

标签:Dubbo
分享给朋友:

“Dubbo+rabbitMQ” 的相关文章

[C#]richtextbox实现拖放 2022年05月17日 20:25:47
Logger打印等级设置 2022年05月19日 20:04:13
Hugo LoveIt主题配置与使用 2022年05月23日 21:56:27
信息系统合同管理 2022年05月24日 22:14:31
2.你中断线程的方式用对了么? 2022年05月26日 22:33:19
程序员怎么获得“睡后”收入 2022年06月04日 21:14:42
为啥 python自带的 pip运行不了? 2022年06月08日 10:23:15
numpy的安装和使用 2022年06月09日 23:34:54