某移动社交应用服务端架构浅析

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

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

转眼间,离开该研发团队快半年了,在此期间不少网友问到后端架构,及技术细节。出于技术分享为目的,现将服务端架构及设计思路分享给大家。

如下图:

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

服务端主要分为3层:

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

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

应用层:该层为客户端提供直接应用服务及接口访问。

具体作用:

身份认证网关:作为客户端应用访问的入口,提供用户注册,身份验证等服务。当用户打开应用时,输入帐号密码并提交给认证服务器,当通过认证后,再为客户端分配会话服务器,并将登录认证信息写入到Redis中,再访问需要身份验证的接口时,其它服务则从REDIS中获取认证信息。

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

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

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

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

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

缓存层:主要用于存放热数据,如用户SESSION,认证信息,各应用服务器资源等,降低对持久层的访问压力。

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

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

安全性保证:

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

数字签名证书有两部分组成“身份指纹”+ “密钥”,客户端在发送数据时,使用该签名证书对发送的数据进行签名,再将签名和数据同时发送到服务器,服务器用相同的方法再对数据进行签名,然后比较签名是否一致。

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

在整个系统中大部份服务是无状态,可通过增加服务器的方式进行水平扩展。

某移动社交应用服务端架构浅析

时间: 2024-10-09 02:50:28

某移动社交应用服务端架构浅析的相关文章

大中型网站技术架构浅析 - 实时通信

本文所讲述的『实时通信』主要围绕浏览s器端和服务器端之间的实时通信.大中型网站技术架构浅析 系列之一. 实时通信主要分3大类: 1. Pull技术,轮询(Polling) 客户端定时轮询请求,服务器端立刻返回. 优点:短链接,服务器处理方便,支持跨域. 缺点:有一定延迟 微博未读微博数和未读消息(评论,@)就是用polling实现的. 应用场景:对实时性要求不高的应用,如新微博提示,评论提示,回复提示等. 2. Push,反向Ajax(Reverse Ajax)或者叫Comet. 实现方式主要有

Android应用内社区SDK技术架构浅析

Android应用内社区SDK技术架构浅析 应用内微社区是什么 ? 图1 图2 雪球财经应用内社区 一.以友盟微社区为例 简单来说,友盟的微社区就是一款帮助开发者在应用中快速搭建一个社区( 类似于新浪微博.朋友圈 )的产品.在很多应用中,开发商往往都会需要一个用户之间以及用户与开发商之间互动的社区,用户往往又会在社区里选择赞.评论.关注.转发.发帖等各种互动方式.但是开发一个社交系统可不是那么容易的一件事,复杂的用户关系.消息流.服务器架构等等都是棘手的问题,更重要的是大家都是重复地劳动!每个开

Camera服务之--架构浅析

Camera服务之--架构浅析 分类: Camera 分析2011-12-22 11:17 7685人阅读 评论(3) 收藏 举报 android硬件驱动框架jnilinux内核平台 一.应用层 Camera 的应用层在Android 上表现为直接调用SDK API 开发的一个Camera 应用APK 包.代码在/android/packages/apps/Camera 下.主要对 android.hardware.Camera(在Framework中) 类的调用,并且实现Camera 应用的业

移动App服务端架构设计

移动App服务端架构设计 我从事手机app服务端开发现在已经是3个年头,自己也整理出了一套相对好用的服务架构,写出来,跟大家一起分享.如有不足,还请多指教. 一:基础流程图. 其实有一点还需要加上,就是对json的压缩和加密,一来给用户节约流量,二来防止请求被截取破解我们的参数.具体先压缩后加密还是先加密后压缩这个问题看需求. 看到这个架构设计时,你们可能会说如果程序入口挂了,所有的服务都不可以用了. 所以这个架构的弱点在程序入口处,因此要有一(多)台机器做负载,负载的工具可以是HaProxy(

三层架构浅析

表示层(UI):显示的界面,用户浏览和输入.业务逻辑层(BLL):对用户输入的数据进行处理:对从数据访问层获取的数据进行处理.数据访问层(DLL):从数据库或其他地方获取原始数据. Model层(实体类):让对象和表形成映射关系.Model层属于辅助作用. 分层的好处:实现"高内聚,低耦合".采用"分而治之"的思想,把问题划分开来各个解决,易于控制,延展和分配资源. 三层结追求的目标:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层.比如:表示层输入参数增加,

3g上网卡的驱动程序的自动更新web端架构文档

几年前写的. 看是否有人用得上吧 1   简介 本文档详细描述了基于ASP.NET平台和IIS服务的T-Mobile自动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描述T-Mobile自动更新系统的架构,以使相关人员快速了解产品的架构. 1.1   目的 本文档将从架构方面对T-Mobile自动更新系统进行综合概述,其中会使用用例视图.逻辑视图.部署视图.实施视图等多种不同的架构视图来描述系统的各个方面. 这些描述用于记录并表述已对系统的架构方面做出的重要决策,同时确定系

MMOPRG服务端架构设计

早期的服务端架构是采用Client-->GameServer-->DB的模式,所有的业务和数据都集中在GameServer上一起处理,导致服务器压力很巨大,一个BUG可能导致服务器全程崩溃,以至于造成玩家流失.还有当开服的时候,所有玩家堆积在一个服务器,大量场景消息和广播风爆造成服务器卡.中期然后通过改进增加GameServer,达到分线缓解服务器压力,缺点是运营到后期,随着每条线玩家的减少, 互动大大减少.后期采用了按地图划分服务器,这样大大缓解了服务器的业务和数据压力.现在主流的服务器构架

LAMP架构浅析

  LAMP架构浅析 一.LAMP简介 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.LAMP具有Web资源丰富.轻量.快速开发等特点,微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的 优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. 二.本实验目的 通过简单编译

携程移动端架构演进与优化之路

从2013年开始,我们先后进行了不同路径的多样性架构探索,在实践过程中也经历了各种曲折与压力,最终实现了2015年的这个全新架构,实现了无线服务端基于API Gateway的架构框架.客户端的模块化开发.测试与部署,支持运行期间的模块实时加载.按需Lazyloding.Remote加载,从而实现模块级动态升级以及代码级热修复,并 且逐步推动数百人的客户端研发团队由不堪重负.效率低下的大版本大火车开发模式向模块间独立迭代.发布轻量级的开发方向演进. 同时在架构探索期间,携程做了App相关的很多性能