Rust和Wasm如何驱动Cloudflare的1.1.1.1

💡 原文英文,约4500词,阅读约需17分钟。
📝

内容提要

Cloudflare于2018年4月1日发布了1.1.1.1公共DNS解析器,并开发了BigPineapple,它包括服务器模块、工作者模块、缓存模块、导演模块和沙箱模块,可以实现热更新,支持异步递归库和沙箱插件。

🎯

关键要点

  • Cloudflare于2018年4月1日发布了1.1.1.1公共DNS解析器。
  • BigPineapple包括服务器模块、工作者模块、缓存模块、导演模块和沙箱模块,支持热更新和异步递归库。
  • Knot Resolver被选为DNS解析器,具有灵活的Lua插件系统,支持多种产品功能。
  • Cloudflare的数据中心设置使每台服务器的软件栈相同,简化了维护复杂性。
  • DNS请求通过Unimog进行负载均衡,DoH请求在TLS终端处终止。
  • 插件的回调可能会阻塞事件循环,影响并发请求的处理。
  • 为了提高缓存效率,BigPineapple创建了一个多播缓存模块,允许节点共享缓存条目。
  • 模块隔离问题导致调试困难,BigPineapple通过WebAssembly实现模块的隔离和安全性。
  • BigPineapple的设计允许在运行时热更新插件,提升了功能扩展的灵活性。
  • 新的异步递归库使得DNS查询处理更加高效,支持并发任务执行。
  • BigPineapple的缓存实现使用了ARC数据结构,提高了缓存的使用效率。
  • 通过一致性哈希,BigPineapple能够在数据中心内有效地转发查询,提升缓存命中率。
  • BigPineapple的沙箱插件系统使用WebAssembly,确保插件在隔离的内存空间中运行。
  • 异步编程模型使得沙箱中的代码能够非阻塞地运行,提升了整体性能。
  • BigPineapple仍在不断发展,支持多个Cloudflare产品,未来将引入新技术。
➡️

继续阅读