
互联网
醉趋醍
提升自我
展开
-
udp丢包原因分析
什么会导致udp丢包呢,这里列举了如下几点原因:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。发送的包巨大丢包。虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过30K的一个udp包,不切割直接通过sen...转载 2020-01-06 11:15:20 · 1313 阅读 · 0 评论 -
Go 中如何准确地判断和识别各种网络错误
Go 中如何准确地判断和识别各种网络错误发表于2018-07-29Go 自带的网络标准库可能让很多第一次使用它的人感慨,这个库让网络编程的门槛低到了令人发指的地步。然而,封装层次与开发人员的可控性往往是矛盾的。Go 的网络库封装程度算是一个不错的折衷,绝大部分时候,我们只需要调用 Dial, Read, Write Close 几个基本操作就可以了。但是,网络是复杂的。我们有时候需要细致的处...转载 2019-11-28 20:20:54 · 1185 阅读 · 0 评论 -
TOA(tcp option adress)安装
1.说明1.1.场景说明TOA 属于 4层转发系统的一个功能模块,缺省情况下服务经过 4层转发系统,服务源站查看到的请求IP为NAT的回源地址,这对于一些特殊业务来说(比如游戏),是无法满足的,TOA的功能就是让真实源服务源站获取访问者真实IP地址,该模块安装在源站服务器上。以下为 TOA 的局限性:仅支持 TCP 协议仅支持 IPv4仅支持 Linux 操作系统1.2.前提条件...原创 2019-11-19 19:05:56 · 5969 阅读 · 0 评论 -
平滑升级udp研究
平滑升级平滑升级的一般思路发布新的bin文件去覆盖老的bin文件(如只需优雅重启,可以跳过这一步)发送一个(USR2)信号量,告诉正在运行的进程,进行重启正在运行的进程收到信号后,会以子进程的方式启动新的bin文件子进程启动成功之后,老进程停止接收新的连接,等待旧连接处理完成(或超时)父进程退出,升级完成golang库https://github.com/facebookarc...原创 2019-10-18 12:00:35 · 533 阅读 · 0 评论 -
高并发解决方案
系统服务器级别解决方案纵向扩展要点提高硬件性能增加内核、内存、硬盘等水平扩展:要点是增加设备反向代理层通过dns轮询站点层通过nginx服务层通过服务连接池数据库按照数据范围、hash拆分分层水平扩展架构 https://www.zhihu.com/collection/336745198应用级别解决方案缓存:数据库缓存层、静态HTML缓存redis/memcahed...原创 2019-03-15 09:45:58 · 122 阅读 · 0 评论 -
高可用负载均衡
负载均衡架构https://www.cnblogs.com/mindwind/p/5339657.html转载 2019-04-15 17:36:37 · 130 阅读 · 0 评论 -
Redis主从复制模式
redis主从复制参考 https://www.cnblogs.com/kevingrace/p/5685332.html全量同步一般发生在Slave初始化阶段,过程如下:从服务器连接主服务器,发送SYNC命令;主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; *当有多个从服务器同时请求同步时,主服务器只进行一个后台存储* *...原创 2019-04-15 17:43:30 · 211 阅读 · 0 评论