天我们继续来聊一聊一些程序员的常用通用设计思想,为什么服务需要分层。很多人从大学到公司上班,会有这样一种感觉,在大学的时候,所有的项目都非常简单,而且大部分都是一次性的课程设计类项目,所以我们很少去考虑系统要如何设计才更加利于后期的维护与拓展,但是到了真正成为一名程序员的时候,我们就要发现几乎所有的工业使用的代码,都是分层。例如我们常用的网络协议,将计算机网络分层了7层模型,为什么要这样子做呢?代码的分层有什么好处?
代码的分层,主要有3个好处,首先是更好地进行分工与维护。我们都知道,在古老的计算机架构中,我们习惯于将所有的业务部署在同一台机器,甚至代码可能都耦合在一块,这样存在一个严重问题就是如果有一个人要对代码进行修改,那么他需要对整套代码,整套业务都非常地熟悉,才能够进行工作,否则肯定是到处踩坑。对于机器来说,分层,也是让不同的机器去干自己跟擅长的事情,例如存储的机器可以硬盘配置更高,而计算密集的服务可以由CPU、GPU更好的机器来运行一样。其次,代码分层是可以达到代码更好的复用。举一个简单的例子,在电商系统中,有着好几种不同的交易模式,像拍卖、拼团、正常的购买等等,如果我们将代码分层,那么他们可以共用一套订单系统,他们与订单系统的交互,都是通过接口定义的数据结构来实现,订单系统不用去关心不同类型的特点,从而让代码得以复用。同样的道理,在计算机网络的应用层中,不同的传输协议,都可以复用传输层的TCP或者UDP协议,从不用自己去实现各种超时重传、网络拥塞等技术。最后,分层更利于代码进行扩展,哪个服务承受压力,就拓展哪个服务。所以,在日常的开发中,我们也习惯将容易由瓶颈的模块单独抽离出来进行部署,以便于后期横向进行扩展。
总结
服务分层,相信每个程序员都懂,但是他的道理除了上述几点,还有其他作用,如果你有其他见解,欢迎在评论区留言。欢迎大家