移动社交应用服务器架构分析

原文http://blog.csdn.net/lvjin110/article/details/12958463

TA是一款是基于地理位置的社交应用,帮助你与你不认识的、但就在附近的人进行即时沟通。TA是一款陌生人约会交友应用,不管你在银行排队、乘坐公交、咖啡厅或公园散步等不论什么地方,随时随地就能与附近有趣的陌生人进行即时沟通、分享照片、约会和交友……

转眼间,离开该研发团队快半年了,在此期间不少网友问到后端架构,及技术细节。

出于技术分享为目的,现将服务端架构及设计思路分享给大家。

例如以下图:

 

上图为服务端总现结构图,以下介绍下各部分的作用。

服务端主要分为3层:

持久层:主要做为数据的持久存储。包扩数据库和文件形式(图片,音视频等)的数据。

缓存层:为应用层提供数据缓存服务,数据路由中转。

应用层:该层为client提供直接应用服务及接口訪问。

 

详细作用:

身份认证网关:作为client应用訪问的入口。提供用户注冊,身份验证等服务。当用户打开应用时。输入帐号password并提交给认证server,当通过认证后,再为client分配会话server,并将登录认证信息写入到Redis中,再訪问须要身份验证的接口时,其他服务则从REDIS中获取认证信息。

会话保活服务:该服务採用TCP/IP协议,主要用于client保持长连接。负责即时消息的发送与获取。


群组/房间服务:该服务主要用于“群组”功能。同一群组内的用户连接到同样的server。


功能业务服务:主要提供非即时服务的訪问,比方分享照片,查看他人资料等。

多媒体文件服务:为client提供文件读写服务。如上传相片。分享音视频等。

消息路由:主要用于跨会话服的即时消息路由中转,比方A用户在1号会话服,B用户在2号会话服,两方的即时通信将由“消息路由”进行中转。

缓存层:主要用于存放热数据。如用户SESSION。认证信息。各应用server资源等。减少对持久层的訪问压力。

数据訪问中间件集群:作为核心组件。全部对数据库的訪问都由它来统一提供。因为数据库server由多台组成,每台又有读写分离多机。造成数据库服务相对庞大。是为了减少应用层使用复杂度而生。

持久层:主要是数据库和文件存储,就不做过多介绍了。

 

安全性保证:

  1. 通信数据安全,全部基于HTTP通信的数据请求,均採用数字签名,通信中的敏感数据採用“对称加密”算法进行加密。有网友问到详细实现细节,现将原理进行简要说明。

数字签名证书有两部分组成“身份指纹”+ “密钥”。client在发送数据时,使用该签名证书对发送的数据进行签名,再将签名和数据同一时候发送到server,server用同样的方法再对数据进行签名。然后比較签名是否一致。

  1. 服务端安全。基于TCP/IP协议的会话服和房间服,用户连接上serverport后,须要进行身份验证,2分钟内没有过能验证的连接将会被主动断开。

 

在整个系统中大多数服务是无状态,通过添加server道横向扩张。

版权声明:本文博主原创文章。博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/zfyouxi/p/4851915.html