在讨论「分布式与微服务」时,通常会遇到以下几个核心概念:

  • 分布式(Distributed)
  • 单体(Monolith)
  • 微服务(Microservices)

下面我们来逐一解读,并说明分布式与微服务之间的关系。


一、什么是「分布式」

「分布式」最核心的含义是:将原本集中在一台或少数几台机器上的系统或服务,拆分并部署在多台机器或节点上,通过网络进行协作,共同完成系统功能。 也可以理解为在物理/逻辑上把计算和数据进行拆分,从而实现大规模的并行处理、灵活的扩展以及更好的容错性。
就是由于单台服务器无法实现很大的客户需求,就加服务器,每个服务器都部署了系统,但是并不是都是独立的,是一个整体,共享所有数据信息。

分布式的典型特征

  1. 多节点协作: 系统由多台机器或服务组件组成,它们相互协作以完成整体功能。
  2. 网络通信: 不同节点之间依赖网络通信进行数据交换或调用,比如使用 RPC、消息队列、HTTP 等协议或方式。
  3. 数据分散: 数据存储通常也采用分布式的方式,如分布式缓存、分布式数据库;与传统单机数据库或单节点缓存不同。
  4. 负载均衡与扩展: 通过水平扩展(在更多机器上部署相同功能实例)来应对更高的并发或数据量。
  5. 容错性与高可用: 通过分布式部署,一旦某台机器或实例故障,可以迅速切换到其他正常节点,从而提升系统的稳定性和可用性。

典型应用:像 Google、Amazon、阿里这些互联网巨头,都有大规模的分布式系统来支撑海量请求和数据。


二、什么是「微服务」

微服务(Microservices)是一种软件架构风格,强调将应用系统按照业务能力进行细粒度划分,每个微服务通常只负责单一业务能力,并在设计和部署上都能独立。这些微服务之间通过轻量级的通信协议(如 REST、gRPC、消息队列等)进行交互。

微服务对标单体架构,单体架构就是所有模块,比如订单用户,等等模块都在一个项目当中。微服务就是不同的模块就是一个项目,不同的模块项目之间用RPC方式调用

微服务的核心思想

  1. 单一职责: 每个微服务关注单一的业务功能,模块边界清晰。
  2. 独立部署: 不同微服务间相互解耦,可以独立升级和部署,不必像传统单体应用那样,改动一点就要整个系统打包上线。
  3. 技术多样: 每个微服务可以根据自身业务特点选用最合适的技术栈,例如不同语言、数据库等。
  4. 独立演进: 可以独立地进行扩展、优化和维护,减少耦合带来的影响。

微服务是对软件应用拆分的一种架构方式,其目标是提升开发效率、部署灵活性以及系统可维护性。


三、分布式与微服务的关系

  1. 分布式是更底层的概念:
    • 「分布式」本质上是把系统拆分并运行在多台物理机器或节点上。它可以解决大规模计算、数据存储以及高并发访问等需求。
    • 微服务则主要关注「如何拆分」以及「服务边界」和「通信方式」,是对软件架构的进一步设计和规范。
  2. 微服务往往需要分布式支撑:
    • 将一个单体应用拆分为多个微服务后,需要将这些微服务运行在不同节点上,这本身就是一种分布式部署。
    • 微服务之间也会通过分布式的方式通信,比如消息队列、RPC、HTTP 调用等,具备典型的分布式特征(多节点间的交互)。
  3. 微服务并不等同于分布式系统:
    • 你可以有一个「分布式的单体系统」(比如仅仅做了分布式数据库或分布式缓存的单体系统)。
    • 也可以在单节点上以容器化的方式跑多个微服务(在开发或测试阶段,有时就是这种场景),此时从节点拓扑上看还不能算是一个复杂的分布式系统。
    • 因此,分布式与微服务既有交集,也各自独立:分布式是从系统层面拆分,微服务是从业务功能和架构层面拆分。
  4. 微服务常与分布式基础设施结合:
    • 在实际生产环境中,为了充分发挥微服务的价值,往往需要借助分布式基础设施(例如容器编排系统 Kubernetes、分布式服务注册与发现、负载均衡、分布式配置中心、分布式链路追踪、分布式日志系统等),从而实现大规模且可靠的微服务系统。

四、总结

  • 分布式:指的是把系统部署在多台机器上,并通过网络通信来协同工作的架构模式,主要关注高可用、可伸缩、容错以及数据分散等特性。
  • 微服务:是一种将应用功能按业务能力进行拆分的架构风格,每个微服务相互独立、职责单一,通过轻量级的方式进行通信与集成。

二者关系:

  • 分布式是「物理或逻辑上的多节点部署」概念;
  • 微服务是「软件应用的服务拆分与协作」概念;
  • 微服务的落地通常需要分布式的支持,而分布式系统也可能并不一定是微服务架构。

简而言之,微服务可以被视为分布式应用体系下的一种更精细化的业务拆分与管理方式,它有效利用分布式的优势(扩展性、容错等),又在软件生命周期里提供了更好的敏捷性与维护性。

Categories:

Tags:

暂时没有回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注