一个通用的缓存池管理代理,内置于 memcached 守护进程中。它支持所有文本协议。它旨在将客户端与 memcached 服务器池隔离开来,以便于管理、扩展和移植。它使用 Lua 创建了一个高度灵活的配置系统,允许公司完全自定义请求路由方式以满足其特定需求。它还附带了用于常见用例的标准库。
代理可以管理本地、跨可用区、复制设置和删除流量的服务器池,并根据灵活的规则将键发送到不同的池。它速度很快(至少数十万次每秒),并且性能不断改进。
代理内置于 memcached 中,以简化部署并实现代码重用;所有 memcached 的客户端处理代码都用于代理,包括 TLS 管理。代理不添加任何新的外部依赖项,因此编译和部署非常容易快捷。嵌入缓存守护进程中可以实现灵活的拓扑设计,我们将在以后的文章中讨论。
为什么在其他代理存在的情况下还要创建这个?有一些流行的 memcached 特定代理,但它们要么被放弃,要么难以构建。此代理由社区完全支持。现有的代理是为它们构建的公司设计的;通过我们的灵活配置系统,我们可以避免将人们限制在这些大型公司所采取的设计和折衷方案中。
我们正处于将此代理提供给最终用户的早期阶段。如果您觉得缺少或未记录的内容,请与我们联系,让我们知道!
常见的部署架构在 维基 中讨论
更多信息可以在 完整文档 中找到
本指南需要 1.6.26 或更高版本。启用代理就像添加一个额外的配置参数一样简单
./configure --enable-proxy
make
make test # optional
您也可以使用 Docker 来尝试使用我们的标准路由库来尝试代理
# this image expects a "config.lua" to be in the directory
# you will need to start backend memcached's on your own!
docker run -v /path/to/config/directory:/config:ro --publish 11211:11211 \
dormando/memcached:next-proxy
此 Docker 镜像基于 memcached 的“next”分支。 “next”分支中的所有代码都旨在用于生产环境,然后我们每隔一两个月就会从该分支中剪切一个发布标签和压缩包。我们还将为发布压缩包提供 Docker 镜像,但是现在使用“next”分支将使我们能够更快地响应用户需求。
开始使用简单配置的最佳位置是查看 routelib 库
该库正在积极开发中:如果您想看到任何路由或功能,请告诉我们。在 routelib 中添加或扩展逻辑非常快。
这篇博文展示了新代理的基本功能,以后的文章将更深入地介绍更多示例以及如何构建自己的路由库。