微服务,分布式和集群区别(彻底搞懂)

微服务,分布式和集群区别



在区分之前,先了解几个概念。

面试可以直接看最下面总结

水平拆分

根据“分层”的思想进行拆分。例如,可以将一个项目根据“三层架构”拆分成 表示层(jsp+servlet)、业务逻辑层(service)和数据访问层(dao),然后再分开部署:把表示层部署在服务器A上,把service和dao层部署在服务器B上,然后服务器A和服务器B之间通过dubbo等RPC进行进行整合(在左下角的“阅读原文”里有dubbo的视频课程,可以点击学习),如图所示。

v2-51d2bd9aac06842f39f3a0e2411b2d0b_720w.jpg
垂直拆分

根据业务进行拆分。例如,可以根据业务逻辑,将“电商项目”拆分成“订单项目”、“用户项目”和“秒杀项目”。显然这三个拆分后的项目,仍然可以作为独立的项目使用。像这种拆分的方法,就成为垂直拆分。

v2-571c0559221958b5d63ec7bf557157f1_720w.jpg

微服务



微服务是系统架构的一个设计方式,它是将复杂的业务拆分成多个微小的服,每个服务可单独运行和部署,服务与服务之前一个可以采用RPC来通信。

微服务可以理解为一种非常细粒度的垂直拆分。例如,以上“订单项目”本来就是垂直拆分后的子项目,但实际上“订单项目”还能进一步拆分为“购物项目”、“结算项目”和“售后项目”,如图。
v2-5ac8c1aaca336a8e6182e96ccb50b553_720w.webp
微服务架构风格,就像是把一个单独的应用程序开发成一套小服务,每个小服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API 这些服务围绕业务能力来构建, 并通过完全自动化部署机制来独立部署,这些服务使用不同的编程语言书写,以及不同数据存储技术,并保持最低限度的集中式管理。
简而言之拒绝大型单体应用,基于业务边界进行服务微化拆分,每个服务独立部署运行。

分布式



是一种系统的部署方式,主要是将同一个服务,拆分成可以去部署到多台机器。

是指将不同的业务分布在不同的地方(重点)(比如京东,将各个业务分布在不同的服务器上) 例如上述水平拆分
分布式的核心就一个字:拆。只要是将一个项目拆分成了多个模块,并将这些模块分开部署,那就算是分布式。

集群



集群实质是将几台服务器集中在一起,实现同一业务(比如购物车,一台服务器不够,放上十台服务器,十台服务器完成同一业务)

例如:京东是一个分布式系统,众多业务运行在不同的机器上,所有业务构成一个大型的业务集群,每一个小的业务,比如用户系统,访问压力大的时候一台服务器是不够的,我们就应该将用户系统部署到多个服务器,也就是每一个业务系统也可以做集群化
比如:用户输入www.jingdong.com,进入京东网站完成整个购物流程,我们没有感受到京东后面有多少台服务器,因为京东是分布式系统,他的各个业务是运行在不同的机器上的,这些机器合起来完成整个京东的功能,所以说这些业务就可以被称为大型的业务集群

分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的

集群不一定是分布式的?比如,用户系统集群不是分布式的,整个京东系统才是分布式的

总结



从概念理解,分布式服务架构强调的是服务化以及服务的分散化,微服务则更强调服务的专业化和精细分工;从实践的角度来看,微服务架构通常是分布式服务架构,反之则未必成立。所以,选择微服务通常意味着需要解决分布式架构的各种难题。

微服务和分布式区别 面试回答

  • 微服务是系统架构的一个设计方式,它是将复杂的业务拆分成多个微小的服,每个服务可单独运行和部署,服务与服务之前一个可以采用RPC来通信。
  • 分布式是一种系统的部署方式,主要是将同一个服务,拆分成可以去部署到多台机器。
  • 集群实质是将几台服务器集中在一起,实现同一业务
  • 微服务架构是分布式服务架构的子集
  • 分布式部署不一定是微服务架构,而微服务的应用也不一定是要采用分布式部署
  • 分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的

猜你喜欢

转载自blog.csdn.net/weixin_44030143/article/details/130160842
今日推荐