11个版本 (1个稳定版)
使用旧的Rust 2015
1.0.0 | 2017年1月19日 |
---|---|
0.10.1 | 2016年12月22日 |
0.9.0 | 2016年11月1日 |
在#http-post中排名23
34KB
597 行
Kafka-Proxy
Kafka-Proxy是一个小型Web服务器,接收HTTP POST请求,然后将其发送到Kafka主题。由于设置SSL证书并不难,即使您认为不需要,也应该这样做,因此它目前要求与Kafka实例通信时需要SSL证书/密钥。
目前,Kafka客户端和http Web服务器在不同的线程上运行。尽管Rust非常快,但您不应该将"200 OK"视为已将帖子发布到Kafka主题。这样做是为了我们可以以每秒数千次的速度处理http请求,同时仍然保证它们将被发布到Kafka。
如果消息在Kafka中发送失败,它将在名为"kafka_rust"的文件夹中创建一个唯一的文件。Kafka Rust将尝试在重启时发送该文件夹中失败的消息。这有望增加需要人工检查的需求。特别是对于消息中没有时间戳的有效载荷来说更是如此。
安装
-
请确保已安装Rust并准备好构建。请点击此处,或者使用以下一行bash语句:
curl -sSf https://static.rust-lang.org/rustup.sh | sh
。 -
要构建开发版本,只需运行:
cargo build
,要构建发布版本,请运行:cargo build --release
。(注意:Kafka-Rust 需要 LibSnappy 路径中的库:To build kafka-rust you'll need libsnappy-dev on your local machine. 如果该库未安装 在 常规路径 中, 您可以在发出 cargo build .
)。 -
运行位于
target/<debug|release>/kafka-proxy
的二进制文件,传递必要的环境变量。
设置统计功能
Kafka-Proxy 允许将 HTTP/Kafka 统计信息报告给一些最流行的解决方案。其中两个是 Prometheus 和 statsd(在源代码的一些地方称为“Graphite”)。为了使用其中之一,只需在构建时启用: stats-prometheus
或 stats-statsd
功能,并设置环境变量。
设置错误通知
Kafka-Proxy 允许在无法向 Kafka 发送时发出警报,以便您可以手动解决问题。目前唯一支持的报告者是 Slack,但如果您想在其他地方报告,请随时提交一个实现该功能的 issue/PR。
为了使用 Slack,只需在构建时启用功能: reporter-slack
,并设置环境变量。
环境变量
需要注意的是,在 v0.7.0 版本中,可以通过 CLI 选项传递环境变量。
名称 | 可选 | 功能 |
---|---|---|
GRAPHITE_HOST | 有时 | 将结果 POST 到用于与 statsd 报告的 Graphite 主机的 IPv4 地址。 |
KAFKA_BROKERS | 否 | 逗号分隔的 Kafka 代理列表。目前这必须采用以下形式: ip:port 。主机名解析即将推出。 |
KAFKA_PROXY_CERT_PATH | 否 | 连接到 Kafka 的证书文件的路径。 |
KAFKA_PROXY_KEY_PATH | 否 | 连接到 Kafka 的密钥文件的路径。 |
PANIC_ON_BACKUP | 是 | 如果程序无法备份未能发送到 Kafka 的消息,则程序是否崩溃。 |
PROXY_PORT | 否 | HTTP Web 服务器监听的端口。 |
SLACK_WEBHOOK | 有时 | 连接到 Slack 的 Slack Webhook URL。 |
SLACK_CHANNEL | 是 | 要发布的 Slack 频道。默认为 "#general"。 |
NO_SSL | 是 | 是否要黑名单 SSL。 |
最后,日志是通过 rust crate log
和 env_logger
设置的。因此,打印到 STDOUT/STDERR 的日志级别由环境变量 RUST_LOG
决定。我建议将其设置为 INFO
,除非您需要 DEBUG
以进行高级日志。
支持的 Kafka 版本
我们支持与 kafka-rust
相同的 Kafka 版本。这恰好是
kafka-rust is tested against Kafka 0.8.2.x and regularly used
against Kafka 0.9 servers. However, efforts to implement support
for new features from the Kafka 0.9 release are just in their
beginnings.
依赖关系
~19MB
~407K SLoC