暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

cURL 和 Wget 的优缺点各是什么?

原创 Topling 2022-06-06
1099

cURL 最大的优点是有 libcurl,一个功能强大,简单易用,部署广泛的 http 客户端。

说来有点不可思议,作为 KV 存储引擎,ToplingDB 竟大量使用了 libcurl!究其原因:

  1. 起初 ToplingDB 将 topling-zip 的各种索引和压缩算法实现为 RocksDB 的 SST 和 MemTab
  2. 但 RocksDB 本身的插件机制太过原始简陋,使用第三方需要使用方修改代码
  3. 于是 ToplingDB 就实现了一个功能强大的真正的插件化,其中包含了一套反射框架
  4. 然后,基于该反射框架,在引擎中内嵌了一个 http server,将引擎的各种配置、运行状态等信息通过浏览器展示出来
  5. 再后来,把引擎的各种指标,通过 http server 导出为 Prometheus 的数据格式,通过 grafana 展示出来

这其中,服务端使用了一个内嵌的 http server civetweb,客户端自然就使用了 libcurl,一开始 libcurl 仅用在 分布式 Compact 中 DB 结点提交 Compact 任务上。后来,我们将 Compact Worker 中的多线程模型,修改为多进程模型,这里面的多进程通讯中,RPC 使用了手撸的 http 调用,客户端也使用了 libcurl。

有意思的是,libcurl 有个 Expect 100 continue 的天坑,该天坑导致的延迟一开始差点让我绝望,好在问题很快就定位并解决了。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论