移动互联网类学术论文怎么写 和大用户量高并发移动互联网系统的性能优化类学术论文怎么写

这是一篇与移动互联网论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考。

大用户量高并发移动互联网系统的性能优化

摘 要:随着移动互联网产品的流行,如何提高系统的性能,承受大用户量高并发的访问,成为该类型系统需要考虑的主要问题.本文从系统分析、技术选型、架构设计、软件设计、代码实现、软件测试、服务器运维等方面,阐述如何提高系统的整体性能,以保证大用户量高并发访问系统时的仍然具有良好的用户体验,以及高可用和高可靠性.

关键词:大用户量;高并发;性能优化

引言

随着移动互联网和智能手机的普及,很多公司加入移动互联网产品的开潮.绝大多数移动互联网项目不是传统的甲方委托乙方开发的模式,没有传统意义上的客户,所以需求的原点来源于公司产品部门的产品经理针对互联网用户的心理分析,以及每个版本上线后用户的使用反馈.系统大多采用原型法和面向对象方法结合的模式开发,每个开发周期都经历原型设计(产品部门)、原型评审(产品部门+ 技术部门+ 测试部门),分析与设计(技术部门)、编码实现(技术部门)、测试(测试部门)等流程.一旦产品开发完成上线后,用户量会迅速攀升,系统的压力也是每日俱增.为了提高系统的抗压性能,需要采取一系列的措施,来优化系统的性能,提高系统的响应速度和可用性以及可靠性.

一、优化措施

1.1 平台和技术选型

在这类系统的开发之初,开发者就要预计到将来用户规模的持续增加一定需要服务端具有很好的扩充性,首先就需要很多台服务器,这就要求系统中尽量使用开源免费的软件.例如,操作系统可使用Linux,数据库可使用MySQL,Ja 容器可使用Tomcat,Web 服务器/ 负载均衡器可使用Nginx,缓存服务器/NoSQL 服务器可使用Redis,NIO 框架可使用Netty 等等.这些软件都是经过大量互联网类型的项目实践证实具有非常好的性能和稳定性,而且开源免费.这样当系统面临压力时,就可以不用考虑这一部分的成本预算而放心大胆的扩充.

1.2 建立性能至上的观念

项目启动之初,项目组就应该培训所有开发人员,包括测试人员和产品经理.良好的用户体验是以系统的高性能为基础.开发人员每设计一个模块,甚至每一行代码都要考虑系统性能,考虑对服务器的压力.例如,客户端的手机App,对于很多不需要及时更新的信息要进行缓存,每次联网尽量获取更多的信息从而减少联网次数,信息上传服务器之前要进行压缩等等措施.对于服务器上的代码开发尤其要注意,有时候因为一个对象的环形引用导致内存泄漏,在大用户量高并发访问的情况下,可能会造成服务器崩溃的情况发生.让测试人员测试系统时,不但要测试软件功能的完成,更要测试系统的性能,例如对服务器进行压力测试,手机端的联网速度,界面反应速度等等.对产品经理也提出了要求,设计产品功能的时候也要考虑性能,有时候功能越简单,用户才会越喜欢,正所谓大道至简,这样将大大减少系统的复杂性,从而提高系统的性能.

1.3 大系统小做

为了应对大用户量高并发的访问,系统必须具有很好的扩展性.系统需要把应用层服务器按功能划分为若干个小的业务服务器,每个业务服务器提供相对独立的服务.例如对于聊天交友类的项目,可以把应用服务器划分为登录注册服务器,好友关系服务器,聊天服务器,图片服务器等等.每个业务服务器均可独立部署,从而分解系统的总压力,使得每个服务的响应速度提高,也使得系统总的容量大大提高.在提高性能的同时,也能提高系统的可用性,即使某个业务服务器宕机了,用户也能使用其他服务,不至于完全用不了软件.该优化措施如图1 所示.

1.4 负载均衡

