跳到主要内容

1 篇博文 含有标签「TcpClient」

TcpClient

查看所有标签

Tcp实现限流服务

· 阅读需 8 分钟
若汝棋茗
Software Engineer Ⅱ

一、引言

在一个阳光明媚的下午,我正在更新博客文章。忽然收到了一条来自群友的私信。这位朋友是一名对网络编程感兴趣的大学生,最近正在研究Tcp连接数量限流和接收流量限流。噼里啪啦的连续问了一通。

看到这个问题后,我感到很高兴,因为这正是我之前准备探讨的一个话题。不过这次打算讨论另外一种新的方式来实现。于是,我决定写一篇博客文章来详细解释这一机制。

二、技术细节

以前写过一篇博客,介绍如何使用在TcpService实现TCP接收流量限流,但是当时写的非常简单,也没有详细介绍原理。

所以这里就先升级一下逻辑,然后详细介绍下原理,以及实现代码。

首先,Tcp服务器使用TouchSocket-TcpService

因为他支持插件实现逻辑,非常方便维护。

然后限流算法使用微软提供的System.Threading.RateLimiting库,用来实现流量控制。

算法支持:

  • 并发限制
  • 令牌桶限制
  • 固定时间窗口限制
  • 滑动时间窗口限制