天天看点

软件架构分层方法论(上)1 什么是架构分层?2 分层有什么好处?

一般初创软件,为快速上线,几乎不考虑分层。但随业务越发复杂,就会导致逻辑复杂、模块相互依赖、代码扩展性差等各种问题。

架构分层迫在眉睫。

1 什么是架构分层?

软件工程中常见的设计方式,将整体系统拆分成N个层次,每个层次有独立的职责,多个层次协同提供完整的功能。

初学 JavaWeb 时一般要求设计成 MVC 架构。另外一种常见的分层方式是将整体架构分为

  • 表现层(Web)

    展示数据结果和接受用户指令的,是最靠近用户的一层;

  • 逻辑层(Service)

    复杂业务的具体实现;

  • 数据访问层(Dao)

    主要处理和存储之间的交互。

这就可以隔离关注点,让不同的层专注做不同的事情。其它分层案例,比如OSI网络七层模型,TCP/IP协议网络四层模型。

2 分层有什么好处?

简化设计

各司专职,而不必将自己活成全才。

高复用

比如在设计某系统时,发现某层具有通用性,就可把它抽取独立出来,在设计其它系统时使用。

横向扩展

可以让我们更容易做横向扩展。如果系统没有分层,当流量增加时我们需要针对整体系统来做扩展。但是,如果我们按照上面提到的三层架构将系统分层后,就可以针对具体的问题来做细致的扩展。

比如业务逻辑里面包含有比较复杂的计算,导致CPU成为性能的瓶颈,那这样就可以把逻辑层单独抽取出来独立部署,然后只对逻辑层来做扩展,这相比于针对整体系统扩展所付出的代价就要小的多了。

架构分层究竟和高并发设计的关系是怎样的?我们知道横向扩展是高并发设计思想之一,既然架构分层可方便横向扩展, 那么高并发系统一定是分层的。