Dubbo -- 系统学习 笔记 -- 示例 -- 线程模型
2024-08-26 16:45:23
示例
想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式
线程模型
事件处理线程说明
- 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度。
- 但如果事件处理逻辑较慢,或者需要发起新的IO请求,比如需要查询数据库,则必须派发到线程池,否则IO线程阻塞,将导致不能接收其它请求。
- 如果用IO线程处理事件,又在事件处理过程中发起新的IO请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。
- Dispatcher
- all 所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,心跳等。
- direct 所有消息都不派发到线程池,全部在IO线程上直接执行。
- message 只有请求响应消息派发到线程池,其它连接断开事件,心跳等消息,直接在IO线程上执行。
- execution 只请求消息派发到线程池,不含响应,响应和其它连接断开事件,心跳等消息,直接在IO线程上执行。
- connection 在IO线程上,将连接断开事件放入队列,有序逐个执行,其它消息派发到线程池。
- ThreadPool
- fixed 固定大小线程池,启动时建立线程,不关闭,一直持有。(缺省)
- cached 缓存线程池,空闲一分钟自动删除,需要时重建。
- limited 可伸缩线程池,但池中的线程数只会增长不会收缩。(为避免收缩时突然来了大流量引起的性能问题)。
配置如:
<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" />
啦啦啦
最新文章
- Leetcode: Validate IP Address
- Android框架之AndroidAnnotations详细讲解
- 探究JVM——垃圾回收
- UIlabel 属性text
- 仿知乎Android端回答UI
- [你必须知道的.NET]第一回:恩怨情仇:is和as
- 第三次作业,GUI设计之最大子序列和
- SQLSERVER TRUE、FALSE、UNKNOWN
- Objc中处理数组越界的一种办法
- HNOI2019游记
- Solaris 11配置IPS安装系统包(类似linux中的yum源)
- 关于js中this指向的理解总结!
- JMX RMI 攻击利用
- LINUX ORACLE 启动与关闭
- php curl常见错误:SSL错误、bool(false)
- 大数据调错系列之:自己总结的myeclipse连接hadoop会出现的问题
- 【SQLSERVER】动态游标的实现
- 2016级算法期末模拟练习赛-D.AlvinZH的序列问题
- NYOJ 208 Supermarket (模拟+并查集)
- UVA129 暴力dfs,有许多值得学习的代码
热门文章
- android开发(33) 让 actionbar 透明2
- 2012Hulu校园招聘笔试题
- Linux抓包工具
- Error:(1, 0) Plugin with id &#39;com.android.application&#39; not found
- Python之生成二面体群元素
- (笔记)Mysql命令desc:获取数据表结构
- JSONObject相关依赖架包下载(Maven依赖下载)
- C#提供-------AttributeUsage使用
- Ubuntu 14.04 LTS 安装 Juno 版 OpenStack Keystone
- ASP.NET EntityFrameworkCore code first 多对多设计