Go 网络 IO 模型源码分析|转载

在过去,传统的网络编程模型是多线程模型,在主线程中开启一个网络监听,然后每次有一个客户端进行连接,就会单独开启一个线程来处理这个客户端请求。 然而,如果并发量比较大,服务端就会创建大量的线程,而且会有大量的线程阻塞在网络IO上,频繁的线程上下文切换会占用大量的cpu时间片,严重影响服务性能,而且大量…

TCP与UDP 数据报文

TCP 我们如何区分一台电脑上的不同应用进程?就像我们区分人一样,不同的人给标识不同的名字,偶尔还会遇到重名的,在计算机上重名的现象就禁止发生的,不同的应用进程,区分它们的是不同的端口号,有人占了这个端口运行,就不允许别人使用这个端口,所以不管是UDP协议还是TCP协议中端口号都尤为重要,源端口和目…

docker-compose 部署 NSQ 踩坑记录

前言 我的 nsq 使用 docker-compose 部署在云服务器上,但是我的程序在本地机器想连通云服务器上的nsq。 云服务器上的 docker-compose.yml 文件如下所示 本地的 Golang 代码如下所示 当我运行Go程序时,好巧不巧,在订阅数据处直接报了一个网络连接错误 从上面…

分布式一致性Raft算法图解|转载

前言 Raft算法应用广泛,例如Redis的哨兵模式就是一块重要的应用。 正文 分布式一致性 想象一下,我们有一个单节点系统,且作为数据库服务器,然后存储了一个值(假设为X)。然后,有一个客户端往服务器发送了一个值(假设为8)。只要服务器接受到这个值即可,这个值在单节点上的一致性非常容易保证: 但是…