提交 01b7baf9 编写于 作者: 武汉红喜's avatar 武汉红喜

..

上级 e3e54f25
......@@ -21,11 +21,11 @@ IDEA VM options 设置 -Ddubbo.registry.register=false (有id时为-Ddubbo.regis
- 集群容错模式:默认 cluster="failover",其他 failfast,failsafe,failback,forking,broadcast
- 负载均衡:默认 loadbalance="random",其他 roundrobin,leastactive,consistenthash
- 线程模型:默认 <dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="200" />
1. 如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。
2. 但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。
3. 如果用 IO 线程处理事件,又在事件处理过程中发起新的 IO 请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。
4. all 所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,心跳等。
5. message 只有请求响应消息派发到线程池,其它连接断开事件,心跳等消息,直接在 IO 线程上执行。
+ 如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。
+ 但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。
+ 如果用 IO 线程处理事件,又在事件处理过程中发起新的 IO 请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。
+ all 所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,心跳等。
+ message 只有请求响应消息派发到线程池,其它连接断开事件,心跳等消息,直接在 IO 线程上执行。
- 直连提供者:<dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />
- 只订阅(禁用注册):<dubbo:registry address="10.20.153.10:9090" register="false" />
- 人工管理服务上下线:<dubbo:registry address="10.20.141.150:9090" dynamic="false" />
......
......@@ -14,6 +14,10 @@
- ConsumerQueue相当于CommitLog的索引文件,消费者消费时会先从ConsumerQueue中查找消息在commitLog中的offset,再去
CommitLog中找元数据。如果某个消息只在CommitLog中有数据,没在ConsumerQueue中, 则消费者无法消费,RocketMQ的事务消息就
是这个原理。
- RocketMQ具有很好动态伸缩能力(非顺序消息),伸缩性体现在Topic和Broker两个维度。
+ Topic维度:假如一个Topic的消息量特别大,但集群水位压力还是很低,就可以扩大该Topic的队列数,Topic的队列数跟发送、消费速度成正比。
+ Broker维度:如果集群水位很高了,需要扩容,直接加机器部署Broker就可以。Broker起来后向Namesrv注册,Producer、Consumer通过Namesrv
发现新Broker,立即跟该Broker直连,收发消息。
### More
- [RocketMQ架构模块解析](https://blog.csdn.net/javahongxi/article/details/72956608)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册