摘 要:本文通过针对淘宝网操作流程的举例,阿里云服务器特点来进行简单阐述,简述了软件质量属性六大指标中的性能以及判断软件性能的优劣以及提高性能的方法,
关键词:性能,淘宝网,性能,阿里云服务器
引言:软件属性包含功能属性和质量属性,显然在软件架构里,我们更要注重的是软件的质量属性,当然我们必须在满足功能需求的前提下去尽量满足质量属性,用户使用软件时,软件的响应时间,流畅程度等等都是影响用户体验的重要因素,所以如何判断软件的性能和提高性能便成为当下热题。
1系统性能优劣的判断
什么是性能,有人说性能就是访问速度快慢,这是最直观的说法,也是用户的真实体验。一个用户从输入网址到按下回车键,看到网页的快慢,这就是性能。对于我们来说,需要去挖掘这个过程,因为这决定我们怎么去做性能优化。用户体验软件是最直观影响其使用体验感的就是等待时间,也就是我们说的响应时间,下面我们将以淘宝网的交互场景来对性能进行简单分析,
场景部分 |
可能的值 |
场景 |
买家购买商品 |
刺激 |
购买商品 |
制品 |
生成订单 |
环境 |
系统正常运行 |
响应 |
生成订单后提示用户支付 |
响应度量 |
等待时间、判断是否有货 |
对于现在主流的软件,都是针对海量的用户同时对软件进行操作这样的流程来进行优化,常规操作一般都不会发生意外,只要保证服务器不宕机,日常的操作能快速准确的进行。但想针对淘宝双十一,微博热搜和购买春运火车票这一类的操作,由于中国人口基数大,地域跨度高,海量高并发的操作对于数据库都一个巨大的挑战。
一般针对淘宝双十一这样的活动,软件一般等待的时间要比日常等待的时间多,但是又不能让用户感受到有明显等待的时间,一般10秒为等待感受的时间,多余十秒会对用户体验造成极大的影响,更有甚者会直接放弃操作,会导致用户流失。等待时间是一个直观的影响,造成这样的影响具体有单位时间处理的操作量,系统吞吐量,丢包这些硬性指标,反应这些指标就有系统操作的准确性,响应操作的维度。如果将操作的准确性定为小于十万分之一为系统正常运行,那么单位时间同时操作的和丢包就是直观提高准确性的指标。
2 系统性能的提高
今年双十一,支付宝整个核心链路是运行在OceanBase上面的,数字呢,一个是上面提到的14万每秒的订单创建,8.59万笔每秒的支付,还有就是一天10TB左右的数据库写入量。这个数据无疑是巨大的,那么淘宝是如何把这个问题解决的如此完美呢,以淘宝购物为例,将整个过程分为三个阶段:
第一阶段
现如今生活节奏越来越快,相比于花里胡哨的界面人们更关注软件的响应速度和便捷性,但是必要的css和js界面是不可缺少的,现阶段手机的内存都是足够用的,一般手机没有明显的卡顿用户是不会清理app缓存,而通过设置app缓存,第二次之后都可以从app缓存中提取,减少反映时间。还可以将css放在文件的首部,js放在文件的尾部,这样便于页面基本的框架先显示出来,而具体的js特效,则可以延后执行
第二阶段
由于中国地域广,跨度大,即便是光纤传输也会有延迟,网络的带宽将直接影响数据的传输,带宽的速度分为上传和下载,对于一般用户来说,对下载的需求远远大于上传的需求,比如百兆带宽,也就是100m,下载速度理论上是12.5m/s,而上传速度大约不到1.25m,但是服务器端上的上传和下载同样重要,最极端的情况下,每下载一个针对数据库数据操作,就要响应一个结果出来,那么针对这些这些,带宽的工作量就会更加沉重。
针对用户一次操作,比如淘宝搜索一个商品,界面反映出商品的信息这个过程,用户端的带宽使用是完全够用的,开发人员也没有办法决定,那么就要针对服务器端的带宽进行优化和提高,最简单的方法是增加服务器的带宽,但是盲目的增加会很消耗成本,性价比最低,那么就要针对不同软件不同的业务需求来计算网络带宽的需求。对于不同运行商,不同用户的反应时间是不同的,比如用户端是联通的宽带,访问的服务器端也联通的宽带会快速访问,比用户端是移动和电信要快的多,所以针对不同地区建立属于不同运行商的宽带
第三阶段
第三阶段主要针对数据库端进行操作,以阿里云数据库为例,采用了异地多活体技术,在多个地区部署服务器,如果一个地区的服务器发生不可逆转的情况,马上其他地方的服务器会迅速上线,不同的历史数据在慢慢导入,那么就会产生数据一致性的问题?将业务划分成各个单元,根据用户和业务的不同进行划分,一次操作进行封闭,这样属于同类型的操作都会处于不可操作的情况,那么针对这样的一个单元在同一进行处理,就能解决数据一致性的问题,最主要的是阿里云采用了数据迁移服务DTS,这里就不进行具体的阐述
阿里云最主要的的是针对自己产品的服务,开发出属于自己的服务器OceanBase,OceanBase对比传统的服务器是将数据分为主要数据和次要数据,主要数据是相对稳定改变较少的数据,而次要数据就是将一段时间内对数据库的增删改查以增量的方式进行存储,再根据主键主体数据的存放来进行查找,OceanBase的数据库操作日志非常的全面,如果出现宕机或者停电,可以迅速将操作日志进行迁移,达到减少数据丢失