整体通服的架构图如下:

整体思路:

  • 尽量将公共的业务逻辑分拆到单个业务服务器;
  • 公共业务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同时到达性能瓶颈;

最新文章

  1. MySQL学习(二)SQL语句的总结
  2. JAVA CDI 学习(4) - @Alternative/@Default/@Any & Extension
  3. Java小程序--抓取emai
  4. Phonegap通过JS访问本地接口的两种方法
  5. [转]T4模版引擎之生成数据库实体类
  6. [0] CollectionBase与索引符DictionaryBase与迭代器
  7. Python学习九:列表生成式
  8. 【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles
  9. .Net Core 1.0升级2.0(xproj项目迁移到.csproj )
  10. CGI、FastCGI、PHP-FPM联系与区别(理解总结自其他博文)
  11. could not read Username for 'https://github.com': No error
  12. JS访问或设置cookie的方法+跨域调用方法
  13. IE9下table th不显示边框解决方法
  14. python 全栈开发,Day135(爬虫系列之第2章-BS和Xpath模块)
  15. wamp3.1.0下载地址
  16. 7.4 C++标准模板库(STL)的概念
  17. Karma - MVC Framework for Unity3D
  18. jdk8-lambda表达式的使用
  19. Python:列表生成式
  20. HDU 3068 最长回文 manacher 算法,基本上是O(n)复杂度

热门文章

  1. C#执行参数为游标 返回一个记录集的Oracle存储过程
  2. return的用处
  3. win10亮度不能调节的解决方法
  4. Cubieboard 开箱和入门 | Name5566 分类: cubieboard 2014-11-08 17:27 251人阅读 评论(0) 收藏
  5. [JS][jQuery]remove()与 empty()的差别
  6. 基于amoeba实现mysql数据库的读写分离/负载均衡
  7. 编写android的widget
  8. 如何自定义UIPickerView中文本的大小和文本靠左或靠右显示?
  9. 2进制,16进制,BCD,ascii,序列化对象相互转换
  10. C#中的三种 加密解密