异步多线程C/S框架gko_pool

曾经在上家公司做了一个内网P2P的传输工具名曰gingko
当时太菜了,网络部分写的很差,各种阻塞式网络通信
后来离职把memcached的代码研究了一下,感觉里面的网络模型非常先进
我就把memcached的网络部分抽取出来和gingko做了结合,写成了一个网络框架叫gko_pool

大致特性是:

  • 完全异步化(包括DNS解析)
  • 可以listen一个端口当server,也可以主动发起连接写client
  • worker是对等的多线程
  • 内置一个简单的“内存池”

看代码发现memcached状态机有个逻辑上的bug 顺手给memcached提了个patch
后来这事就被淡忘了,过了两年被维护者发现合到master上了,维护者是这么说的:

Wow, two years old… and it looks correct to me. If that update_event fails the connection might zombie. It’s very hard for that to fail and it’s been that way forever.
Pushed a commit for the next release.

言归正传,可以毫不夸张的说memecached是多线程异步网络编程的一个丰碑(nginx是多进程异步网络编程的一个丰碑)
我就把memcached的网络部分抽取出来写成了一个网络框架叫gko_pool
https://github.com/auxten/gko_pool

举个栗子:http刷票器,在我的笔记本虚机上也能达到300KQPS,控制了一下速度,一不小心就把sina的服务器打挂了

我为了刷票刷的真实,还写了这么多UserAgent,刷票界的良心啊,哈哈哈

更多例子,比如:一个自定义协议的client、server等请移步github

这套库的稳定性大家不用质疑,已经用在了我现在公司的上万台服务器的很多网络Daemon上

文章分类 后端, 架构
6 comments on “异步多线程C/S框架gko_pool
  1. 李隆基说道:

    我擦这个牛,被合并到master上了都

  2. henglinli说道:

    最近在看mc,忘不吝赐教。

    • Cathleen说道:

      Narya scab©e::VribÃv, i bimbi hanno vinto bene bene. E manca un rigorino.:-) Mi hanno magnificato la prova di tutti ma particolarmente del buon Alfred che pare sia stato incontenibile vedremo che racconta luciano. Un abbraccio

    • GAC,Snow in Yosemite can only be blamed on the heavens. Lack of fuel in Canaima is poor management on behalf of the authorities. You can argue that 10 days is nothing. Regardless of that, any impact caused to fellow Venezuelans, small or large due to poor management is unexcusable.

  3. web说道:

    mc 的网络模型是 多线程+ libevent?

1 Pings/Trackbacks 对 "异步多线程C/S框架gko_pool"
  1. […] 尽量静态依赖所有的库,除了常见的libc、libm等什么都不要依赖,做到丢到服务器上就能运行,像这样miniPy for CentOS 5/6和 异步多线程C/S框架gko_pool […]

发表评论

电子邮件地址不会被公开。

在线交流

数百位业内高手和同行在等你交流
Reboot运维开发分享