acl 3.1.1 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类);本次 acl 升级的主要内容有:acl redis 模块完全支持集群版 redis3.0。除此之外,还包含一些小的功能改进与完善,以及一些 BUG 的修复。
acl 包括以下丰富的常用函数库:
1、常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库/redis 客户端库
2、HTTP 网络库:HTTP 客户端/服务端库,C++版 HttpServlet 类,HTTP COOKIE/HTTP SESSION 等
3、邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
4、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 的能力)
5、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式及触发器模式
6、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
7、通用连接池库:高效的连接池基础类库,支持丰富的功能
8、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富
9、xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活
一、基础 C 库:lib_acl
.新特性:acl_msg.c 增加了函数 acl_msg_trace_enable 用来设置当写出错或警告类型的日志时是否记录函数的调用堆栈
.新特性:增加了 CRC17 的哈希算法 acl_hash_crc16
.问题修复:acl_master 服务器框架当设置了 master_prefork 后可能会导致master_maxproc 不起作用,原因是 master_avail.c 中的 master_prefork 函数的限制问题,现在修改 master_avail_event 函数,当 master_prefork 返回 0 时再判断是否还需要 fork 子进程;该 BUG 仅影响多进程服务器模板,对其它服务器模板(如:非阻塞、多线程 等)没有影响
.问题修复:acl_single_server.c 多进程服务器模板的空闲超时退出机制存在问题
.问题修复:acl_trace.c/acl_trace_info 中的变量 results 在调用系统的 backtrace_symbols() 函数后应该释放,否则会造成内存泄漏
.问题修复:acl_threads_server.c/acl_aio_server.c 当进程退出时,需要通知 acl_master 主进程自己当前不可用,同时需要关闭与前端 TCP 派发器(master_dispatch)的连接
.问题修复:修改 acl_read_wait.c/acl_write_wait.c, 在 WIN32 平台下调用 select 时不必检查 fd 与 FD_SETSIZE 的关系,因为 WIN32 下的 fd_set 结构定义及 FD_XXX 宏的实现原理与 UNIX 不同,并且 WIN32 下的 fd 是不连续的,有可能会出现非常大的值,所以其中检查 fd < FD_SETSIZE 有可能会导致崩溃,其实也完全没有必要检查
二、lib_protocol 库
三、lib_acl_cpp 库
.新特性:redis_command 增加了几个方便调用的方法,使用户可以通过 redis_command 类对象直接调用 redis_result 类对象中的方法
.新特性:redis 客户端库完善了针对集群版本 redis3.0 的支持
.新特性:redis 客户端集群版增强了针对服务器掉线的容错功能
.新特性:redis 客户端库提供了一个统一的类 redis,该类继承了所有的命令 redis 命令类,只需使用这一个类便可以执行所有的 redis 命令
.新特性:beanstalk 类增加了一些出错提示功能
.问题修复:连接池基础类 connect_pool 类中的函数 put 当参数 delay_destroy_ 为 true 时,若 count_ > 0 返回时没有对互斥锁 lock_ 解锁,从而会造成其它使用该 连接池对象的线程调用 put 函数加锁时永远等待
.问题修复:http_header 类中的方法 set_method(const char* method) 需要对 method_s 进行赋值
.问题修复:server_socket::open() 当用户输入的地址为 ip:0 时,需要重新调用 acl_getsocketname 来获得真正监听的地址
.问题修复:redis_command::scan_keys 内部在使用指针参数 count 时有问题
四、示例
1、samples/redis_cluster: 测试 redis 集群模式的例子
2、samples/redis: 增加了 redis, redis_cluster2 两个测试用例
五、参考链接:
download:http://sourceforge.net/projects/acl/
github:https://github.com/acl-dev/acl
国内镜像(oschina git):http://git.oschina.net/acl-dev/acl
技术博客:http://zsxxsz.iteye.com/
QQ 群:242722074
- 浏览: 451902 次
- 性别:
- 来自: 北京
最新评论
-
zsxxsz:
2202877 写道你好,请问一下acl库是否可以移植到arm ...
利用ACL开发并发网络服务器 -
taoshengyijiu20008:
非常不错啊
acl 服务器编程框架设计要点 -
lgqss:
最后的例子用了__thread,依然不能用在动态库中?
再谈线程局部变量 -
foxbryant88:
膜拜中~
我为什么要发明一个轮子? -
zsxxsz:
eryueniaobp 写道关于reset的使用,查看了 g ...
使用 acl 库编写高效的 C++ redis 客户端应用
相关推荐
STM32H7xx_DFP.3.1.1.pack
org.springframework.aop-3.1.1.RELEASE org.springframework.asm-3.1.1.RELEASE org.springframework.aspects-3.1.1.RELEASE org.springframework.beans-3.1.1.RELEASE org.springframework.context.support-3.1.1....
资源分类:Python库 所属语言:Python 资源全名:labMTsimple-2.3.3.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
标题中的"JCOP插件-com.ibm.bluez.jcop.eclipse_3.1.1.b版本"指的是一款专为IBM的JCOP(Java Card Operating System)平台设计的Eclipse插件,版本号为3.1.1.b。这款插件是用于JAVA卡应用开发的专业工具,它为开发者...
rt-thread.rtthread.3.1.1.pack
本文将深入探讨`org.springframework.core_3.1.1.RELEASE.jar`这一版本的核心模块,以期帮助读者理解其背后的知识点。 一、Spring核心模块概述 `org.springframework.core`模块是Spring框架的基础,它提供了Spring...
标题 "hadoop-3.1.1winutils.rar" 提供的信息表明这是一款适用于Windows操作系统的Hadoop工具包,版本为3.1.1。在Hadoop生态系统中,`winutils.exe` 是一个关键组件,它提供了在Windows上运行Hadoop所必需的一些功能...
国产品牌,兆易创新GD32F1x0系列MCU对应的keil安装包pack,直接从keil官网下载的,版本3.1.1。 安装keil之后,直接双击即可自动安装。
Sublime Text 3.1.1 Build 3176 x86&x64;安装包,破解文件、密钥。
本篇文章将深入探讨jQuery 3.1.1版本的两个核心文件——`jquery-3.1.1.js`和`jquery-3.1.1.min.js`,以及它们在Bootstrap Treeview插件中的应用。 首先,我们来看`jquery-3.1.1.js`,这是未经压缩和未优化的源代码...
jQuery 3.1.1.js是未压缩的源代码版本,它包含了完整的jQuery功能,方便开发者阅读和调试。开发者可以在开发过程中使用这个版本,因为它的代码结构清晰,易于理解和追踪问题。对于开发者来说,未压缩版本的文档注释...
《Spring Web模块详解——基于3.1.1.RELEASE版本》 在Java世界里,Spring框架无疑是企业级应用开发的首选。它以其强大的功能、灵活的设计以及丰富的生态系统赢得了广大开发者的心。Spring框架的核心之一就是Spring ...
jquery-3.1.1.min 2017-2-11最新
org.springframework.context-3.1.1.RELEASE.jar java 开发专用
云域网JASTVIN(个人版)是江苏澳云软件有限公司依托于宽带互联网、WiFi等公共网络存在,得利于虚拟化技术,启用VIN不会影响现有互联网访问。应用云域网(个人版)可以轻松实现异地访问无人值守的公司、家庭智能终端...
hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...
spring-jdbc-3.1.1.RELEASE.jar
jquery-3.1.1.min.js
org.springframework.web-3.1.1.RELEASE.jar