一、服务器特点

01、傻瓜式部署,一键式启动;

02、单机支持10万以上在线用户聊天(8G内存,如果内存足够大,并发量可超过10万);

03、支持服务器集群,集群间高内聚、低耦合,可动态横向扩展IM服务器,最大支持200台IM服务器的集群;

04、高并发、高稳定性;

05、支持群组聊天;

06、IM业务完全独立:只需uid(用户id)和gid(群组id),可方便的将IM业务集成到上层业务中;

07、内置HTTP访问接口,用于查询用户状态(上线/离线);

07、基于websocket协议,轻松实现网页端开发;

09、访问安全支持;

10、服务器体积小,不依赖任何第三方库和中间件,服务器集群只有三个文件,不到500K;

11、提供外部接口用于处理离线消息;

12、开发成本低,基于websocket协议,消息体为json格式,用户可扩展自己的消息字段;

二、技术特点

01、实现自主内存管理,避免内存碎片的产生;

02、采用IOCP模型,充分利用CPU多核性能,支持高并发,IO业务处理完全异步;

03、采用“无锁”化设计,IM服务器内部只有一把锁;

04、内部大量采用HASH表进行数据管理,查询速度实现O(1);

05、采用红黑树进行定时器管理;

06、严格的网络异常处理,防止高并发下内存访问异常;

三、服务器集群程序介绍

1、imserver.exe

概要介绍:IM通信服务

默认端口:8210

功能说明:

1、转发用户间的点对点消息;

2、转发群组消息;

3、群组的创建、销毁以及将指定用户加入到指定群组;

如果在线用户数量超出单台imserver的配置,则需要建立IM服务器集群,不同的用户会登录在不同的IM服务器上。 在集群模式下,需要importal.exe和improxy.exe程序的支持。

假设一台imserver支持10万用户,你的上层业务需要支持百万级在线聊天,则需要10台IM服务器。此时这10台服务器 的管理和通信需要如下两个服务支持。

2、importal.exe

概要介绍:负载均衡服务

默认端口:8510

功能说明:

1、实时更新集群中所有聊天服务器上的用户状态(在线、离线);

2、提供HTTP接口,用于查询集群中所有IM服务器的地址,以及当前每台服务器上在线用户数;

3、提供HTTP接口,用于查询指定用户的在线状态;

使用说明:

1、上层业务通过“/importal/getimserverlist.do”接口获取集群中所有IM服务器列表;

2、根据当前IM服务器上登录的用户数量,来决定用户登录到哪台IM服务器上;

3、improxy.exe

概要介绍:消息转发服务。

功能说明:

1、连接importal服务,获取集群中所有imserver服务器地址;

2、转发登录在不同imserver服务器上的用户消息和群组消息;

四、如何建立IM服务器集群

只需一分钟,一个配置项。

1、部署importal服务,双击importal.exe即可。

2、配置imserver上的imconfig.ini文件

通过imconfig.ini配置文件中的PortalServer字段设置portal服务器的地址。如:PortalServer=127.0.0.1:8510。

imserver服务器启动会读取该配置项,并连接到importal服务上。

3、部署improxy服务,双击improxy.exe即可,improxy会通过importal获取所有IM服务器。

注意:imserver、importal、improxy最好分别部署在不同的服务器上。

五、演示地址

单机用户5万时的并发演示

六、下载地址

点击此处访问下载地址

