企业应用的特点

Date:
Categories: 架构模式
Author: sysublackbear
Tags: ,

1.企业应用的特点

  • 企业应用一般涉及持久化数据;
  • 企业应用一般涉及很多人同时访问数据;
  • 企业应用还涉及大量操作数据的用户界面;
  • 企业应用很少独立存在,通常需要与散布在企业周围的其他企业应用集成;
  • 同时还会带来业务过程中的差异以及数据中概念的不一致性;
  • 在业务开发的过程中,成千上万的"一次性特殊情况"最终导致了复杂的业务"无逻辑";

2.系统性能应该关注的几个指标

  1. 响应时间:是指系统完成一次外部请求处理所需的时间,如用户的交互行为。
  2. 响应性:响应性不同于请求处理,它是系统响应请求的速度有多快。
  3. 等待时间:是获得系统任何形式响应的最小时间,即使应该做的工作并不存在,如调用过程中的线路传输。
  4. 吞吐率:是给定时间内能够处理多大的请求量,通常用每秒事务数(tps)来度量。这种方法的一个问题是指标依赖与事务的复杂程度。
  5. 负载:关于系统当前负荷的表述,也许可以用当前有多少用户与系统相连来表示。
  6. 负载敏感度:是指响应时间随负载变化的程度。
  7. 效率:是性能除以资源。如果一台双CPU系统的性能是30tps,另一个系统有4个同样的CPU系统性能是40tps,则前者效率高于后者。
  8. 容量:系统的容量是指最大有效负载或者吞吐率的指标。它可以是一个绝对值最大值或者性能衰减至低于一个可接受的阈值之前的临界值。
  9. 可伸缩性:可伸缩性度量是系统中增加资源(通常是硬件)对系统性能的影响。其中,垂直可伸缩性或称垂直延展,通常是指提高单个服务器的性能,例如增加内存;水平可伸缩性或称水平延展,通常是指增加服务器数目。

3.系统分层的利弊

将系统按照层次分解有很多重要的好处:

  • 在无需过多了解其他层次的基础上,可以将某一层作为一个有机整体来理解。例如:无需知道以太网的工作细节,你照样可以在TCP上构建FTP服务。
  • 可以替换某层的具体实现,只要前后提供的服务相同即可。
  • 可以将层次间的依赖性减到最低。
  • 分层有利于标准化工作。
  • 一旦构建好了某一层次,就可以用它为很多上层服务提供支持。

但是分层也有它的弊端:

  • 层次并不能封装所有的东西,有时它会为我们带来级联修改。最经典的例子就是在一个分层设计的企业应用中,如果要增加一个在用户界面上显示的数据域,就必须在数据库中增加相应的字段,还必须在用户界面和数据库之间的每一层做相应的修改。
  • 过多的层次会影响性能。在每一层,一般都会从一种表现形式转换到另一种(组装函数Assemble,Disassemble)。不过底层功能的封装通常会带来比代价更大的效率提升。例如,可以优化事务控制层,提高其他各层的效率。

4.企业应用层次的演化

  1. 批处理系统:无层次结构;
  2. 客户端/服务器两层结构系统;
  3. 表现层(用户界面),领域层(领域逻辑)和数据源层(存取数据)的三层结构。

5.区分领域逻辑的方法

使用领域逻辑时,其中一个最困难的部分就是区分什么是领域逻辑,什么是其他逻辑。一种不太正规的测试方法就是:假想向系统中增加一个完全不同的新层,例如为Web应用增加一个命令行界面层。如果在这个过程中,发现需要重复实现某些功能,则说明可能有一些本应该在领域层实现的逻辑,现在在表现层实现了,换言之,这部分的逻辑可以抽离出来,放到领域层里面。