繁体   English   中英

Websockets + Spring boot + Kubernetes

[英]Websockets + Spring boot + Kubernetes

我正在创建一个Facebook多人游戏,目前正在评估我的技术堆栈。

我的游戏需要使用websockets,我想使用Spring Boot。 现在,如果websocket服务器在Kubernetes中运行良好,我找不到信息? 例如,如果我在Kubernetes中部署5个服务器实例,那么在Kubernetes的浏览器和服务器中加载的游戏客户端之间的网页插件中,将正确加载平衡/转发工作,是否还有其他工作要启用它? 每个pod / server都是无状态的,每个播放器的当前游戏信息将从redis或其他内存db中存储/读取。

如果这不起作用,我该如何解决它仍然使用Kubernetes? 也许只为websockets添加一个rabbitmq实例到堆栈?

处理此问题的适当方法是使用“粘性会话”。 这是用户根据cookie的设置固定到特定pod的位置。

以下是配置Ingress资源对象以使用粘性会话的示例:

#
# https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/affinity/cookie
#
apiVersion: extensions/v1beta1  
kind: Ingress  
metadata:  
  name: nginx-test-sticky
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/affinity: "cookie"
    ingress.kubernetes.io/session-cookie-name: "route"
    ingress.kubernetes.io/session-cookie-hash: "sha1"
spec:
  rules:
  - host: $HOST
    http:
      paths:
      - path: /
        backend:
          serviceName: $SERVICE_NAME
          servicePort: $SERVICE_PORT

现在可以说,处理这个问题的正确方法是使用消息代理或支持群集的websocket实现,例如socketcluster( https://socketcluster.io )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM