一、单体架构
特点:
1.所有功能集成在一个工程中
2.部署方式:所有功能打成一个war包部署到服务器
3.应用和数据库分开部署
4.通过部署应用集群和数据库集群来提高系统性能
优点:
1.架构简单,前期开发简单、成本低, 项目周期短,适合小型项目
缺点:
1.全部功能集中在一个工程,对于大型项目不利于开发、扩展、维护
2.想要提升性能只能通过增加服务器,成本太高
3.技术栈受限(一般一个项目只能使用一种语言)
二、垂直架构
特点:
1.将一个大项目拆分成多个小的单体项目
2.项目之间存在一些功能的重复,比如上图中都有用户管理
3.项目之间的接口一般为数据同步(数据库之间同步,或应用通过网络接口同步)
优点:
1.项目架构简单,
2.通过垂直拆分,原来的单体项目不会无限扩大
3.不同项目可以采用不同的技术
缺点:同单体架构
三、SOA架构
特点:
1.将重复的功能抽取成组件,以服务的方式给各个系统提供服务
2.各个系统与服务之间通过webservice、rpc等方式通信
3.ESB企业服务总线作为系统和服务之间的桥梁
优点:
1.将重复的功能抽取为服务,提高开发效率,提高系统的客重用性、可维护性
2.针对不同服务的特性指定不同的优化方案,即压力较大的服务可以多部署服务器
缺点:
1.系统和服务的界限模糊,不利于开发和维护
2.服务的接口协议不固定,种类繁多,不利于系统维护
3.抽取的服务的粒度太大,系统和服务之间耦合度高
四、微服务架构
特点:
1.将系统服务曾完全独立,并将服务曾抽取成微服务
2.微服务遵循单一原则
3.微服务之间采用RESTful等轻量协议传输
优点:
1.服务拆分粒度更细,有利于资源重复利用,提高开发效率
2.微服务架构去中心化,服务见采用RESTful等轻量协议通信
3.迭代周期更短
缺点:
1.微服务过多,服务治理成本高,不利于维护
2.分布式开发技术成本高(分布式事务等)
网友评论