【云原生架构】库(Library ) vs 服务(Service ) vs Sidecar(边车)

简介: 【云原生架构】库(Library ) vs 服务(Service ) vs Sidecar(边车)

所有软件应用程序都由可重用的元素组成。这些可重用元素的目标和功能从基础设施级别到安全级别到业务能力各不相同。

本文的目的是比较用于构建和部署这些可重用元素的不同方法。

1. 库

这是重用代码的最广泛使用的方法。可重用代码作为库开发和发布。在这种方法中,客户端应用程序将库定义为直接依赖项,使用提供的 API 并将其代码与主应用程序逻辑一起发送。库和主应用程序逻辑的代码作为同一进程/容器的一部分执行。

优点

  • 延迟:库中的代码与主应用程序在同一进程中执行,因此没有网络延迟。
  • 可用性:整体可用性很高,因为没有网络分区(CAP 定理)。
  • 易于使用:使用非常简单。
  • 环境上下文:库可以访问环境上下文(内存、CPU 等),因为它们是同一容器的一部分。

缺点

  • 资源:内存、CPU 等资源与主应用程序共享。这意味着库的性能会对主应用程序产生副作用。
  • 技术:库中使用的库与主要应用程序的库相同,因此,如果组织有不同的应用程序集,则每种语言都需要多个实现。
  • 可维护性:库中的任何错误修复都需要对所有客户端应用程序进行代码更改和测试。

服务

下一个最广泛使用的模式是为可重用功能定义服务。在这种方法中,应用程序使用请求-响应机制进行网络调用以调用另一个服务。服务和主要应用程序逻辑的代码在不同的 Pod/服务器实例中执行。


优点

  • 资源:应用程序和服务分开部署,因此资源不共享。资源可以独立地针对应用程序和服务进行优化。
  • 可维护性:当涉及到错误修复时,服务可以独立发布。不需要版本升级。
  • 技术:可以使用适合其目的的任何技术选择来开发服务。

缺点

  • 易用性:与库相比,服务的易用性相对较低。
  • 延迟:由于应用程序和服务是分布式的,并且调用需要网络调用,因此延迟明显更高。
  • 环境上下文:服务无法访问主应用程序的环境上下文(内存、CPU 等),因为两者都在不同的实例中独立运行。
  • 可用性:由于网络分区,总体可用性将低于库。

边车

Sidecar 模式是由两个容器组成的单节点模式。side car 和主应用程序逻辑的代码作为不同进程/容器的一部分执行,但一起部署在同一个 pod/server 实例中。


优点缺点

  • 可维护性:当涉及到错误修复时,Sidecar 可以独立发布。
  • 技术:Sidecar 可以使用适合其目的的任何技术进行开发。
  • 延迟:与服务相比,延迟较低,但高于库。这种方法的反模式是使所有可重用的组件边车,因为这将导致显着的影响性能影响。
  • 资源:应用程序和 Sidecar 部署为集合,因此资源共享,但可以为 Sidecar 单独设置资源限制,以防止 Sidecar 过度使用。这种方法的反模式是让所有可重用的组件使用边车,因为它会导致资源配置管理的巨大开销。
  • 易用性:与库相比,Sidecar 的易用性相对较低,如果 CI/CD 管道支持开箱即用,则与服务相比使用起来更简单。
  • 环境上下文:sidecar 可以访问环境上下文(内存、CPU 等),因为它是同一个 pod/server 实例的一部分。这允许边车进行应用程序性能监控等。
  • 可用性:与服务相比,可用性会更高,因为没有真正的网络分区。一般来说,可用性主要取决于主应用程序和边车之间的通信协议。例如。如果协议被触发并忘记,那么边车中的失败不会对主应用程序产生级联副作用。

概括

上面提到的方法 — Library、Service 和 Sidecar 都可以一起用于应用程序以达到预期的结果。应用程序可以使用库进行数据库调用,使用边车进行分布式日志记录,以及提供身份验证功能的服务。开发团队需要权衡利弊,然后选择正确的解决方案。

相关文章
|
24天前
|
调度
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(二)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
|
27天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
32 0
|
4天前
|
Cloud Native API 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第21天】 随着企业加速其数字化转型的步伐,云原生技术已迅速成为推动创新和实现敏捷性的基石。本文深入探讨了云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及声明式API。通过分析这些技术的协同效应,揭示了它们如何共同促进系统的可伸缩性、弹性和维护性,进而支持企业在不断变化的市场环境中保持竞争力。
10 1
|
4天前
|
敏捷开发 Cloud Native 持续交付
构建未来:云原生架构的进化之路
【4月更文挑战第21天】随着数字化转型的深入,企业对IT基础设施的要求日益提高。云原生技术以其灵活性、可扩展性和敏捷性成为推动创新的重要力量。本文将探讨云原生架构的核心组件,分析其如何助力企业实现快速迭代和高效运营,并预测云原生技术的发展趋势。
|
7天前
|
Cloud Native 持续交付 云计算
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第18天】 随着企业加速迈向数字化,云原生架构成为推动创新与效率的催化剂。本文深入探讨了云原生技术如何助力企业实现敏捷开发、自动化运维和无缝可扩展性,以及它如何塑造着云计算的未来。我们将通过具体案例分析,揭示云原生架构在处理复杂系统时的灵活性和可靠性,并展望其对业务连续性和安全性的积极影响。
13 1
|
10天前
|
Cloud Native 持续交付 API
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第15天】 随着企业加速其数字化转型的步伐,云原生架构已经成为推动创新和实现敏捷性的关键技术。本文深入探讨了云原生技术如何助力企业在竞争激烈的市场中保持领先地位,包括它的核心组件、实施策略以及面临的挑战。通过实际案例分析,我们揭示了企业如何利用云原生架构来优化资源使用、提高开发效率和加强系统的稳定性与安全性。
|
11天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第14天】 随着企业加速迈向数字化,云原生架构成为支撑其转型战略的核心技术之一。该文章深入探讨了云原生技术如何通过提供灵活、可扩展的解决方案来满足现代业务需求。分析了容器化、微服务、持续集成和持续部署(CI/CD)以及DevOps文化对于构建和维护高效、可靠的云基础设施的重要性。同时,讨论了企业在采用云原生架构时可能面临的挑战,并提出相应的策略以克服这些障碍。
|
15天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【4月更文挑战第10天】 随着数字化转型的不断深入,企业对信息技术基础设施的要求日益提高。云原生架构作为一种新兴的设计理念和技术集合,以其灵活性、可扩展性和容错性,正在成为推动企业技术革新的关键力量。本文将探讨云原生技术的核心组件、实施策略以及面临的主要挑战,并分析如何通过采纳云原生架构来优化业务流程和提升服务效率。
|
18天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第7天】 随着企业加速其数字化转型的步伐,云原生架构已经成为支持敏捷开发、自动化运维和微服务的关键平台。本文深入探讨了云原生技术如何赋予企业灵活性与创新能力,以及这些技术如何帮助组织更有效地响应市场变化和客户需求。通过分析容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等核心技术,我们将揭示它们如何共同塑造着云计算的未来,并为企业提供竞争优势。
13 1
|
24天前
|
程序员 Linux
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(三)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构

热门文章

最新文章