内容是指内容热点,比如对于search来说,就按体育,数码,音乐等划分,不同内容有不同热点数据,以及不同搜索关键匹配.
时间, 时间是一个非常重要的因素,在一些特点是时间段呢,性能的要求会非常高.比如下半夜的访问点击量和白天的就有不同.对于一些batch来说, 月末或者年末处理的单量就有明显的提高,比如分红险的记息,平时每天只有7000单,而年末会有12w单.
地点划分,不太常见,不过也有助于分配计算资源.
业务层面的分析不仅是确定问题所在,还是确定优化的策略.比如有一个batch计算,执行时间比较长,而通过业务分析,发现该计算只针对特定的业务, 系统全部有效单量是12w单,而符合计算要求的只有3000单,只要加上一个前置判断就可以免除无谓的计算,运行时间减少数个小时(大约0.2秒一单).
2. 技术层面
系统建立时技术结构,通常一个系统结构如下:接入网络,Web服务器,应用服务器,以及数据库服务器.
在这样结构下,要小心的分析和验证系统性能的瓶颈,需要优化Web服务器,或者提高数据库并发能力等等。这部分网上的资料非常多。
三、架构的开发成本以及品质问题解决讨论
架构一个重大关注点在于控制开发成本,这点很重要,因为通常讲维护成本是开发成本的3倍。降低开发成本核心,在于提高效率,这也意味着提高了开发对需求的响应时间,而时间对公司来说是重要的。
提高开发效率和品质的基本手段是分解——即充分的分离系统中不同的关注点,好处不用说了,可以并发的工作,每个人面对的问题都简单而容易操作。而与分解对应的集成,只有提供了好的集成能力,分解才成为现实,而只有分解了,才能清晰的提供业务更多适应性。
分解和集成的手段分为编程语言和技术框架两个层面。所谓语言就是强框架,而框架就是弱语言。
现代面向对象的语言提供如下能力:抽象和派生能力,以及接口隔离能力。实际提供两种分解和集成能力:
1. 把逻辑分解在两个层次中,而通过继承的方式把两个部分集成在一起。
2. 把逻辑的外观和实现分解在两个地方,而通过接口实现的方式把两部分集成在一起。
另一种语言AspectJ或者C#语言2.0之后提供的特性:把流程逻辑,分解在不同的地方,而通过签名匹配,利用代码生成的方式来把几部分集成在一起。
然而语言提供的集成能力,毕竟底层,而且有限,扩展起来也格外小心。因而技术框架提供另外的集成能力就格外重要:
1. 对象关联关系的分解和集成,如Spring提供容器管理能力
文章来源于领测软件测试网 https://www.ltesting.net/