原型设计:社交APP原型设计的整体架构(前端和后端)
UI设计
浏览:1682 次

完整的社交+整体架构
1、 要实现的功能
用户关注的常见的社交功能、活动、地理位置、探索功能、新闻、视频和照片分享数不胜数,因此从技术角度来看,开发者需要解决的问题也极其复杂。
在社交应用发布之初,用户流量相对较小,单个服务器可以支持所有访问压力和数据存储需求,但互联网应用具有病毒传播的特点。一款应用很可能会在一夜之间流行起来。访问量和数据量将在短时间内呈爆炸式增长。此时,它每天将面临数亿PV,数百万新用户和活跃用户,流量将飙升至每秒数百兆字节。如果App只部署简单的后端架构,则无法支持这些功能,这将直接导致服务器响应缓慢甚至超时,并且服务将在高峰时段瘫痪,使后端服务完全无法使用,用户体验将大幅下降。本文将通过一个真实案例分享社交App如何构建高度可扩展的后端系统。

2、 社交App最初部署的后端架构分析一开始,社交App的后端架构相对简单,最初部署在基础网络上。绑定到公共IP地址的nginx服务器位于前端,用于负载平衡,三个应用服务器位于后端,用于处理所有业务请求,MySQL数据库位于后端。
3、 构建私有网络随着产品的不断迭代、用户的不断增长和数据的积累,App需要改进其后端架构,即开始构建私有网络。用户可以使用专用网络构建自己的网络拓扑结构-创建路由器和专用网络,并将随后添加的用于运行内部服务的主机放置在专用网络中,这可以有效地实现与云平台上其他用户主机的100%两层隔离。主机只有80个端口对外开放,这为系统增加了一层安全性。
在上面的架构图中,防火墙位于前端,然后是负载平衡器,然后是路由器和专用网络。许多InternetApp具有更多的读取和更少的写入。有时这个比率可以达到8:2,所以我们首先引入缓存来分担数据库的读取压力。其次,引入了负载平衡器来取代原始架构中的nginx代理,该代理负责将请求分发到多个后端应用服务器。当其中一个App服务器发生故障时,负载平衡器可以自动隔离。
4、 随着并发访问和数据量的不断增加,业务分区和扩展App首先考虑了Web服务的横向扩展。业务服务器横向扩展的前提是确保每个服务器都是无状态的,会话信息存储在缓存或数据库中,以确保将请求加载到任何服务器进行正常处理。

从上图可以看出,在上一步“构建专用网络”之后,添加了一个新的专用网络来扩展网络层。在这里,原始App服务器可以通过使用其自己的图像功能制作成模板。稍后,可以基于此模板快速启动新主机。此外,您可以使用自动缩放功能根据后端服务器的负载请求动态调整服务器数量。
社交App的后端将提供许多服务请求界面,如添加好友、刷新新闻、浏览页面等。您可以通过日志分析每个界面的时间消耗,并将耗时但不重要的业务请求分配到单独的Web服务器进行处理,从而为主Web服务器留下更多资源来处理关键业务请求。
5、 随着产品功能的不断迭代,面向服务架构的业务代码将变得越来越复杂,失败的可能性将增加。当本地功能失败时,整个服务的可用性将受到影响。此时,可以构建面向服务的体系结构,将一个完整且庞大的服务逐一拆分为子服务,并且服务通过接口相互交互。如下图所示:
社交应用服务分为四个子服务-新闻订阅、个人资料、广告和探索。不同的服务通过消息通信框架(例如ZeroMQ)相互交互。广告