如何从根本上解决连接问题

编程入门 行业动态 更新时间:2024-10-03 06:29:55

如何<a href=https://www.elefans.com/category/jswz/34/1261981.html style=从根本上解决连接问题"/>

如何从根本上解决连接问题

我有一个问题,想深入挖掘以了解根本原因:

service-A 在一个 k8s pod (node.js) 中运行,该 pod 使用 gPRC 客户端连接 service-B(C++、gRpc 服务器),并使用服务名称进行连接。这两个服务都是使用 k8s 规范中的 NodePort 类型定义的。

[问题]

一切正常,但有时当服务 B 重新启动(崩溃)时,连接不再工作,直到我手动重新启动服务 A,它才再次工作。是的,有时候,有时候,当service-B重新启动时,连接仍然可以工作。

显然,这个问题不会让我睡觉,因为我们无法保证 service-B 不会重新启动/崩溃。

我有一些想法,但无法判断哪个更有可能是问题所在。

  1. 是否是因为gRpc客户端没有重新解析DNS名称(服务名称)?
  2. 是因为与旧pod的连接还没有关闭吗?
  3. 我是否错过了任何处理此类情况的 gRPC 客户端选项?
  4. 我是否误用了服务类型 - 我应该使用无头服务而不是 NodePort?

由于有很多部分,我仍然没有很好的图片来正确调试这个问题,非常感谢您的意见。

参考:

  1. gRpc 客户端
    const serviceAddr = 'nebula:9190';
    const cred = nebula.grpc.credentials.createInsecure();
    const options = {
      nebula: 'node',
      'grpc.max_receive_message_length': MESSAGE_LENGTH,
      'grpc.max_send_message_length': MESSAGE_LENGTH,
      'grpc.min_reconnect_backoff_ms': MIN_RECONNECT_BACKOFF_MS,
      'grpc.max_reconnect_backoff_ms': MAX_RECONNECT_BACKOFF_MS,
    };
    const makeClient = () => new nebula.V1Client(serviceAddr, cred, options);
  1. K8s规格
apiVersion: v1
kind: Service
metadata:
  name: nebula
spec:
  type: NodePort
  selector:
    app: nebula-server
  ports:
    - port: 9190
      name: server
      targetPort: 9190
回答如下:

更多推荐

如何从根本上解决连接问题

本文发布于:2024-05-31 06:41:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771379.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:从根本上

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!