微服务架构原理及特征 | 青训营

227 阅读4分钟

微服务架构原理及特征

微服务架构是一种软件开发框架,其中一个大型应用被拆分成多个小型、独立运行的服务。这些小型服务各自有自己的数据库和API,并通过网络进行通信。这种架构模式具有几个显著特点:

首先,微服务架构的三大要素,分别是:
  • 服务治理
  • 可观测性
  • 安全
微服务架构中的基本概念及组件:
  1. 服务(Service): 服务是微服务架构的核心组件,它是一组具有相同逻辑的运行实体。每个服务都关注特定的业务功能,例如用户管理、支付、订单处理等。每个服务都可以被独立地开发、部署和扩展。

  2. 实例(Instance): 在一个服务中,可以有多个相同的运行实体,每个实体都是该服务的一个实例。这些实例可以水平扩展,以满足不同负载需求。例如,一个用户管理服务可能有多个实例来处理大量的用户请求。

  3. 实例与进程的关系: 一个服务的实例可以映射到一个进程,但也可以是多个实例共享一个进程,或者一个实例由多个进程共同承载。这取决于具体的部署架构和技术选择。

  4. 常见的实例承载形式: 在微服务架构中,服务的实例可以以多种形式进行承载,包括但不限于:

    • 进程:每个实例作为一个独立的进程运行,通常在操作系统级别进行管理。
    • 虚拟机(VM):每个实例运行在独立的虚拟机中,实现隔离和资源分配。
    • 容器(如 Kubernetes Pod):使用容器技术可以更轻量地承载实例,提供更好的可移植性和资源利用率。
    • 服务器无状态实例:在无状态实例中,所有的状态信息都从服务中分离出来,使得实例可以更容易地进行扩展和替换。

微服务架构的这些基本概念和组件共同协作,使得软件系统更易于开发、测试、部署和维护。

几个特征:
  1. 独立性: 服务可以独立地进行部署和扩展。
  2. 灵活性: 可以使用不同的编程语言和技术栈。
  3. 可扩展性: 能轻易地添加或移除服务。
  4. 容错性: 一个服务的失败不会导致整个应用崩溃。

对两个课后问题的思考

  1. 结合 CAP 等原理,思考微服务架构有哪些缺陷?

  2. 微服务是否拆分得越“微”越好?为什么?

1.微服务架构有哪些缺陷

结合CAP原理(一致性、可用性、分区容忍性)以及其他相关原理,微服务架构可能面临的缺陷:

  1. 复杂性管理困难:  微服务架构将应用程序拆分为多个小型服务,这些服务可以使用不同的技术栈和数据库。这导致了架构的复杂性,需要额外的管理和协调来确保各个服务之间的协同工作;
  2. 网络延迟和通信开销:  可能引入延迟和通信开销,特别是当服务之间需要频繁通信时,可能会影响系统的性能。
  3. 数据一致性和事务管理:  分布式系统中,一致性、可用性和分区容忍性无法同时满足。微服务架构中的数据一致性和事务管理变得更加复杂,需要权衡是否需要强一致性还是最终一致性,以及如何处理分区容忍性问题。
  4. 部署和运维复杂性:  由于微服务架构涉及多个服务的独立部署,需要有效的部署和运维策略。

2.拆分的“微”程度:

拆分得越“微”并不总是越好。过度拆分会导致:

  1. *开发复杂性增加 : 需要更多的协调和管理。
  2. *运维成本提高 : 更多的服务意味着更多的运维负担。
  3. *网络开销 : 过多的微服务之间的通信可能会造成网络瓶颈。