[服务网格] 服务网格似乎没那么必要上?

21 天前
 Charlie17Li

前言

接触 servicemesh 有一段时间了,越来越觉得这个东西在当前场景下是个可有可无的东西。

于是问了下 GPT ,servicemesh 解决了啥问题,以下是他的回答以及我的想法:

1.服务发现和负载均衡 在微服务架构中,服务实例可能会动态增加或减少。Service Mesh 负责服务发现和负载均衡,确保请求能够被路由到健康的实例上。

事实上,公司里有非常可靠的注册中心(独立团队维护),这个部分根本用不到 Service Mesh 。

2.安全性 Service Mesh 提供了服务间通信的安全性,包括加密、认证和授权。例如,它可以通过 mTLS ( Mutual TLS )来确保服务间通信的加密和身份验证。

事实上,公司里使用很多私有协议,而且安全这块也有单独的团队。

3.可观察性 Service Mesh 提供了对服务间通信的详细监控和跟踪,包括请求的延迟、错误率和流量分布等。这有助于快速诊断和解决问题。

这个我理解,常规的分布式链路工具就能做这个

4.流量管理 Service Mesh 可以实现复杂的流量管理策略,例如熔断、限流、重试和超时等。这有助于提高系统的稳定性和可靠性。

熔断限流或许可以,但是流量代理私自做重试显然会有潜在幂等性等问题,没必要放在这里做

5.故障注入和测试 Service Mesh 允许在生产环境中进行故障注入和测试,以验证系统的鲁棒性和容错能力。这有助于提前发现潜在问题。

这一块了解不多,但是我理解 Service mesh 能过的故障注入应该很有限,Linux 有成熟的网络注入工具 TC ,公司里有很成熟的故障注入工具,包括但不限于网络故障注入

6.策略管理 Service Mesh 提供了一个集中化的地方来管理和应用各种策略,例如安全策略、流量管理策略和访问控制策略等。

算优点吧,但也是致命的缺点,当前应用规模非常大,Istio 的控制面就算抗的住,一旦 Crash 问题影响很大

7.平台无关性 Service Mesh 独立于应用代码,这意味着你可以在不同的编程语言和框架中使用它,而无需修改代码。这使得它特别适合多语言、多框架的微服务环境。

这一点比较困惑,只要预定好通信协议,应该就没有这个问题。Service Mesh 顶多就是做协议转换,事实上,公司里开发基座基本是统一的,协议转换完全可以在基座中实现。

综上所述,Service Mesh 在上述提到的场景里,完全没有必要上,硬上还有风险,此外还要占用额外的 CPU 等资源

大家场景里,ServiceMesh 有什么刚需场景吗

2415 次点击
所在节点    程序员
24 条回复
lvlongxiang199
19 天前
@mark2025 我的问题是 servicemesh 如何通过 sidecar 实现 trace. opentelemetry 更像是一个规范及 sdk, 从我之前的经验来看, 得需要埋点实现, 似乎没法做到侵入性的实现 trace 等功能
RicardoY
19 天前
@lvlongxiang199 如果你访问 DB 的流量也是 sidecar 代理的,那 sidecar 里上报不就好了
lvlongxiang199
19 天前
@RicardoY 在读一遍我的问题. sidecar 上报这能无侵入的实现. 但是如何无侵入的**关联 traceCtx **, 知道这个 db 查询是哪个 rpc 请求触发的 ?
lvlongxiang199
19 天前
@RicardoY 我在 https://v2ex.com/t/1079010?p=1#r_15371204 里头的确没提到这一点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1079010

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX