![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 87
zerok775
从事linux的网络程序设计,擅长高性能高并发服务设计,对数据库存储、高并发系统和分布式存储感兴趣。
展开
-
一种服务器的负载均衡选取算法
在很多分布式系统里面会遇到一个均衡节点选取的问题:一般是1个负载管理服务器,多个应用服务单元。当有连接或者业务来是,先会去询问负载管理器获取一个负载轻的服务单元,一般的选取就是选取负载最轻的那个。通常情况下是不会有问题的,如果你的应用服务器单元跑的是类似视频服务这种应用,就会出现这样一种情况,某个视频服务A崩溃或者异常了,这个视频服务的所有用户在瞬间会转移到负载最轻的B上,这个时候可能B也异常了,原创 2014-02-25 18:02:03 · 1870 阅读 · 1 评论 -
RUDP传输那些事儿
最近和很多实时音视频领域的朋友交流中都有谈论到RUDP(Reliable UDP),这其实是个老生常谈的问题,RUDP在很多著名的项目上都有使用,例如google的QUIC和webRTC。原创 2017-11-06 09:43:48 · 5260 阅读 · 2 评论 -
redis数据记录过期源代码分析
最近在分析redis源代码,一直想写一点相关的东西,空不出时间来整理。今天好不容易空出时间来,把自己对redis关于记录过期和过期检测的流程理解写来。用过redis的人都知道,redis对相关记录的过期设置和memcached是相似的。原创 2014-03-14 13:20:43 · 5141 阅读 · 0 评论 -
C++高性能服务框架revover:rudp总体介绍(可靠UDP传输)
在revolver框架中实现了一个高效可靠的RUDP通信方式,这个通信方式是基于UDP实现一种模拟TCP传输数据的行为。在很多实际应用中,udp/TCP都不是最好的通信方式,例如:点对点文件传输、视频数据高速传输、服务器之间大数据备份同步、高实时rts操作类网游等。TCP和UDP在一定程度上是无法满足此类要求。故revolver实现了一套可靠UDP的传输方式。我们先来看看它的传输效率,以下是WIN...原创 2014-03-18 17:56:40 · 14757 阅读 · 25 评论 -
C++高性能服务框架revolver:RUDP(可靠UDP)算法详解
上一篇BLOG已经介绍了revolver RUDP的传输性能、基本的框架和接口,这篇文章我重点讲述RUDP的实现细节。在RUDP的模块中最为重要的是其收发缓冲控制和CCC发送窗口控制、CCC发送慢启动控制、CCC快恢复控制等几个过程。数据块定义在RUDP模块中,所有发送的数据被定义成RUDPRecvSegment 和 RUDPSendSegment结构,其中RUDPSendSegm原创 2014-03-19 10:45:05 · 11104 阅读 · 3 评论 -
C++高性能服务框架revolver:协议接口描述和翻译语言
在一个稍微复杂的系统中会涉及到多语言编程,例如:后端C++和JAVA,脚本用LUA,前端可能是C++ AS等等。所以所有模块之间的协议统一变得非常重要,这样做的目的是减少中间的调试和差错。在revolver框架中,实现了一个基于简单的接口语言来实现多语言之间接口协议的实现。所有的协议接口通过一个简单的def文件就可以将协议翻译成对应的语言程序代码,这样尽可能的避免中间环节的差错,也大大提高了编码效原创 2014-03-08 14:01:45 · 2700 阅读 · 1 评论 -
C++高性能服务框架revolver:同时支持100万个的定时事件的定时器
在高性能的服务器程序当中,定时器是必不可少的部件,而且定时器的效率是直接影响到服务的性能。在众多的开源项目中,定时器设计都有各有各的方法,例如ACE和libEvent都采用了最小堆的算法实现,还有其他的开源项目采用平衡二叉树来做定时的器管理算法。不管是最小堆还是平衡二叉树,其定时器扫描都是O(1),但定时器插入和删除都是O(logN)的复杂度。在定时事件少的情况下,这种算法是足够的,如果超过上百万原创 2014-03-03 16:16:09 · 5955 阅读 · 6 评论 -
C++高性能服务框架revolver:core结构与接口介绍
revolver的核心部件库core是基于revolver base之上进行封装的,实现TCP连接管理、消息隐射管理、服务登记和感知 、IFrame框架和插件等。以下是core的模块结构图:原创 2014-02-27 10:43:21 · 2785 阅读 · 0 评论 -
C++高性能服务框架revolver:base结构分析
revolver基础库的结构图如下:主要是三部分:reactor模块、关联组件模块、独立组件。1.reactorreactor模块主要是实现网络的分时复用设计的模块,可以在同一个线程模式下处理来自网络的读写事件、内部消息事件、定时器事件。以下是reactor的接口定义:class CReactor{public: .... void set_message_proc原创 2014-02-25 16:52:08 · 2662 阅读 · 0 评论 -
C++高性能服务框架revolver:下载、编译和工程介绍
昨天我把自己的第一个开源项目revolver代码提交到了GitHub上,revolver是一个C++开发的LINUX网络服务框架。这个代码算是我从2012年到现在的积累,开源的目的是希望高手指正问题和分享自己的一些经验,我会持续改进和优化,也希望更多的地方使用revovler。revolver框架除了基础的网络库封装以外,还是实现了网络连接管理、服务单元管理、消息隐射、协议自动化等,可以快速基于它...原创 2014-02-25 13:48:37 · 4522 阅读 · 1 评论 -
linux和windows下UDP发送效率的有趣比较
今天在测试UDP发送效率和RUDP代码时效的问题,偶然的机会发现一个比较有趣的事情,先把我的测试代码贴上来看看,代码如下:int test_udp(){ //_beginthread(sock_recv, 0, NULL); CUDPRecvhread recv_thr; recv_thr.start(); usleep(1000000); Inet_Addr remote_原创 2014-03-18 15:33:50 · 3665 阅读 · 0 评论 -
P2P技术是如何将直播带宽降低75%的
实时直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。现阶段直播技术在传输方面分为两块:CDN和连麦系统,CDN负责流媒体的分发传输,连麦系统负责解决同时多个主播间互动的实时通信传输问题。我们始终认为基于CDN+连麦系统的直播技术是一个高成本高消耗的技术,从各大直播平台纷纷亏损就验证了这原创 2018-01-04 18:14:52 · 15950 阅读 · 8 评论