分布式:核心就一个字-拆。只要是将一个项目拆分成了多个模块,并将这些模块分开部署,那就算是分布式。
拆分有两种方式:水平拆分,或垂直拆分(也称为“横向拆分”和“垂直拆分”)
水平拆分: 根据“分层”的思想进行拆分。例如,可以根据“三层架构”拆分成 表示层(controller)、业务逻辑层(service)和数据访问层(dao),然后再分开部署:把表示层部署在服务器A上,把service和dao层部署在服务器B上,然后服务器A和服务器B之间通过dubbo等RPC进行进行整合
垂直拆分: 根据业务进行拆分。例如,可以根据业务逻辑,将“电商项目”拆分成“订单项目”、“用户项目”和“秒杀项目”。显然这三个拆分后的项目,仍然可以作为独立的项目使用。像这种拆分的方法,就成为垂直拆分。
“微服务”就是非常微小的服务,例如上图的订单服务依然可以细分有结算项目、购物项目等等,细化到不能再进行拆分的力度,则可以作为一个微服务。
微服务和分布式的区别
- 从功能上来讲:一个微服务只实现一项功能;一个分布式服务可能负责几个功能。
- 从所需机器上来讲:微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器;而分布式应用要部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息。
总的来说,在实践的角度看,微服务架构是分布式架构,反之则未必成立;微服务重在解耦合,使每个模块都独立,分布式重在资源共享与加快计算机计算速度;
特点: 分布式 -> 分散压力 微服务 -> 分散能力