Amazon Kinesis vs AWS管理服务Kafka(MSK)-(从本地连接)

时间:2020-03-05 10:37:38

标签: amazon-web-services apache-kafka amazon-kinesis aws-msk

我正在评估AWS Kinesis与托管服务Kafka(MSK)。我们的要求是从本地系统(使用c ++开发系统)向AWS发送一些消息(JSON)。然后,我们需要将上述消息持久存储到像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 /秒,什么是经济有效的解决方案?

1 个答案:

答案 0 :(得分:8)

直言不讳,用例听起来很简单,每秒50条消息的比率非常低。

Kinesis是您需要吸管的灭火器。 Kinesis旨在摄取,转换和处理TB级的移动数据。 ]

您是否考虑过考虑使用SQS或Amazon MQ?两者都比Kafka或Kinesis更易于使用和管理。仅仅从您的问题中就可以看出,您根本没有与Kafka进行互动,因此您的学习曲线将会非常陡峭。 SQS是一个简单的基于api的排队系统-您发布到SQS队列,然后从该队列中使用。如果您不必担心订购,路由等问题,那么它是一项持久且可靠(如果很笨拙)的技术,很多人都会使用它来取得巨大成功。

要回答您的实际问题:

  1. Amazon为其服务发布了C ++ SDK-如果其中没有Kinesis客户端,我会感到惊讶。您可能需要一个公共Kinesis终结点,或一个私有Kinesis终结点,可以通过内部部署网络和AWS vpc之间的某种隧道或网关进行访问。

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

  3. 有可能,但是不太可能有任何交钥匙解决方案。您将不得不从Kafka->其他系统

  4. 编写某种桥接软件
  5. 您可以使用Lambda,只要您能够解决故障,超时和其他故障模式。老实说,在vpc或本地中作为服务运行的独立消费者是一个更好的主意。

  6. 如前所述,
  7. SQS或Amazon MQ可能比MSK更简单,更具成本效益,并且几乎肯定比Kinesis便宜。