软件开发的家园,编程爱好者的天地.

现在是:北京时间 2016/4/14 上午11:50:51 星期四

设为首页  |  加入收藏  |  网站地图

当前位置: 第八基地首页 > 软件工程 > SOA >
软件架构浅谈:问题域及其解决方法(3)
发布于:第八基地 来源:互联网 作者:天堂路上 时间:2016-04-24 点击:368

4.改进计算时间,针对不同技术结构采用不同手段。

  4.1.让计算支持并发,提高性能,例如采用MapReduce的方式

  4.2.改进算法.例如数据库中的SQL改进.

  4.3.减少不必要计算时间.

  5.减少其它技术原因导致的消耗

  如JVM的GC导致性能消耗等

  对于总并发数,其公式为:

  总并发数=单机服务器并发能力*总并发服务器数

  那么如何确定那些因素需要调整呢,在于两个方面的分解:

  1.业务层面

  业务层面只是指通过业务行为分析,把性能问题分解为不同的部分,每个部分面临性能压力现状和目标,最终确定需要优化的问题域.

  业务层面分解包括4个内容:功能,内容,时间和区域.最重要的是前三个.

  以ebay为例,ebay对于前端功能划分划分为70多个功能,不同的服务器处理不同的功能.

  内容是指内容热点,比如对于search来说,就按体育,数码,音乐等划分,不同内容有不同热点数据,以及不同搜索关键匹配.

  时间,时间是一个非常重要的因素,在一些特点是时间段呢,性能的要求会非常高.比如下半夜的访问点击量和白天的就有不同.对于一些batch来说,月末或者年末处理的单量就有明显的提高,比如分红险的记息,平时每天只有7000单,而年末会有12w单.

  地点划分,不太常见,不过也有助于分配计算资源.

  业务层面的分析不仅是确定问题所在,还是确定优化的策略.比如有一个batch计算,执行时间比较长,而通过业务分析,发现该计算只针对特定的业务,系统全部有效单量是12w单,而符合计算要求的只有3000单,只要加上一个前置判断就可以免除无谓的计算,运行时间减少数个小时(大约0.2秒一单).

  2.技术层面

  系统建立时技术结构,通常一个系统结构如下:接入网络,Web服务器,应用服务器,以及数据库服务器.

  在这样结构下,要小心的分析和验证系统性能的瓶颈,需要优化Web服务器,或者提高数据库并发能力等等。这部分网上的资料非常多。

  三、架构的开发成本以及品质问题解决讨论

  架构一个重大关注点在于控制开发成本,这点很重要,因为通常讲维护成本是开发成本的3倍。降低开发成本核心,在于提高效率,这也意味着提高了开发对需求的响应时间,而时间对公司来说是重要的。

  提高开发效率和品质的基本手段是分解——即充分的分离系统中不同的关注点,好处不用说了,可以并发的工作,每个人面对的问题都简单而容易操作。而与分解对应的集成,只有提供了好的集成能力,分解才成为现实,而只有分解了,才能清晰的提供业务更多适应性。

  分解和集成的手段分为编程语言和技术框架两个层面。所谓语言就是强框架,而框架就是弱语言。

  现代面向对象的语言提供如下能力:抽象和派生能力,以及接口隔离能力。实际提供两种分解和集成能力:

  1.把逻辑分解在两个层次中,而通过继承的方式把两个部分集成在一起。

  2.把逻辑的外观和实现分解在两个地方,而通过接口实现的方式把两部分集成在一起。

  另一种语言ASPectJ或者C#语言2.0之后提供的特性:把流程逻辑,分解在不同的地方,而通过签名匹配,利用代码生成的方式来把几部分集成在一起。

  然而语言提供的集成能力,毕竟底层,而且有限,扩展起来也格外小心。因而技术框架提供另外的集成能力就格外重要:

  1.对象关联关系的分解和集成,如Spring提供容器管理能力

  2.模块间关联关系的分解和集成,如OSGi,ESB等

  3.不同系统的类型分解和集成,如Spring利用动态代理提供的Exporter模式。

  4.流程逻辑的分解和集成,如SpringWebFlow以及jBPM。

  讨论完手段,现在要转身看看我们面临的问题域了;问题域可分解为两种类型,业务上和技术上。(又见分解,分而治之真是老祖宗传下的灵丹妙药啊)

对我有帮助
(0)
0%
对我没帮助
(0)
0%
返回顶部
在线反馈
在线反馈