在简谈即时聊天系统设计一文中我们架构了一个可用的聊天系统整体架构,这个架构可用,但是真正的实用角度来说,只能应付承载人数和发送消息较少的情况。本问我们来分析前面架构对于大用户量和大消息量所遇到的问题并给出新的高并发量和高消息量的架构。

根据此架构图,大量的用户会产生大量的连接和所有http的请求压力,而这些压力进而带来对数据库和存储的访问读写压力;大量的消息带来的就是引起gate服务器的消息收发处理和core服务器处理的压力。所以应该优化如下三个方面:

  1. 对于三个http服务器(http用户服务器,http离线消息服务器,http文件服务器)的访问速度和访问量的提升。
  2. Gate服务器管理更多的连接,更多更快的收发的消息,core服务器能处理更多的消息校验和转发。
  3. 服务器之间响应消息的速度提升。
  4. 提升对数据库的响应能力。

针对上面的问题,做出了如下的优化结构,如图:

先看看新方案的工作形式,整体的工作流程没变,主要改动如下:

  1. 三个http服务器改为了http服务器集群。
  2. Gate服务器,core服务器和Push服务器改为了Gate集群,core集群和Push集群。由于gate集群和core集群之间需要进行消息的交互,所以他们之间引入一个高速交互区域或者nosql数据库。gate集群和Push集群两个集群之间引入消息队列进行通讯。

现在看看新的设计是否改进了上述问题:

  1. http服务器全部改为http集群,而且http集群方案已经很成熟,非常容易实现。
  2. gate服务器改为集群,分布式部署,客户端采取一定的分配方式连接不同的gate服务器节点,减轻每个节点的压力,每个节点的工作方式不变,通过增加节点来处理更加多的连接和更加多的数据。
  3. core服务器也改为服务器集群,和gate服务器同样通过增加节点的方式来处理更多的数据。
  4. 引入内存数据库,内存数据库的访问速度快,在进行数据请求的时候尽量全走高速的nosql内存数据库,除非是有特别业务一定要请求固化数据库时再访问SQL数据库。
  5. 引入高速消息队列,服务器内部进行通讯的时候,尽量都走快速的消息队列,一是提高消息处理速度,二是减少服务器之间的耦合。

综上,我们可以看到,此次优化完全能满足前面所提的大用户大数据的IM系统的要求。而且这个设计方案还有如下几个有点:

  1. 实现简单,功能服务器数量少,逻辑简单。
  2. 大部技术方案非常成熟,例如http集群方案,分布式文件系统方案,NOSQL集群,MYSQL集群等。
  3. 采用分布式和消息队列,扩容非常容易。

由此,一个成熟的分布式即时聊天系统(IM)架构设计完成,依此架构可以开发出一个并发量完全满足业务的系统。

分布式聊天系统(IM)架构相关推荐

  1. 基于Netty的分布式聊天系统

    基于Netty的分布式聊天系统 Gitee地址:https://gitee.com/yuyuuyuy/micro-mall 文章目录 基于Netty的分布式聊天系统 前言 一.IM系统架构的探讨 二. ...

  2. 倒排索引原理_拜托,面试请不要再问我分布式搜索引擎的架构原理!

    欢迎关注头条号:石杉的架构笔记 周一至周五早八点半!精品技术文章准时送上!!! 精品学习资料获取通道,参见文末 目录 (1)倒排索引到底是啥? (2)什么叫分布式搜索引擎? (3)ElasticSea ...

  3. 关于分布式多级缓存架构,也许你一直考虑的太简单了

    这篇想聊的话题是:「分布式多级缓存架构的终章」,如何解决大流量.高并发这样的业务场景,取决于你能不能成为这个领域金字塔上层的高手? 能不能把这个问题思考清楚决定了你的成长速度. 很多人在一个行业5年. ...

  4. 数据产品设计专题(5)- 分布式数据仓库技术架构

    一.分布式数据仓库技术架构 二.核心内容解读 (1)分布式数据仓库存储技术:hive+hdfs: (2)事实计算平台技术框架:spark: (3)数据挖掘算法技术框架:mllib + sparkR

  5. RabbitMQ分布式集群架构

    RabbitMQ分布式集群架构和高可用性(HA) (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配 ...

  6. 我对分布式多中心架构的几点看法

    每天都在谈SOA和微服务,但你真的理解什么是服务吗? 服务的技术架构之争 服务应该去版本化,不管是微服务还是SOA 任何架构的调整只是拆了东墙补西墙,无法解决效率问题 先厘清服务治理与组织架构的关系, ...

  7. 分布式理论、架构设计(自定义RPC)

    会不断更新!冲冲冲!跳转连接 https://blog.csdn.net/qq_35349982/category_10317485.html 分布式理论.架构设计(自定义RPC) 1.分布式架构 1 ...

  8. Hadoop分布式文件系统:架构和设计要点

    一.前提和设计目标 1.硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速.自动的恢复是HDFS的核心架构目标. 2.跑在HDF ...

  9. 打造自己的分布式搜索引擎底层架构(非Lucene)

    打造自己的分布式搜索引擎底层架构(非Lucene) 大家知道,搜索引擎技术不仅仅是类似百度首页的应用,还可以衍生出数据分析工具,商务智能工具等许多有卖点的应用,甚至是社会化关系通道的发现. 甚至这些非 ...

最新文章

  1. python的类和对象_Python类与对象实验
  2. 穿越传统藩篱,当统计学闯入人工智能“后花园”
  3. WIN7自定义管理员账户无法创建或使用设备
  4. 前端构建工具gulpjs的使用介绍及技巧 (转)
  5. 一位ACMer过来人的心得【转】
  6. mysql mysqlhotcopy_MySQL备份工具之mysqlhotcopy
  7. 一步步编写操作系统 31 cpu的分支预测 下
  8. 免密登录关闭_微信最新提醒:这个设置再不关闭,你的微信账号就能被别人“免密登录”!...
  9. Gitter - 高颜值GitHub小程序客户端诞生记
  10. asp无组件上传图片 动态保存文件名 upload.inc逐句翻译
  11. mysql8连接 2002_ERROR 2002 mysql连接失败 解决方法
  12. C#网络编程(Socket编程)
  13. ASIC 与FPGA比较谈
  14. CC2530天线发射功率与接收灵敏度——玩转ZigBee的高端操作(Zstack框架)
  15. 高中英语语法(002)-否定
  16. android trainning(4)
  17. Java并发指南1:并发基础与Java多线程
  18. 猫喜欢吃鱼,可猫不会游泳
  19. 2008世界旅游大使中国赛区总决赛在正定华丽落幕
  20. oracle dba 日常工作,OracleDBA职责及日常工作是什么?

热门文章

  1. 以太网未建立连接解决办法(网络可以使用)
  2. 用Android Smart Image View做的一个网络图片浏览的Demo
  3. 树莓派使用GPIO控制风扇转速方法
  4. Solidity:编写一个简单的支付通道
  5. Excel单元格中引用当前工作表名称
  6. 利用数据技术构筑产业生态
  7. 数据质量稽核工具-datacheck
  8. google浏览器不能播放wmv格式视频
  9. 教你一招,解决头疼的DCOM配置问题
  10. IT科技企业逻辑思维面试题