软件体系架构质量属性-性能 论文
|
题 目: 软件体系架构质量属性-性能
学 院: 信息科学与技术
姓 名: 陈天时
学 号: 20163591
专 业: 软件工程
联系方式: 13001498507
任课老师: 王建民
软件体系架构质量属性-性能
陈天时 石家庄铁道大学 河北省石家庄市 050043
摘 要:本文简述了软件质量属性六大指标中的性能,如何判断性能的优劣以及如何提高性能,通过针对淘宝网操作流程的举例,阿里云服务器特点来进行简单阐述,列出图表的方法进行分析,最后得到了针对三个阶段来提高性能的方法,1.app界面的优化2.带宽的优化3.服务器端的优化
关键词:性能,阿里云服务器
Software Architecture quality Properties-performanc
(ChenTianShi, ShiJiaZhuang TieDao University,Shijiazhuang, Hebei province,050043)
Abstract:This paper briefly describes the performance of the six indexes of software quality attributes, how to judge the advantages and disadvantages of the performance and how to improve the performance. Through the example of the operation flow of Taobao net, the characteristics of Ariyun server are simply described. The method of chart listing is analyzed, and the method of improving performance in three stages is obtained. The optimization of 1.app interface is 2. Bandwidth optimization 3. Server-side optimization
Key words: performance OceanBase
引言内容:由于本学期开展了软件架构体系这门课,学习了软件质量的六大属性,对性能属性这方面想进行深入的了解,从而为以后步入工作后的开发过程更加便捷。当前软件对于用户最直观的体验就是性能的指标,包括程序响应的时间,程序运行的流畅性,这些都是影响用户体验最直接的因素,本文将着重针对影响性能最直观的因素和性能和其他质量属性的关系进行阐述。当前硬件普遍性能过剩,那么如何提高软件的性能就成为了一个热点,也变成了优化对比的一个重要方面
1 如何判断性能的优劣
通常以系统执行某操作所需要的响应时间或者在某单位时间所能完成的任务的数量来定义的性能指标。一般来说,等待时间,单位时间处理的操作量,系统吞吐量,丢包来判断性能的优劣,下面以淘宝购买场景来对性能进行简单分析
场景部分 |
可能的值 |
场景 |
买家购买商品 |
刺激 |
购买商品 |
制品 |
生成订单 |
环境 |
系统正常运行 |
响应 |
生成订单后提示用户支付 |
响应度量 |
等待时间、判断是否有货 |
对于现在主流的软件,都是针对海量的用户同时对软件进行操作这样的流程来进行优化,常规操作一般都不会发生意外,只要保证服务器不宕机,日常的操作能快速准确的进行。但想针对淘宝双十一,微博热搜和购买春运火车票这一类的操作,由于中国人口基数大,地域跨度高,海量高并发的操作对于数据库都一个巨大的挑战。
一般针对淘宝双十一这样的活动,软件一般等待的时间要比日常等待的时间多,但是又不能让用户感受到有明显等待的时间,一般10秒为等待感受的时间,多余十秒会对用户体验造成极大的影响,更有甚者会直接放弃操作,会导致用户流失。等待时间是一个直观的影响,造成这样的影响具体有单位时间处理的操作量,系统吞吐量,丢包这些硬性指标,反应这些指标就有系统操作的准确性,响应操作的维度。如果将操作的准确性定为小于十万分之一为系统正常运行,那么单位时间同时操作的和丢包就是直观提高准确性的指标。
2 如何提高性能
以淘宝购物为例,将整个过程分为三个阶段:
- 在用户终端和APP之间,用户发出请求操作,app响应并显示结果给用户。
- 在光纤上的传输,各地的服务器进行数据传输。
- 服务器端对请求数据库操作进行处理,包括基本的增删改查,并将结果返回给服务器。
2.1 第一阶段
随着用户越来越挑剔,直观的显示将极大的影响用户体验,那么前端界面开发会越来越重要,过于花哨的界面将增加软件显示的时间,界面越简洁越好,而必要的css和js是不可缺少的,现阶段手机的内存都是足够用的,一般手机没有明显的卡顿用户是不会清理app缓存,而通过设置app缓存,第二次之后都可以从app缓存中提取,减少反映时间。还可以将css放在文件的首部,js放在文件的尾部,这样便于页面基本的框架先显示出来,而具体的js特效,则可以延后执行
2.2 第二阶段
由于中国地域广,跨度大,即便是光纤传输也会有延迟,网络的带宽将直接影响数据的传输,带宽的速度分为上传和下载,对于一般用户来说,对下载的需求远远大于上传的需求,比如百兆带宽,也就是100m,下载速度理论上是12.5m/s,而上传速度大约不到1.25m,但是服务器端上的上传和下载同样重要,最极端的情况下,每下载一个针对数据库数据操作,就要响应一个结果出来,那么针对这些这些,带宽的工作量就会更加沉重。
针对用户一次操作,比如淘宝搜索一个商品,界面反映出商品的信息这个过程,用户端的带宽使用是完全够用的,开发人员也没有办法决定,那么就要针对服务器端的带宽进行优化和提高,最简单的方法是增加服务器的带宽,但是盲目的增加会很消耗成本,性价比最低,那么就要针对不同软件不同的业务需求来计算网络带宽的需求。对于不同运行商,不同用户的反应时间是不同的,比如用户端是联通的宽带,访问的服务器端也联通的宽带会快速访问,比用户端是移动和电信要快的多,所以针对不同地区建立属于不同运行商的宽带
2.3 第三阶段
第三阶段主要针对数据库端进行操作,以阿里云数据库为例,采用了异地多活体技术,在多个地区部署服务器,如果一个地区的服务器发生不可逆转的情况,马上其他地方的服务器会迅速上线,不同的历史数据在慢慢导入,那么就会产生数据一致性的问题?将业务划分成各个单元,根据用户和业务的不同进行划分,一次操作进行封闭,这样属于同类型的操作都会处于不可操作的情况,那么针对这样的一个单元在同一进行处理,就能解决数据一致性的问题,最主要的是阿里云采用了数据迁移服务DTS,这里就不进行具体的阐述
阿里云最主要的的是针对自己产品的服务,开发出属于自己的服务器OceanBase,OceanBase对比传统的服务器是将数据分为主要数据和次要数据,主要数据是相对稳定改变较少的数据,而次要数据就是将一段时间内对数据库的增删改查以增量的方式进行存储,再根据主键主体数据的存放来进行查找,OceanBase的数据库操作日志非常的全面,如果出现宕机或者停电,可以迅速将操作日志进行迁移,达到减少数据丢失。
参考文献:
[1] 李平. https://mp.weixin.qq.com/s/R4RHkzmxY3c2K-Bvrelz-g 2015-09-20.
[2] 大数网. https://mp.weixin.qq.com/s/8Yi1VS-RVCseRxL433v8fg 2015-12-22