11

我正在评估 AWS Kinesis 与托管服务 Kafka (MSK)。我们的要求是将一些消息 (JSON) 从本地系统(使用 c++ 开发的系统)发送到 AWS。然后我们需要将上述消息持久化到 PostgreSQL 等关系数据库中,同时我们需要将上述数据流式传输到托管在 AWS 中的其他一些微服务(java)中。

我有以下查询:

i) 如何从我的本地系统访问(连接和发送消息)到 AWS Kinesis?是否有任何 C++ API 支持它?(有 java 客户端 API,但我们的本地系统是用 C++ 编写的)

ii) 如何从我的本地系统访问(连接和发送消息)到 AWS MSK?

iii) 是否可以将 MSK 与其他 AWS 服务(例如 lambda、Redshift、EMR 等)集成?

iv) 要将数据持久化到数据库中,我们可以使用 AWS lambda 吗?(AWS Kinesis 支持该功能,AWS MSK 怎么样)

v) 我们的消息速率是 50msg/秒,什么是高性价比的解决方案?

4

1 回答 1

15

坦率地说,您的用例听起来很简单,每秒 50 条消息的速度非常低。

Kinesis 是一根消防水带,您需要一根吸管。Kinesis 旨在摄取、转换和处理数 TB 的移动数据。]

您是否考虑过关注 SQS 或 Amazon MQ ?两者都比 Kafka 或 Kinesis 更易于使用和管理。仅从您的问题来看,很明显您根本没有与 Kafka 进行过互动,因此您将有一个陡峭的学习曲线。SQS 是一个简单的基于 api 的队列系统 - 您发布到 SQS 队列,然后从队列中消费。如果您不需要担心排序、路由等,它是一种持久且可靠(如果笨重)的技术,很多人使用它取得了巨大的成功。

要回答您的实际问题:

  1. 亚马逊为他们的服务发布了一个 C++ 开发工具包——如果其中没有 Kinesis 客户端,我会感到震惊。您需要一个公共 Kinesis 端点,或者一个私有 Kinesis 端点,可通过您的本地网络和 AWS vpc 之间的某种隧道或网关访问。

  2. MSK 是卡夫卡。您需要一个 Apache Kafka C++ 客户端,并且与上面的 kinesis 类似,您需要某种隧道或网关从您的本地网络到您已配置 MSK 的 AWS vpc

  3. 这是可能的,但不太可能有任何交钥匙解决方案。您将不得不从 Kafka -> 其他系统编写某种桥接软件

  4. 您可以使用 Lambda,只要您能应对故障、超时和其他故障模式。老实说,在您的 vpc 或本地作为服务运行的独立使用者是一个更好的主意。

  5. 前面提到的 SQS 或 Amazon MQ 可能比 MSK 更简单、更具成本效益,而且几乎肯定会比 Kinesis 便宜。

于 2020-03-05T10:56:57.123 回答