1、可扩展
为了实现一个需求,需要修改系统代码时,若修改代码对已存在的功能影响非常小,那么说明原有系统的可扩展性高;若修改代码对已存在的功能影响非常大,那么说明原有系统的可扩展性低。
设计一个系统时,需要考虑可扩展性,以当下次对系统进行修改时,减小对系统已有功能的影响程度。可扩展性需要在后续接到新需求时才能被检验。
设计可扩展时用的方法,万变不离其中,一个字即拆,以此来实现高内聚,低耦合。
2、常见可扩展模式
根据不同的拆分方式,将得到不同的可扩展架构模式。
面向流程拆分:分层架构。
面向服务拆分:SOA和微服务。
面向功能拆分:微内核架构。
流程、服务、功能,根据范围由大到小依次为流程>服务>功能。
3、分层架构
常见的分层架构有MVC,model层又分为业务逻辑层、数据层等。
使用场景:实现后端API的典型分层架构。
4、SOA
使用场景:对于一些传统公司而言,公司内部有很多个系统,并且这些系统很少变动、使用时间比较长,系统开放接口的形式很不一样。公司为了集成各个系统,通过ESB作为中间件负责各个系统的消息转换。
5、微服务
对于互联网系统来说,如果继续使用ESB,ESB本身也将成为系统瓶颈。互联网系统采用去中心化的方式,让各个服务之间相互调用,这样带来的一个副作用是各个服务之间的开放接口需要统一。
互联网业务的典型特点有:用户数量大、业务发展迅速。
6、微内核架构
一般比较复杂的单机应用可采用微内核架构,比如操作系统、Eclipse等。