游戏业务逻辑和DB无阻塞实现
来源:互联网 发布:java 计算余弦相似度 编辑:程序博客网 时间:2024/05/21 07:13
程序阻塞的情况通常是等待资源,通常业务逻辑都是附带DB操作的,有时候因为DB阻塞或者执行时间过长,导致业务层的线程给占用,比如开了4个线程来处理业务,那么当4个线程
都处理阻塞时,其他新请求业务的用户将得不到满足,不管用户的业务逻辑是否有进行DB操作。通常作法是这样的
方法1(...参数){
1.业务逻辑判断
2.DB操作(一般事务处理)
3.返回
}
通常是在第2步执行时间过长引起阻塞,那么是否可以将第2步放到另外的线程(或线程池)里跑呢?等第2步执行完了,我们再让该任务回来业务逻辑线程(或线程池)里,然后执行第3
步.如果这种方法可行,那么业务逻辑将变成这样
业务逻辑层方法1(...参数){
1.业务逻辑判断
2.DB任务(放到DB操作线程池)
}
DB层方法2(...参数){
1.DB操作(一般事务处理)
2.业务逻辑任务(回到业务逻辑池)
}
业务逻辑层方法3(...参数){
1.业务逻辑返回
}
很多情况都可以这样处理,多人在线游戏在逻辑服务器跟DB服务器之间通常都有一个数据服务器,数据服务器就是专门来做第2步操作的,不管数据服务器处理多慢,其主要的逻辑服务器都能满足业务逻辑需要。
业务逻辑服务器处理业务的线程是有限的,那么我们不可能因为某个玩家请求某个特定的业务,因为这个业务DB执行时间过长而使该线程一直被该业务占用,在这种情况下,我们把DB任务入到数据服务器,由数据服务器去处理,当数据服务器返回时,这时候再继续未完成的逻辑。
端游作法一般就是多台服务台处理多个应用层,跟上面情况差不多。
页游一般是两台一组,DB和游戏服务器,游戏服务器可以靠开启多条线程或多个线程池来实现这样的架构逻辑。
- 游戏业务逻辑和DB无阻塞实现
- 业务逻辑和算法
- 自己写“俄罗斯方块”(一).实现基本业务逻辑和绘图
- 业务逻辑实现方式选择
- 浅谈领域逻辑和业务逻辑
- UI和业务逻辑分离
- 业务主键和逻辑主键
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 翻翻看游戏实现逻辑
- 获取网站logo
- Linux命令整理
- MODBUS RTU MASTER的C语言代码
- 分组报表组件填充布局
- ubuntu12.04LTS 32位emacs23.3安装与配置
- 游戏业务逻辑和DB无阻塞实现
- Eclipse下点击类名方法名如何连接到相应的Android源代码
- 面向对象 -- 多态
- Linux用户管理详解(中)
- TOP中排序的问题
- 正则表达式入门利器
- perl简单学习笔记(二)
- Linux用户管理详解大结局(下)
- 开源