IM服务器:我的千万级在线聊天服务器集群的更多相关文章

  1. STORM在线业务实践-集群空闲CPU飙高问题排查

    源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲 ...

  2. 在线安装TIDB集群

     在线安装TiDB集群 服务器准备 说明:TiDB8需要能够连接外网,以便下载各类安装包 TiDB4非必须,但最好是有一台,因为后续测试Mysql数据同步或者进行性能比较时,都要用到 TiKV最好是采 ...

  3. 单机千万级MQTT连接服务器测试报告

    目标:测试创建1000万客户端连接到服务器端,服务器操作系统 Linux(任意一款发行版服务器版本).分别在两台硬件一样的服务器,其中一台用于服务器端运行,另一台用于创建千万客户端连接客户端机器.在硬 ...

  4. STORM在线业务实践-集群空闲CPU飙高问题排查(转)

    最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug ...

  5. 2017最新技术java高级架构、千万高并发、分布式集群、架构师入门到精通视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  6. 云计算之路-阿里云上:部分服务器未及时续费造成docker swarm集群故障

    非常非常抱歉,由于我们的疏忽 —— docker swarm 集群中的 2 台服务器没有及时续费,造成在夜里0点被自动关机,从而引发整个 docker swarm 集群故障,造成今天凌晨 0:30 ~ ...

  7. 百万级高并发mongodb集群性能数十倍提升优化实践

    背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性.该集群采 ...

  8. Nginx(web服务器)与Tomcat(应用服务器)搭建集群

    Nginx作为互联网最常用的web服务器,高性能的HTTP和反向代理使它经常作为Tomcat集群的方案.Nginx官方只支持使用HTTP协议的集成,但是如果你想使用AJP协议集成,可以使用阿里开源的n ...

  9. Apache(web服务器)与Tomcat(应用服务器)搭建集群

    web服务器:Apache.Nginx.IIS等 应用服务器:Tomcat.JBoss.Weblogic等 现在web服务器和应用服务器其实界限已经不是太清晰了,大部分的应用服务器也包含一些web服务 ...

随机推荐

  1. 论文解读《Momentum Contrast for Unsupervised Visual Representation Learning》俗称 MoCo

    论文题目:<Momentum Contrast for Unsupervised Visual Representation Learning> 论文作者: Kaiming He.Haoq ...

  2. minix3使用轻快入门

    minix3是一款迷你的unix作业系统,但又不在at&t代码的基础上构建.当年开发这款作业系统的作者仅仅是拿来自用,给学生上课使用的. 如果你已经安装了minix3,你还需要安装openss ...

  3. 成本降低40%、资源利用率提高20%的 AI 应用产品云原生容器化之路

    作者 郭云龙,腾讯云高级工程师,目前就职于 CSIG 云产品三部-AI 应用产品中心,现负责中心后台业务框架开发. 导语 为了满足 AI 能力在公有云 SaaS 场景下,服务和模型需要快速迭代交付的需 ...

  4. 学习PHP中的iconv扩展相关函数

    想必 iconv 这个扩展的相关函数大家多少都接触过,做为 PHP 的默认扩展它已经存在了很久,也是我们在操作字符编码时经常会使用的函数.不过除了 iconv() 这个函数外,你还知道它的其它函数吗? ...

  5. 前端常用场景总结CSS/JS/插件(实用篇更新中...)

    <div class="box box1"> <span>垂直居中</span> </div> .box1{ display: ta ...

  6. 对象继承深入、call_apply、圣杯模式、构造函数和闭包,企业模块化

    一个实现加减乘除的插件:   原型其实是在构造函数之上的,构造函数变成实例化函数的时候才会有原型, 原型实际上是构造函数的一个属性 原型无非就是2个字:继承 原型中继承父类所有方法是很不合理的,因为没 ...

  7. Python接口自动化测试实战-----附源码

    目录 1. 接口定义 2. 基本流程 3. 需求分析 4. 用例设计 5. 脚本开发 6. 结果分析 接口定义: 接口普遍有两种意思,一种是API(Application Program Interf ...

  8. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

  9. VirtualBox上安装Debian10个人备忘笔记

    准备 VirtualBox 下载链接:Downloads – Oracle VM VirtualBox,下载完成后安装即可. Debian 下载链接:通过 HTTP/FTP 下载 Debian CD/ ...

  10. WinForm事件与消息

    WinForm事件与消息 消息概述以及在C#下的封装 Windows下应用程序的执行是通过消息驱动的.所有的外部事件,如键盘输入.鼠标移动.按动鼠标都由OS系统转换成相应的"消息" ...