当访问量增加时,即使对于某个业务服务器而言,也有承受不了压力的时候.这时,可以采用的办法就是负载均衡.例如发现登录注册服务器压力陡升时,马上就要再准备一台或几台服务器,上面部署同样的登录注册服务器程序,然后在这几台服务器前面部署负载均衡器,让所有的登录注册请求均匀的分布在这几台服务器上,从而减少每台服务器的压力,提高服务器的响应速度.对于其他业务服务器,也可如法炮制.该优化措施如图2 所示.

1.5 数据库性能优化之一--- 拒绝联表

相对于应用层,数据库性能的优化更麻烦.在系统设计之初,就考虑以后数据库的横向扩展.所以,可以在代码中拒绝使用联表操作,每个SQL 语句都是针对单表操作.这在互联网产品中是行的通的,因为互联网产品的业务逻辑比较简单,远没有企业应用类项目的业务逻辑复杂.这样,当数据库压力递增时,就可以把任意一个或几个数据表独立出来,生成一个新的数据库,部署到另一台服务器上去,此时只需要修改一下业务服务器访问数据库的配置文件即可,根本不用修改程序代码.一般的系统可以由最初的一个数据库,逐步扩展为数十个数据库,而且都是独立部署,这样可大大减轻数据库服务器的压力,从而提升了系统的性能.数据库横向扩展如图3 所示.

1.6 数据库性能优化之二--- 读写分离

当最初的一个数据库横向扩展为若干个独立的数据库后,对于某个或某几个数据库,即使库中只有一个表,由于业务的特殊性,压力也会增加到一台服务器承受不了的时候.这时可采用的办法是采用数据库读写分离的办法.因为根据统计,互联网项目中,对数据库的访问类别符合二八定律,即20% 的访问是写操作,而80% 的访问是读操作.所以可以将所有的写操作,包括INSERT,DELETE,UPDATE 等类型的SQL 语句,全部指向主库,而访问最频繁的SELECT 语句,则分布在多台从数据库上.主从数据库之间的数据一致问题,由MySQL 的主从复制机制来保证,这样大大减轻了每台数据库服务器的压力.例如在一般的系统中,用户库的压力就特别大,即使该库中只有一张存储所有用户信息的表,由于很多业务要访问该表,所以可采用一主多从的方案缓解服务器的压力,从而提高整个系统抗高并发访问的能力.

1.7 数据库性能优化之三--- 反范式化设计

一般情况下,为了杜绝数据库中的存储异常问题(数据冗余、修改异常、插入异常、删除异常),在设计数据库的逻辑结构时,需要达到第三范式的要求.但是,为了减少数据库的访问次数(或者在程序代码中减少联表操作的次数),可在表设计中,适当的增加了一些冗余字段.例如可设计一张表,专门记录用户签到的位置信息,用户每在一个新地址签到一次,该表中就增加一条记录.而在用户表中,可以冗余了一个字段,记录用户最新的签到位置.这样,当手机App上显示用户主页时,只需访问用户表,而不需访问用户位置表,就可以显示用户的最新签到位置.这样就从总量上减少数据库的访问次数,从而减轻数据库服务器的压力.对于数据不一致的异常情况,通过后台进程定时去检查修正,虽然不能做到完全实时的100% 的数据一致,但也能满足业务需求.

1.8 大量使用缓存

当系统上线后最初阶段,再对数据库采用了各种优化手段后,性能提升会收到不错的效果.但是,当用户量达到某个数量级后,就会发现对数据库优化后系统整体性能提升的效果就不明显了.这时候,可采用增加缓存服务器的办法提升性能.例如选用Redis 作为缓存服务器.Redis 可将大量数据加载在内存中,通过Key-Value 的方式访问,速度非常快,而且Redis 提供数据持久化的功能,后台进程准实时的将内存中的数据保存到磁盘上,这样Redis 不仅是缓存服务器,而且是一台性能优异的NoSQL 数据库服务器.我们的方案是将大量数据加载到Redis 中供业务逻辑服务器访问,其中比较重要的数据,同时在MySQL 数据库服务器中也保存一份,比如用户数据,好友数据等等.当读取这些数据时,只需访问Redis,而写数据时,则同时写Redis 和MySQL.而对于不太重要的数据,比如用户发表的帖子,聊天记录等等数据,则只在Redis 中保存即可.同时为了提高Redis 的可靠性和性能,我们也对Redis 做了主从同步和读写分离.引入缓存/NoSQL 服务器后的架构如图5 所示.

