`
zsxxsz
  • 浏览: 446505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跨平台网络通信与服务器框架 acl-3.1.2 版本发布

阅读更多

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/acl-dev/acl
技术博客:http://zsxxsz.iteye.com/
QQ 群:242722074

分享到:
评论

相关推荐

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...

    [confluence插件] easymind-3.1.2.jar

    [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] ...

    主要是下载在arduino下开发esp8266-3.1.2版本

    https://arduino.esp8266.com/stable/package_esp8266com_index.json ... 下载在arduino下开发esp8266-3.1.2版本,下载时需要关闭防火墙 路径:C:\Users\lan\AppData\Local\Arduino15

    hive-jdbc-3.1.2-standalone

    hive-jdbc-3.1.2-standalone适用于linux

    apache-hive-3.1.2-bin.tar.gz.zip

    apache-hive-3.1.2-bin.tar.gz, 下载自:https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/, 上传至CSDN备份,本资源下载后需要解压缩zip文件,才是原本的apache-hive-3.1.2-bin.tar.gz文件

    hive-jdbc-3.1.2.jar

    jdbc连接hive所需的一个包 ( hive-jdbc-3.1.2.jar)

    hive-exec-3.1.2.jar

    guava-27.0-jre.jar 编译的hive-exec-3.1.2.jar

    apache-hive-3.1.2-bin.tar.gz

    标题中的"apache-hive-3.1.2-bin.tar.gz"表明这是一个Hive 3.1.2的二进制发行版,以tar.gz格式压缩。这种压缩包通常包含Hive的可执行文件、库文件、配置文件以及必要的脚本,用于在Linux或Unix环境中快速部署和运行...

    spark-3.1.2.tgz & spark-3.1.2-bin-hadoop2.7.tgz.rar

    - Spark-3.1.2-bin-hadoop2.7版本说明Spark与Hadoop 2.7兼容。Hadoop是另一个开源的大数据处理框架,主要负责数据存储(HDFS)和作业调度(YARN)。Spark可以与Hadoop生态系统无缝集成,利用HDFS作为数据源,并且...

    hive-jdbc-3.1.2-standalone.jar

    Hive连接的jar包——hive-jdbc-3.1.2-standalone.jar,使用数据库连接软件连接数据仓库时需要使用相应的驱动器驱动,希望对大家有所帮助

    hive-jdbc-uber-3.1.2+yanagishima-18.0

    安装Yanagishima时,需要将"Hive-jdbc-uber-3.1.2.jar"配置到其类路径中,以便与Hive服务通信。同时,还需要配置Kerberos认证的相关参数,如principal和keytab文件的位置,以确保Yanagishima能够在安全模式下正常...

    metrics-core-3.1.2-API文档-中文版.zip

    赠送原API文档:metrics-core-3.1.2-javadoc.jar; 赠送源代码:metrics-core-3.1.2-sources.jar; 赠送Maven依赖信息文件:metrics-core-3.1.2.pom; 包含翻译后的API文档:metrics-core-3.1.2-javadoc-API文档-...

    spring-framework-3.1.2.RELEASE jar包

    Spring 3.1.2.RELEASE是该框架的一个重要版本,虽然它已经相对较老,但仍然在某些项目中被广泛使用,尤其是那些无法立即升级到最新版本的系统。这个版本的发布在当时引入了许多改进和新特性,旨在提升性能、简化开发...

    postgis-3.1.2.tar.gz

    标签中的"postgis-3.1.2"、"postgres"和"linux"表明这个压缩包适用于Linux操作系统,且主要用于PostgreSQL数据库与PostGIS 3.1.2版本的集成。"数据库"标签则提醒我们,这涉及到的是数据库管理和地理空间数据存储。 ...

    hadoop-eclipse-plugin-3.1.2.jar

    在eclipse中搭建hadoop环境,需要安装hadoop-eclipse-pulgin的插件,根据hadoop的版本对应jar包的版本,此为hadoop3.1.2版本的插件。

    commons-compiler-3.1.2-API文档-中文版.zip

    赠送原API文档:commons-compiler-3.1.2-javadoc.jar; 赠送源代码:commons-compiler-3.1.2-sources.jar; 赠送Maven依赖信息文件:commons-compiler-3.1.2.pom; 包含翻译后的API文档:commons-compiler-3.1.2-...

    flink-sql-connector-hive-3.1.2_2.11-1.11.6.jar 已经解决guava冲突亲测可以

    flink-sql-connector-hive-3.1.2_2.11-1.11.6.jar 已经解决guava冲突亲测可以

    rsync-3.1.2-10.el7.x86_64.rpm

    适用于Centos7.9的rsync 工具安装包 rsync-3.1.2-10.el7.x86_64.rpm

    Postern-3.1.2.apk.zip

    Postern、Charles以及HTTPCanary都是流行的抓包工具,它们能够帮助开发者和研究人员捕获并分析网络流量,从而了解应用程序如何与服务器进行通信。在面对Android应用时,由于系统安全性的限制,普通的抓包方法可能...

Global site tag (gtag.js) - Google Analytics