aiohttp 高并发web服务_Golang websocket结合一致性哈希算法构建高并发推送服务

本文介绍了如何使用Go语言构建一个基于WebSocket的长连接服务,通过HTTP REST接口发送消息,利用一致性哈希算法实现客户端连接分发,确保高并发场景下的消息推送效率。此外,还提供了心跳检测机制以自动剔除离线客户端。
摘要由CSDN通过智能技术生成

Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获!

8e4257f388d32e2493a0a5fcba93646d.png

1 场景介绍

web应用中,常有业务状态需要实时更新的场景。如一个较长的后台任务,从浏览器用户触发执行到执行完成可能需几十秒的时间,这时前端需隔几秒请求一次后台,查询任务执行进度。此种方式是长轮询的方式,是存在一定弊端的,增加了后台服务的负载,若并发操作量太大,后台压力会成倍激增。业界常采用http1.1的websocket扩展协议与浏览器建立长连接来实现实时业务状态更新。

2 实现方案

本文采用golang实现一个长连接服务,对外提供两个接口,一个是基于http的rest消息发送接口,一个是基于websocket的client接入接口,如下图所示。

30ed10e9f4b315ef36ef046b71cea970.png

为使前端的接入更简单,从建立连接到用户关闭浏览器,中间前端无须发送消息来告知服务器client是否下线。我们将检测放在后台,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值