所有软件应用程序都由可重用的元素组成。这些可重用元素的目标和功能从基础设施级别到安全级别到业务能力各不相同。
本文的目的是比较用于构建和部署这些可重用元素的不同方法。
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 都可以一起用于应用程序以达到预期的结果。应用程序可以使用库进行数据库调用,使用边车进行分布式日志记录,以及提供身份验证功能的服务。开发团队需要权衡利弊,然后选择正确的解决方案。
本文 :https://architect.pub/library-vs-service-vs-sidecar | ||
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】 | ||
公众号 | 【jiagoushipro】 【超级架构师】 精彩图文详解架构方法论,架构实践,技术原理,技术趋势。 我们在等你,赶快扫描关注吧。 | |
微信小号 | 【ca_cea】 50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化. | |
QQ群 | 【285069459】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。 加QQ群,有珍贵的报告和干货资料分享。 | |
视频号 | 【超级架构师】 1分钟快速了解架构相关的基本概念,模型,方法,经验。 每天1分钟,架构心中熟。 | |
知识星球 | 【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。 | |
喜马拉雅 | 【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。 | 【智能时刻,架构君和你聊黑科技】 |
知识星球 | 认识更多朋友,职场和技术闲聊。 | 知识星球【职场和技术】 |
领英 | Harry | https://www.linkedin.com/in/architect-harry/ |
领英群组 | 领英架构群组 | https://www.linkedin.com/groups/14209750/ |
微博 | 【超级架构师】 | 智能时刻 |
哔哩哔哩 | 【超级架构师】 | |
抖音 | 【cea_cio】超级架构师 | |
快手 | 【cea_cio_cto】超级架构师 | |
小红书 | 【cea_csa_cto】超级架构师 | |
网站 | CIO(首席信息官) | https://cio.ceo |
网站 | CIO,CTO和CDO | https://cioctocdo.com |
网站 | 架构师实战分享 | https://architect.pub |
网站 | 程序员云开发分享 | https://pgmr.cloud |
网站 | 首席架构师社区 | https://jiagoushi.pro |
网站 | 应用开发和开发平台 | https://apaas.dev |
网站 | 开发信息网 | https://xinxi.dev |
网站 | 超级架构师 | https://jiagou.dev |
网站 | 企业技术培训 | https://peixun.dev |
网站 | 程序员宝典 | https://pgmr.pub |
网站 | 开发者闲谈 | https://blog.developer.chat |
网站 | CPO宝典 | https://cpo.work |
网站 | 首席安全官 | https://cso.pub |
网站 | CIO酷 | https://cio.cool |
网站 | CDO信息 | https://cdo.fyi |
网站 | CXO信息 | https://cxo.pub |
谢谢大家关注,转发,点赞和点在看。