使用 Scut 搭建通服架构
2024-09-02 07:26:08
整体通服的架构图如下:
整体思路:
- 尽量将公共的业务逻辑分拆到单个业务服务器;
- 公共业务RDB读写分离,提高IO并发量;
- 角色简要信息、角色战斗信息修改后将ID压入修改队列,简要信息每3分钟通知同步一次redis,战斗信息每10分钟通知同步一次redis;
- 单公共业务服务器,是以单机架构还是分布式架构?
- 方法一:采用单物理机构型,部署Scut,在对内存数据进行修改时加互斥锁,而且要考虑多线程操作时,向redis写缓存队列插入写操作的乱序问题;
- Scut 支持 ModifyLock 对数据进行原子操作;
- Scut 的redis写缓存队列是100ms定时批量处理一次,只会取最新数据;
- 方法二:在Scut基础上封装一组分布式套件:支持“redis读取-数据处理-redisWatch-redis写入”,利用redis的Watch机制做多线程同步;
- 优劣分析:
- 方法一的特点是单公共业务服务器对应单RDB实例,响应快、代码简单,瓶颈在单业务服务器的并发量上;
- 方法二的特点是多公共业务服务器对应单RDB实例,可充分挖掘Redis的并发读写能力(肯定比单业务服务器并发强),但单次请求响应更慢、代码更为复杂一些;
- 经典的分布式应用场景应该是:没有交互的、单服务器、单DB结构,通过简单扩展机器数量就可以实现大并发;
- 相比于方法二的横向扩展机器数量,也可以为方法一提升单台服务器的性能,使服务器与reds同时到达性能瓶颈;
- 方法一:采用单物理机构型,部署Scut,在对内存数据进行修改时加互斥锁,而且要考虑多线程操作时,向redis写缓存队列插入写操作的乱序问题;
最新文章
- MySQL学习(二)SQL语句的总结
- JAVA CDI 学习(4) - @Alternative/@Default/@Any &; Extension
- Java小程序--抓取emai
- Phonegap通过JS访问本地接口的两种方法
- [转]T4模版引擎之生成数据库实体类
- [0] CollectionBase与索引符DictionaryBase与迭代器
- Python学习九:列表生成式
- 【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles
- .Net Core 1.0升级2.0(xproj项目迁移到.csproj )
- CGI、FastCGI、PHP-FPM联系与区别(理解总结自其他博文)
- could not read Username for 'https://github.com': No error
- JS访问或设置cookie的方法+跨域调用方法
- IE9下table th不显示边框解决方法
- python 全栈开发,Day135(爬虫系列之第2章-BS和Xpath模块)
- wamp3.1.0下载地址
- 7.4 C++标准模板库(STL)的概念
- Karma - MVC Framework for Unity3D
- jdk8-lambda表达式的使用
- Python:列表生成式
- HDU 3068 最长回文 manacher 算法,基本上是O(n)复杂度
热门文章
- C#执行参数为游标 返回一个记录集的Oracle存储过程
- return的用处
- win10亮度不能调节的解决方法
- Cubieboard 开箱和入门 | Name5566 分类: cubieboard 2014-11-08 17:27 251人阅读 评论(0) 收藏
- [JS][jQuery]remove()与 empty()的差别
- 基于amoeba实现mysql数据库的读写分离/负载均衡
- 编写android的widget
- 如何自定义UIPickerView中文本的大小和文本靠左或靠右显示?
- 2进制,16进制,BCD,ascii,序列化对象相互转换
- C#中的三种 加密解密