跳到主要内容
若汝棋茗
Software Engineer Ⅱ
View All Authors

创建一个高可用Tcp服务器

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

一、引言

在当今万物互联的世界中,物联网(IoT)设备的数量呈爆炸式增长,这些设备通过网络传输海量的数据。作为连接物理世界与数字世界的桥梁,一个高效、稳定的TCP服务器是确保数据可靠传输和处理的关键。然而,在实践中,很多开发者在构建TCP服务器时遇到了各种挑战,尤其是在面对高并发连接和大数据量处理的情况下。

作为TouchSocket网络通信框架的作者,我经常遇到这样的问题:开发者们在实现基于TouchSocket的TCP服务器时,往往缺乏一个全局视角,未能充分认识到TCP服务器在高负载环境下的复杂性。很多时候,开发者将TCP服务器视为一个简单的类或组件,随意嵌入到项目中的任何位置,期望它能即插即用,随时创建、使用并销毁。这种做法虽然简化了初期开发,但在面对实际生产环境中成千上万的并发连接和数以百万计的数据交换时,却显得力不从心。

为此,我决定撰写这篇文章,旨在为那些正在探索如何构建高效、稳定TCP服务器的开发者提供一份详尽的指南。本文不仅会介绍TCP服务器的基本原理,还会分享一些最佳实践,希望通过这篇博客,能够引导开发者建立正确的TCP服务器开发理念,掌握必要的技术手段,从而更加自信地迎接物联网时代带来的机遇与挑战。同时,也希望借此机会,为社区贡献一份力量,共同推动网络编程技术的发展。

二、技术细节

2.1 技术框架

使用微软提供的通用主机进行构建,支持:

  • 跨平台(windows、linux、macos等)
  • Window服务
  • IIS托管
  • Options选项配置
  • 插件化加载
  • IOC容器
  • Native AOT

2.2 框架版本

在框架方面支持:

  • Net Framework 4.6.2以上
  • 以及.NET 6以上

2.3 实现功能

  • 接收、发送数据
  • 实现消息单次响应、广播

Tcp实现限流服务

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

一、引言

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

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

二、技术细节

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

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

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

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

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

算法支持:

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