1.9 良好的应用开发框架

移动互联网产品上线以后,一般都需要多次迭代更新,每一个版本上线,都有功能的优化和升级,所以对应用程序的扩展性提出了很高的要求.良好的应用开发框架就能满足扩展性的要求.服务端应用开发的框架可采用SpringMVC+Spring+MyBatis 这一业界非常流行的开源框架组合,当然也可以做一些自己的封装和修改.其中SpringMVC 负责客户端请求的转发和视图管理,Spring 实现业务对象管理,MyBatis 作为数据对象持久化引擎.这样搭配的优点是:轻量、自由度高、Spring 与Spring MVC 契合度更好.而且这一组合被无数互联网项目的实践证明了可靠性、性能以及扩展性俱佳.例如,当对数据的访问由主要访问MySQL 数据库而转向MySQL数据库和Redis 并重时,就只对持久层进行修改,在MyBatis 的基础上,增加了通过Jedis 组件访问Redis 的功能,而业务逻辑层根本不用修改,大大减轻了系统性能优化的工作量和难度.S 开发框架组合如图6 所示.

1.10 异步响应处理

为了提高系统的响应速度,改善用户体验,需要对其中一些比较耗时的服务进行异步处理.例如,用户充值的处理,其实非常耗时,无论是采用苹果支付/ 支付宝支付/ 微信支付,基本模式都是客户端先访问第三方的充值服务器进行充值,待第三方的充值服务器成功响应后,客户端再通知自己的服务器.通常的做法是自己的服务器收到客户端通知后,先要访问第三方的充值服务器以确认充值确实到账,这一步非常重要,目的是防止恶意攻击者虚假充值,但是这一步非常耗时.待第三方充值服务器正常响应后,自己的服务器再修改数据库中用户的虚拟币信息,完成后再响应客户端,客户端收到响应后再提示用户充值成功.这样给用户的感觉就是响应非常慢,体验很差.可以采用的优化方案就是,客户端收到第三方充值服务器的响应后通知自己的服务器,自己的服务器立即响应客户端,客户端马上就提示用户充值完成.然后自己的服务器再通过异步队列去访问第三方服务器进行查证,如果确实到账,则修改用户的虚拟币信息,然后主动通知客户端修改界面显示信息;如果发现没有到账,则确认此次充值为非法充值,则通知客户端充值错误.如果这种异步处理机制在很多业务场景中进行应用,就能大大的提高了系统的响应速度和性能.同步和异步方式对充值业务的处理图7和图8 所示.

二、优化效果

笔者曾主导一款国内知名的移动社交平台项目的研发,该项目自2010 年10 月份上线运营至2015 年10 月,共积累注册用户3000 万,平均每日活跃用户达到100 万,每日高峰时段同时在线用户20 万,营销活动期间同时在线用户可达50 万.系统在5 年多的运行期间,保持稳定的性能和可靠性,客户端平均响应时间均在2 秒以下,月平均带故障运行时间在30 分钟以下.良好的性能和可靠性得益于以上各种优化措施的综合应用.系统的压力增长和性能效果趋势如图9 所示.

三、结束语

大用户量高并发的互联网产品的研发过程,是极其复杂和充满挑战性的.系统性能的优化永远在路上,没有最优,只有更优.当然,这些系统性能的优化提升措施和手段,是建立在良好的规划和分析设计基础之上.在系统立项和开发之初,就要绷紧性能优化提升这根弦,从研发的每个阶段,每个角度,每个岗位都要认识到性能优化的重要性,综合考虑,整体分析,找到性能瓶颈,有的放矢,才能收到良好的效果.

移动互联网论文范文结:

关于对写作移动互联网论文范文与课题研究的大学硕士、相关本科毕业论文移动互联网论文开题报告范文和相关文献综述及职称论文参考文献资料下载有帮助。

1、互联网金融论文

2、互联网创业论文

3、互联网金融论文题目

4、关于互联网金融的论文

5、互联网论文

6、关于互联网的论文