Tcp实现限流服务
· 阅读需 8 分钟
一、引言
在一个阳光明媚的下午,我正在更新博客文章。忽然收到了一条来自群友的私信。这位朋友是一名对网络编程感兴趣的大学生,最近正在研究Tcp连接数量限流和接收流量限流。噼里啪啦的连续问了一通。
看到这个问题后,我感到很高兴,因为这正是我之前准备探讨的一个话题。不过这次打算讨论另外一种新的方式来实现。于是,我决定写一篇博客文章来详细解释这一机制。
二、技术细节
以前写过一篇博客,介绍如何使用在TcpService实现TCP接收流量限流,但是当时写的非常简单,也没有详细介绍原理。
所以这里就先升级一下逻辑,然后详细介绍下原理,以及实现代码。
首先,Tcp服务器使用TouchSocket-TcpService。
因为他支持插件实现逻辑,非常方便维护。
然后限流算法使用微软提供的System.Threading.RateLimiting库,用来实现流量控制。
算法支持:
- 并发限制
- 令牌桶限制
- 固定时间窗口限制
- 滑动时间窗口限制