但是,在使用 Kubernetes 时,仅涵盖了十个微服务中的三个 。

文章插图
发现是通过 Kubernetes 服务的概念实现的 。它提供了一种使用稳定的虚拟 IP 和 DNS 名称对 Kubernetes Pod(充当一个)进行分组的方法 。发现服务只是使用 Kubernetes 的服务名称作为主机名发出请求的问题 。
使用 Kubernetes调用服务很容易,因为该平台提供了调用任何服务所需的网络 。
弹性(或可扩展性)是 Kubernetes 从一开始就考虑的东西 。例如,执行命令kubectl scale deployment myservice --replicas=5,myservice 部署扩展到五个副本或实例 。Kubernetes 平台负责寻找合适的节点、部署服务并始终保持所需数量的副本正常运行 。
但是其余的微服务呢?Kubernetes 只涵盖了其中的三个,那么我们如何实现其余的呢?
在本系列的第一部分中,我介绍了通过使用 Java 将它们嵌入到服务中来实现这些关注点 。
在同一代码中实现的具有横切关注点的服务如下图所示:

文章插图
如上一篇文章所述,这种方法有效并且有几个优点,但也有一些缺点 。让我们提到主要的:
- 服务的基本代码是业务逻辑(为公司带来价值)和基础设施代码(因为微服务而需要)的混合体 。
- 微服务架构中的服务可以用不同的语言开发,例如 Java 中的 Service A 和 Go 中的 Service B 。拥有多语言服务的挑战是学习如何为每种语言实现这些微服务 。例如,哪个库可用于在 Java、Go 等中实现弹性 。
- 对于 Java,我们可以为每个“微服务”添加新的库(及其所有传递依赖项),例如用于弹性的Resiliency4J、用于跟踪的Jaeger或用于监控的Micrometer。虽然这并没有什么问题,但是当在类路径中添加不同类型的库时,我们增加了类路径冲突的可能性 。此外,内存消耗和启动时间也会增加 。最后但并非最不重要的一点是,维护所有 Java 服务的库版本一致的问题,因此它们都运行相同的版本 。
在微服务架构中,一个应用程序由多个相互连接的服务组成,所有这些服务协同工作以产生所需的业务功能 。所有这些服务都使用网络互连,因此我们正在有效地实现分布式计算模型 。由于它是分布式的,因此可观察性(监控、跟踪、日志记录)变得更加复杂,因为所有数据都分布在多个服务中 。由于网络不可靠或延迟不为零,因此服务需要对这些故障具有弹性 。
因此,假设由于在基础设施级别做出决策(分布式服务使用网络进行通信,而不是单体应用)而需要微服务 。为什么我们需要在应用程序级别而不是基础架构级别实现这些微服务?问题就在这里 。这是一个公平的问题,答案很简单:服务网格 。
什么是服务网格和 Istio?服务网格是一个专用的基础设施层,用于处理安全、快速和可靠的服务到服务通信 。
服务网格通常实现为与服务代码一起部署的轻量级网络代理,透明地拦截来自服务的所有入站/出站网络流量 。
Istio是 Kubernetes 服务网格的开源实现 。Istio 用于将网络流量代理集成到 Kubernetes Pod 的策略是使用sidecar 容器完成的 。这是一个与服务容器一起运行在同一个 Pod 中的容器 。由于它们在同一个 Pod 中运行,因此两个容器共享 IP、生命周期、资源、网络和存储 。

- 淘宝SEO优化获得的是免费流量还是付费流量,淘宝关键词优化推广排名
- 早餐补蛋白是关键,建议中老年,多吃4种食物,提高免疫力少生病
- wish标签怎么填?标签和关键词的区别在哪里?
- 2022最后两个月,建议所有家庭备好这7样东西,关键时刻有大作用
- 淘宝关键词排名和什么有关?怎么做?
- wish标签怎么选择?wish关键词设置技巧
- wish标签怎么设置?关键词设置技巧
- 关键绩效指标来源 关键绩效指标法
- 淘宝怎么补关键词权重?匹配有哪些方法?
- 关键词途径,社会热点关键词推荐
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
