您的位置:首页 > 其它

5.Utm线程模型

2016-03-28 10:17 197 查看
Utm线程模型

游客请求和用户请求分别调用UserThreadModeFilter的handleVisitorRequest和handleUserRequest方法,之后再调用各自的过滤器(在UserThreadMode实例化时传入)处理。

默认的游客处理器:VisitorRequestFilterNotQueue:并没有采取队列的形式,直接调用线程池去处理请求。

默认的用户请求处理器:RequestFrequentFilter:将消息放入用户的qtm任务队列中,并触发qtm线程去处理请求;该Filter还会过滤用户频繁的请求( minGap毫秒内超过ringSize个请求,而且违反次数超过illegalMax次,则会认定请求过于频繁)(更详细说明可以查看该类的说明)

如下图,用户线程池为ExcutorService1,游客线程池为ExcutorService2,默认情况下两个使用的其实是同一个线程池,既:ExcutorService1= ExcutorService2,如需要修改,可以调用UserThreadMode的最基本的构造方法(该构造方法由开发者指定游客过滤器和用户过滤器(可以为其指定不同的线程池),其他的构造方法会尝试帮用户构建部分的内容,使得使用起来更加的方便)或者继承重写UserThreadMode的构造方法。

Utm对于用户任务队列的长度并没有限制,而执行线程池ExcutorService是会有长度限制的,utm使用的线程池必须继承LimitedUnboundedThreadPoolExecutor,该类的构造函数参数limitedQueueSize就是队列长度的限制,实际执行中有可能超过该长度,因为utm不会尝试抛弃重要的请求(用户退出、断线等IRequestHandler.isLimited返回false的处理器),但是如果是普通的请求,则当队列满的时候会调用该处理器的queueFull方法(建议只做简单处理,因为服务器队列满往往意味着已经不堪重负了(也有可能是队列长度和线程数量没有设置好,导致无法发挥服务器的处理能力))。



1.Utm简介

2. Utm 模块设计

3. Utm详细实现-用户生命流程

4. Utm详细实现-用户资源管理

5.Utm线程模型

6. Utm示例-公共部分

7. Utm示例-SmartFoxServer集成

8. Utm示例-Netty集成

9.(1.0.2版本更新)用户队列管理 与 用户异常处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息