技术开发 频道

业务逻辑,架构的第几层?

    转向中间层

    过渡

    在转向中间层的时候总会出现"把这个放到存储过程中吧"这种情况。并且一而再再而三地出现。然后你会发现一切都回到了从前。

    存储过程应该用于处理SQL并返回可以优化存储过程的结果集。但是存储过程在返回数据的时候不能做多余的操作。对于数据更新来说它应该做的只有这点。

    虽然在某些例外的情况,但是这些情况实际上很少,并且应该看作是例外,而非规则。应该对各个例外进行审查。

    成本更低

    购买更多的硬件却节省成本,这听起来可能比较诡异。但是当你添加额外的中间级的时候,除了操作系统几乎不再需要其它的软件。

    有两个原因使得提高数据库服务器性能的成本很高:

    1.数据库服务器硬件通常比中间级更重要,因此也更昂贵。

    2.数据库通常以CPU为单位进行注册,因此添加CPU意味着更多的注册费用。每个CPU的注册费用从5000美元到40000美元不等。

    把逻辑移到中间级,你可以减少数据库服务器的负载,并避免数据库的提前换代。

    更简单

    除了成本因素,对中间级进行更新通常比对数据库进行更新更为简单。

    数据库有其固有的扩展限制。这可能需要一些其它技术,而这些技术又都非常复杂,还需要在硬件等方面做出大量投资并且会对当前系统产生显著的影响。

    但是中间级就很简单。只要安装好负载分配器,剩下的就只是添加一个能提高性能的新服务器了。

    拓扑结构

    我们用下面的图来分析刚刚讨论的内容。各色条的褪色趋势显示了其对上面对应级的重要性。每单位的成本(cost per unit)是从客户端向中间级、数据库逐渐提高的。单位指的是处理器或服务器。

    如果使用相对值表就更容易对比:

    我没有在图上标出数据,因为这取决于许多因素。各种计算手段也不相同。我只是在这里描述它们的基本关系。很显然中间级具有扩展性,并且比数据库更为简单、而且成本更低。

    发展中间层

    如果有大量的业务逻辑在数据库中实现,那么你就需要一个更大的数据库。比如这个样子:

    通过把逻辑移到中间级,你可以很大程度地减少数据库服务器的负载。虽然具体数据可能根据情况不所不同,但它能帮助你更好地了解其原理。下图的实现虽然需要更多的硬件,但是整体成本却相对较低,而且更易于部署。发展中间层是一种更简单、成本更低的做法。

    瓶颈

    我们来看前面图中的一项。

    这个系统性遇上的唯一的瓶颈是什么?出现在哪一部分?很显然是数据库。所有的漏斗出口都在数据库。

    这样通过把处理过程移到中间层,我们就可以更好地摆脱数据库的限制。

0
相关文章