架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
Java企业级的应用根据业务的复杂程度,通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architecture,SOA)、微服务架构等。
项目架构的选择在项目准备过程中占据着重要的位置,除此之外技术架构的选择也是项目准备过程中必不可少的一个环节,接下来将针对项目架构和技术架构的选择进行详细讲解。
单体应用架构
单体应用架构是把所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,经过编译打包,部署在一台服务器上。
单体应用架构开发的进销存系统
优点:项目架构简单,技术结构单六,前期用人成本低,适合小型系统的开发。
缺点:随着业务复杂度的增加,功能越来越多,代码量越来越大,会导致代码可读性、可维护性和可扩展性下降。由于系统过大且关联较多,任何一个ug都有可能导致整个系统宕机。
垂直应用架构
垂直应用架构将单体应用拆分成若干个独立的小应用,每个小应用独立的部署到不同的服务器上,以提升效率。
垂直应用架构开发的进销存系统
优点:通过垂直拆分实现流量分担,减轻服务器压力;可以针对不同的应用进行优化,方便水平扩展,容错率提高。
缺点:当垂直应用越多,应用之间可能发生相互调用,不同应用之间可能出现数据、代码、功能冗余。
SOA
SOA是面向服务的架构,它将应用程序的不同功能单元(简称服务)进行拆分,并通过这些服务之间定义的接口和协议将其联系起来。
SOA开发的进销存系统
优点:将公共的功能抽取为服务,提高开发效率;各个服务之间耦合度低,可读性和可维护性比较好。
缺点:抽取服务的粒度较大,服务提供方与调用方接口耦合度较高。
微服务架构
微服务架构是SOA架构的升级,每一个服务就是一个独立的部署单元,服务之间的耦合性很低。
微服务架构开发的进销存系统
优点:开发模式更加灵活;微服务的.独立打包、部署和升级,使小团队的交付周期将缩短,运维成本下降。
缺点:对技术要求较高;微服务过多会造成服务管理成本提高,不利于系统维护,服务拆分粒度过细也会导致、系统变得凌乱和笨重。
在开发时通常会根据不同的需求将项目拆分为多个层次处理,开发者可以根据不同的需求由其相对应的技术栈提供解决方案。