基于netty的企业即时通讯系统的设计与实现-服务端系统架构
cookqq ›博客列表 ›netty

基于netty的企业即时通讯系统的设计与实现-服务端系统架构

2016-04-05 20:46:53.0|分类: netty|浏览量: 3740

摘要: 平台的通信采用netty框架并且使用TCP/IP协议进行数据传输,并没有基于JDK的NIO类构建自己的通信框架。开发高质量的NIO程序挑战性很大,除去NIO类库常见的Bug和代码复杂性,作为NIO服务端,需要能够处理网络的不稳定性、网络的无响应、安全认证、客户端心跳重连机制和消息的编解码等。如果没有足够的NIO编程经验积累,自己开发网络通信稳定性难以满足需求。 3、客户端和服务器建立长连接,服务器端会保存着这个长连接,然后对长连接进行轮询看看是否有新的消息。当客户端socket在非正常情况家掉线:断网,断电等特殊问题的时候,服务器端没有收到连接关闭命令,连接对象不会自动关闭,继续保持着链接活跃。

即时通讯服务端系统架构:

blob.png

   1、平台最上层支持android、ios、pc端,按照相应的协议进行数据通信,客户端和服务器能建立连接并且传输信息。

   2、通信核心层采用了开源网络通信框架netty,负责底层的网络通信。Netty是一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。


平台的通信采用netty框架并且使用TCP/IP协议进行数据传输,并没有基于JDK的NIO类构建自己的通信框架。开发高质量的NIO程序挑战性很大,除去NIO类库常见的Bug和代码复杂性,作为NIO服务端,需要能够处理网络的不稳定性、网络的无响应、安全认证、客户端心跳重连机制和消息的编解码等。如果没有足够的NIO编程经验积累,自己开发网络通信稳定性难以满足需求。

3、客户端和服务器建立长连接,服务器端会保存着这个长连接,然后对长连接进行轮询看看是否有新的消息。当客户端socket在非正常情况家掉线:断网,断电等特殊问题的时候,服务器端没有收到连接关闭命令,连接对象不会自动关闭,继续保持着链接活跃。

连接池保持海量的终端链接,而且通常使用长连接,服务器维持大量长连接,资源消耗都非常大;为了减轻服务器端资源消耗和失效的长连接,连接池设置活跃时间,如果长时间没有收到消息和发送消息,则把长连接关闭,释放掉资源。

   4、业务逻辑:主要有用户登录、聊天、监控功能

   5、数据存储层:用户基本信息存储在mysql关系型数据库中,聊天信息存储在文件数据库mongodb中,发送的图片直接存储到本地文件


  客户端和服务器通信流程:有客户端向服务器发送会话请求,服务器收到申请后会检查该客户端是否为本服务器域内的,如果是则开始会话,否则返回错误信息。

    

服务器端公共模块:

  会话模块:负责客户端与服务器之间连接的会话管理模块,主要功能是:建立连接,断开连接,接收字节流,发送字节流等

  解析封装模块:负责字节流的解析和封装的字节流模块,主要功能是:将字节流流解析成java对象,将java对象封装成字节流

  路由器模块:负责信息读取和转发的路由模块,主要功能是:从对应的端口截取数据,并根据其命名空间的不同进行转发




一键分享文章

分类列表

  • • struts源码分析
  • • flink
  • • struts
  • • redis
  • • kafka
  • • ubuntu
  • • zookeeper
  • • hadoop
  • • activiti
  • • linux
  • • 成长
  • • NIO
  • • 关键词提取
  • • mysql
  • • android studio
  • • zabbix
  • • 云计算
  • • mahout
  • • jmeter
  • • hive
  • • ActiveMQ
  • • lucene
  • • MongoDB
  • • netty
  • • flume
  • • 我遇到的问题
  • • GRUB
  • • nginx
  • • 大家好的文章
  • • android
  • • tomcat
  • • Python
  • • luke
  • • android源码编译
  • • 安全
  • • MPAndroidChart
  • • swing
  • • POI
  • • powerdesigner
  • • jquery
  • • html
  • • java
  • • eclipse
  • • shell
  • • jvm
  • • highcharts
  • • 设计模式
  • • 列式数据库
  • • spring cloud
  • • docker+node.js+zookeeper构建微服务
版权所有 cookqq 感谢访问 支持开源 京ICP备15030920号
CopyRight 2015-2018 cookqq.com All Right Reserved.