acl 3.1.2 版本发布了,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 库中几处 BUG,增加了对 redis cluster 管理命令的支持;对 redis 客户端库提供了英文注释;提供了用于创建与维护 redis 集群的工具 redis_builder;增加了针对集群消息队列 disque 的支持;通用连接池模块功能的完善。
acl 包括以下丰富的常用函数库:
1、常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库/redis 客户端库/disque 客户端库
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_define_win32.h 中的 socklen_t 的定义原来使用宏定义 #define 方式,有时会因为有些版本的 VC 提供了此类型而导致编译报错,现在改为 typedef 定义方式
二、lib_protocol 库
.无
三、lib_acl_cpp 库
.新特性:redis_client_cluster 类支持静态初始化哈希槽与服务结点的对应关系,从而避免了运行时的重定向
.新特性:新增加类 redis_cluster,支持官方新公布的 CLUSTER 指令集
.新特性:增加了 redis_slot 类及 redis_node 类,方便对集群中的 redis 结点进行管理
.新特性:redis_cluster 类中的 cluster_nodes, cluster_slots, cluster_slaves, cluster_info 方法返回组织好的结果集
.新特性:connect_monitor 连接池自动检测类支持应用重载 IO 处理过程,从而可以面向更复杂的通信协议处理情况
.新特性:增加了分布式消息队列 disque 的客户端库模块
.性能提升:HttpServletResponse::write 当采用 chunk 传输时由原来的多次调用系统 API write 方式改为只调用一次 writev,从而减少了系统调用次数
.问题修复:redis_command.cpp 中最后三个 get_strings 函数在取得 rr 下标时有误
.问题修复:redis_cluster 类中的 reset 方法与基类 redis_command 中的方法重名,造成了命名污染,现将 redis_cluster 中的所有方法都加了前缀 cluster_
.问题修复:acl::redis 类因为是虚继承了 redis_xxx 类,所以无法通过这些类的构造函数将参数传递给基类 redis_command 的构造函数,必须在 acl::redis 的构造函数中显示地将参数传递给基类 redis_command 的构造函数
.问题修复:redis_client::get_redis_string 当数据长度为 0 时会出现异常, 从而兼容 redis 是允许数据值为空串的情况
.问题修复:redis_command.cpp 中的 run 方法在处理服务器返回的 ASK 响应后应该向目标服务器先发送 ASKING 指令
.问题修复:redis_command 类中的方法 get_client_addr 当采用集群模式时不能取得当前所用连接的服务端地址
.问题修复:samples/connect_manager,异步检测对象应该是局部的,不应与 monitor 绑定在一起,增加了 check_async 回调类
.问题修复:类 aio_timer_callback 中的方法 set_time 中在给成员变量 present_ 赋值时,在 32 位系统下会造成计算结果值的整形溢出
四、示例
1、app/redis_tools/redis_builder:该工具用于创建与管理 redis 集群
2、lib_acl_cpp/samples/redis/redis_cluster:该例子于用测试 redis 中的 CLUSTER 命令集
五、参考链接:
download:http://sourceforge.net/projects/acl/
github:https://github.com/zhengshuxin/acl
技术博客:http://zsxxsz.iteye.com/
QQ 群:242722074
相关推荐
-
网络空间安全战略与实践
网络安全的定义、对抗攻击的原理、网络攻防技术的分类、各个技术的特性和优缺点、运营商、企业、个人安全部署方式、网络空间安全体系结构的设计、持续监控和处置、工具方法和开源框架、评估模型等方面进行探讨,...
-
C/C++Linux服务器开发/后台架构师知识体系整理
C/C++Linux服务器开发/后台架构师知识体系整理
-
一、网络安全专有名词汇编详解(黑话指南)-史上最全
本文档是基于网络公开资料整理而成,属于个人笔记性质。需要什么词语直接Ctrl+f然后搜索即可。 主要内容是汇编了一些网络安全的词汇表、术语表,可用于日常网络安全知识学习,或工作/考试中的速查。 有些涉及中英文...
-
YARN框架概述与集群部署
YARN框架概述与集群部署
-
acl介绍
由此,觉得 acl 应该有一个 win32 版本,所以本人花费数周N个晚上,将 acl 库中的几乎所有函数库都移植至WIN32下(当然目前仅有master服务器框架还没移植),后来还移植至FreeBSD、Solaris(x86)上 (从LINUX移植至...
-
商场无线网络方案设计
ps:和朋友们三四天一起写的设计方案,思路设计方面仍存在不足 1.项目背景 1.1 西单大悦城无线网的概述 ...商场信息化又必须以现代计算机技术、 网络技术和
-
k8s网络插件
k8s网络插件
-
HCIE-Cloud笔试
Region Type1-软SDN Region Type2-硬SDN Region Type3-无SDN 服务 计算服务 ECS弹性云服务器 外部网络 镜像 规格 磁盘 VPC VDC 外部网络创建 VDC创建 VPC创建 EVS云硬盘 网络服务 VPC虚拟私有云 灾备服务 VSBS云...
-
Flink v1.11 - 官网 - 部署与运维
Flink v1.11 - 官网 - 部署与运维 Flink v1.11 - 官网 - 部署与运维 一、集群与部署 1.1 概览 1.1.1 部署方式 1.1.2 部署目标 1.1.3 Application Mode 1.2 Local Cluster - 本地集群 1.3 Flink Downloads 1.4 ...
-
Linux 网络基础篇
Linux 网络基础篇第一章 计算机基础第一节 进制转换第二章 网络基础第一节 互联网概述第二节 互联网接入方法第三章 网络通信协议第一节 OSI七层模型和TCP四层模型 第一章 计算机基础 第一节 进制转换 十进制数:逢...
-
大数据处理相关框架对比
大数据处理相关框架对比 对比大数据场景中所使用到的开源框架,包括框架特性、模型、功能、性能、应用场景以及发展方向 0. 前言 todo 大数据定义 todo 大数据特征 todo 大数据技术 todo 大数据应用 todo 大数据发展...
-
安全阵列(08-01-08)
<!--if (top.location != self.location) { top.location=self.location;}//-->#usrbar{padding:4px 10px 3px 0;font-size:12px;height:19px;line-height:19px;color:#000000;font-family:A
-
C/S - Exploits 学习笔记
本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 运维 Jmeter 编程语言 Java Python Ruby 远程服务 Aria2 文件服务 FTP NFS Rsync Samba ...
-
Kafka(九)跨集群数据镜像
事件驱动公有云和私有云/遗留系统之间的消息订阅与发布消息队列Kafka作为一个消息的临时缓存H公司在托管的数据中心KSG搭建了一个Kafka集群,我们称之为PROD集群。集群采用了RedHat的AMQ Stream产品,部署在OCP容器...
-
iOS
3.0 及后续版本中,当第三方软件收到了新的信息时,苹果公司的服务器将把这些通知推送至iPhone或iPod Touch上(不管它是否正在运行中)。在iPhone上,许多应用程序之间都是有联系的,这样,不同的应用程序能够分享同...
-
基于微信小程序的在线办公小程序答辩PPT.pptx
基于微信小程序的在线办公小程序答辩PPT.pptx
-
机器学习(预测模型):2000年至2015年期间193个国家的预期寿命和相关健康因素的数据
这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制
-
基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx
基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx
-
基于微信小程序的电影交流平台答辩PPT.pptx
基于微信小程序的电影交流平台答辩PPT.pptx