阅读更多

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

2
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 网络空间安全战略与实践

    网络安全的定义、对抗攻击的原理、网络攻防技术的分类、各个技术的特性和优缺点、运营商、企业、个人安全部署方式、网络空间安全体系结构的设计、持续监控和处置、工具方法和开源框架、评估模型等方面进行探讨,...

  • 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上,许多应用程序之间都是有联系的,这样,不同的应用程序能够分享同...

  • setting.xml文件,修改Maven仓库指向至阿里仓

    setting.xml文件,修改Maven仓库指向至阿里仓

  • 基于java的玉安农副产品销售系统的开题报告.docx

    基于java的玉安农副产品销售系统的开题报告

  • dev-c++ 6.3版本

    dev-c++ 6.3版本

  • 基于java的项目监管系统开题报告.docx

    基于java的项目监管系统开题报告

Global site tag (gtag.js) - Google Analytics