单体
单个机器,单个实例
集群
多个机器,部署多个相同的实例,通过负载均衡对外提供服务
分布式
分为水平拆分(横向拆分)和垂直拆分
水平拆分
根据“分层”的思想进行拆分。例如,可以将一个项目根据“三层架构”拆分成 表示层(jsp+servlet)、业务逻辑层(service)和数据访问层(dao),然后再分开部署:把表示层部署在服务器A上,把service和dao层部署在服务器B上,然后服务器A和服务器B之间通过dubbo等RPC进行进行整合
垂直拆分
根据不同的业务模块进行拆分,例如一个购物系统,根据用户模块、商品模块、购物车模块、订单模块等拆分多个模块,分别部署到不同的服务器上
SOA
SOA(Service-Oriented-Architecture)面向服务的架构。是把服务拼装形成应用整体的架构,将不同的服务通过ESB(企业服务总线)进行通信和交互。
微服务
微服务可以理解为更小颗粒度的垂直拆分,在垂直拆分的基础上,将业务划分为一个个更小的模块,每个模块都有独立的数据库,都可以独立运行。
微服务设计的四大原则:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言和技术无关
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
SOA和微服务的区别
SOA的设计思路是把一些组件和服务,通过服务总线组装,形成更大的应用系统(从小到大);而微服务的设计思路是把应用拆分成独立自治的小的服务(从大到小)。
SOA设计架构强调分层,通常会分为展现层、业务层、总线层和数据层。微服务架构中的服务更松散。
参考资料: