发布一个高性能的Reactor模式的C++网络库:evpp

发布一个高性能的Reactor模式的C++网络库:evpp

简介

https://github.com/Qihoo360/evpp是一个基于libevent开发的现代化的支持C++11特性的高性能网络库,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库。

特性

  1. 现代版的C++11接口
  2. 非阻塞异步接口都是C++11的functional/bind形式的回调仿函数(不是libevent中的C风格的函数指针)
  3. 非阻塞纯异步多线程TCP服务器/客户端
  4. 非阻塞纯异步多线程HTTP服务器/客户端
  5. 非阻塞纯异步多线程UDP服务器
  6. 支持多进程模式
  7. 优秀的跨平台特性和高性能(继承自libevent的优点)

除此之外,基于该库之上,还提供两个附带的应用层协议库:

  1. evmc :一个纯异步非阻塞式的memcached的C++客户端库,支持membase集群模式。该库已经用于生产环境,每天发起1000多亿次memcache查询请求。详情请见:evmc readme
  2. evnsq : 一个纯异步非阻塞式的NSQ的C++客户端库,支持消费者、生产者、服务发现等特性。该库已经用于生产环境,每天生产200多亿条日志消息。详情请见:evnsq readme

将来还会推出redis的客户端库。

项目由来

我们开发小组负责的业务需要用到TCP协议来建设长连接网关服务和一些其他的一些基于TCP的短连接服务,在调研开源项目的过程中,没有发现一个合适的库来满足我们要求。结合我们自身的业务情况,理想中的C++网络库应具备一下几个特性:

  1. 接口简单易用,最好是C++接口
  2. 多线程,也能支持多进程
  3. 最好是基于libevent实现(因为现有的历史遗留框架、基础库等是依赖libevent),这样能很方便嵌入libevent的事件循环,否则改动较大或者集成起来的程序可能会有很多跨线程的调用(这些会带来编程的复杂性以及跨线程锁带来的性能下降)

基于这些需求,可供选择的不多,所以我们只能自己开发一个。开发过程中,接口设计方面基本上大部分是参考muduo项目来设计和实现的,当然也做了一些取舍和增改;同时也大量借鉴了Golang的一些设计哲学和思想。下面举几个小例子来说明一下:

  1. Duratio
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值