在本站前面的章节中,按照App后台架构所需知识的层次,分别介绍了下面3部分的内容。
·App后台架构中所用的技术讲解。
·App后台架构中常用软件的运维知识
·4类App后台架构剖析。
在本文中将会融合前面3部分的知识,结合深圳APP开发公司工程师参与过的App项目的后台架构经验,讲述架构的核心要素、架构选型的特点,以及App后
台架构的演进。
1.APP架构的核心要素
本文谈论的是架构需要先弄明白:什么是架构?
百科中关于软件的定义如下:
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计,把软件架构的定义对应“App后台架构”,APP开发工程师程序员的定义是:由App后台各个组件的功能描述、相互关系构成的整体系统在App后台的架构中除了考虑App后台的功能需求外,还需要考量下面5个核心的要素,如图10-1所示
App后台架构的5个核心要素如下
高性能
高可用
可伸缩
可扩展
·安全性
APP开发公司下面逐一讲述App后台架构的5个核心要素。
APP开发后台架构升级核心要素之一“高性能”
高性能是App后台的个重要指标,除非其App是独无二、不可或缺的,否则任何个用户都无法忍受个响应速度极陧的App,特别是移动互联网这个讲求快速响应的环境。当App性能表现不理想、体验差时,用户就自然而然地放弃使用这个App,甚至会投入到竞争对手的怀抱。
性能问题也是驱动架构发展的最直接力量,因为性能问题是最容易被用户感知的,当打开个App的界面后,以前在1秒之内就能从App后台获取数据并展示数据完毕了,但用户量增大后,打开同样的界面需要几秒甚至几十秒,那么开发者就要考虑改进架构。从App发出请求到App后台返回响应结果,这过程如图10-2所示
APP开发后台架构升级示意图10-2App发出请求到App后台返回响应站果的过程
在App发出请求到App后台返回响应结果时,按照图10-2中的展示,每层可以有下面的措施以提高系统的性能。
1.App层
(1)图片、音频、视频等静态资源,第一次下载后可以缓存在手机的SD卡,这样就不用每次显示图片部需要下载。
(2)对于Feed、通知等内容,使用增量更新的技术.减少服务器的负担和使用的流量。关于增量更新的详细讲解可查看本站“前面数据增量更新策略”一文。
(3)根据App当前的网络环境下载不同的图片数据。例如,使用查看原图的功能,如果是在Wi-Fi环境下就下载原图,如果是3G等移动网络下就下载分辨率比原图低但也清晰可见的缩略图。
2.网络传输层
(1)使用CDN技术,让用户在最近的机房下载图片、音频、视频等静态资源,减少网络传输的时间,使用户获得更快的下载速度。
(2)在应用服务器部署反向代理服务器、缓存热点文件,使请求在到达应用服务器前返回静态资源,减轻应用服务器的负担,减少请求的时间。
3.应用服务层
(1)在代码层面,改进算法,使用多线程和优化程序内存等优化方法。
(2)在语言层面,考虑使用Golang、Erlang等更适用于高并发场景的语言。
(3)通过异步操作把用户的请求发送到消息队列等待任务程序处理.减少请求的等待时间。
(4)将多台应用服务器组成个集群,使用负载均衡软件把请求按定的规则分发到每个应用服务器上,提高系统整体的处理能力。
(5)使用分布式缓存软件缓存用户的热点请求数据,加快服务器的响应时间,减轻数据库的负担。
4.文件服务层
(1)使用MogileFS、TFS (Taobao F ileSvstem)、FastDFS等软件架设个分布式文件系统,提供整体的文件处理能力。
(2)使用七牛、又拍、UCloud的对象存储(UFile)等第三方文件云存储服务,把文件存放在云服务器上,从而在架构上去掉文件服务器,APP开发工程师推荐这种做法。
5.缓存层
可使用Redis、Memcached或者云服务器的云缓存服务,这些基于内存的缓存服务已经提供了足够而的性能。
6.数据库层
(1)数据库前加层或多层缓存,挡住大部分的热点请求,使大部分的请求不穿透到数据库,减轻数据的压力。
(2)对于MySQL数据库,可以使用读写分离、分表、分库等成熟的技术;对于NoSQL类型的产品,例如MongoDB.可以使用其原生的副本集、分片等机制,提升其性能。
(3)使用Facebook开源的FlashCache技术,把传统硬盘上的热数据缓存在SSD硬盘上,冷门数据保存在传统硬盘上,利用SSD优秀的读性能增加。好了,APP开发公司本文关于项目运行后期后台架构升级方面的经验与方法就分享到这里,谢谢关注,博纳网络会在后面的文章中继续与各位分享关于后台架构升级的其他方面。