IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【zinx】Golang轻量级TCP服务器框架(八)—— 创建消息队列、工作池、限定Gourtine数量 -> 正文阅读

[系统运维]【zinx】Golang轻量级TCP服务器框架(八)—— 创建消息队列、工作池、限定Gourtine数量

Golang轻量级TCP服务器框架(八)—— 创建消息队列、工作池、限定Gourtine数量

原作者视频地址:zinx-Golang轻量级TCP服务器框架
本人为自学整理的文档,梳理思考开发框架的基本思路,方法,以及视频中不理解的地方。
若想学习,强烈建议直接观看原作视频即可。
可在下方留言交流。

1.目的

这个东西是什么?

客户端与server链接时候,客户端发送过来消息:
原来:①StartReader()解析消息+go 消息处理 ----> ②StartWriter()回复客户端
现在:①StartReader()解析消息---->②采用工作池方式进行消息处理 ----> ③StartWriter()回复客户端

为什么要这样做?

如果按照我们之前的方式,每链接一个客户端,就会启动一个go Reader()和一个go Writer()。如果再有消息过来得话,还会开启go DoMsgHandler()。
如果此时,一下链接进来10W客户端。肯定会一下子启动20W个Reader()和Writer()协程。但是这两个函数都是阻塞式的发送和接受,阻塞的时候,并不会占用CPU。
但是,如果这10W个客户端集体发送很多个请求,若不对go DoMsgHandler()协程数量做控制的话,就会瞬间启动超多协程,击垮服务器。
我们添加,这个工作池的作用,就是为了使消息处理的Gourtine的数量变成可控的,从而可以调成出最佳性能。

2.思路

在这里插入图片描述

如图所示
开辟N个worker,再给每一个worker开辟自己的可缓冲的消息任务队列(channel)
当client的请求过来的时候,我们将数据封装成request之后,就放入其中的任一队列(或者随机放、或者取任务最少的通道放)
这样就使得DoMsgHandler所启动的协程是可控的,以便达到最佳性能

3.实现

源码,直接看最终zinx的github代码即可。
在这展示,不方便阅读。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 15:13:35  更:2021-10-02 15:15:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:02:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码