我正在为我的event-sourcing架构开发Kinesis-streams,因为其基础设施需要荒谬而未能使用kafka。
无论如何,我有Kinesis生产商,消费者工作正常(尽管有高延迟)。我一直在使用我的component-testing消费流来验证是否将事件写入流。
但我正在寻找的是一个Stream信息中心,非技术人员可以使用它。
因为在生产中,像管理员/(甚至是懒惰的调试器)这样的人显然不想编写代码来查看流中的事件,而是在仪表板中查看会很有帮助。
我没有看到Kinesis-streams有查询功能。
作为此功能的解决方案,
我可以在将事件写入kinesis后立即使用该事件并应用于另一个支持查询/过滤功能的数据存储。(例如,MongoDB,DynamoDB),这需要时间给我在压力的时间表中实施。
或者,将kinesis事件流式传输到kinesis-analytics也可以解决我的问题,但Google Analytics并不是为此目的而设计的。它的超级速度很慢,需要15/20秒才会出现在仪表板中,也不会显示新的事件。
我尝试将格式为ComponentTest_Producer_Stream_2_6_117
的JSON事件的源kinesis-stream {"eventType": "KinesisEvent", "someField" : "some value", "createdTime" : "some data"}
导入kinesis-analytics。
不知何故,它会自动检测到事件并填充在仪表板中(多次尝试后)
我的问题是
1)Kinesis-stream使用什么数据存储来存储事件?
2)建议在kinesis-stream中查询/过滤事件采用哪些策略。
答案 0 :(得分:0)
我认为您要解决的主要问题是如何构建一个仪表板,让您的队友可以快速查看进入系统。我可以提出两个选择:
答案 1 :(得分:-1)
您可以使用record preprocessing的Lambda函数在Kinesis中的流数据上设置过滤器。完成此操作后,流中就会有SQL支持,您可以在其中运行基本过滤器并构建仪表板。
另外,根据数据的不同,您可能会拥有更复杂的结构,例如深度嵌套的JSON对象,并且可能变得难以查询。
在这种情况下,您可能希望使用Rockset之类的服务,可以在其中连接和接收来自Kinesis的数据,并使用丰富的Query API端点执行SQL查询/过滤和构建仪表板。
此处的博客文章确切指定了您要查找的内容: https://rockset.com/blog/live-dashboard-on-streaming-data-using-kinesis/。 这说明了如何将Kinesis流连接到Rockset并构建实时仪表板以与团队共享。
免责声明:我在@Rockset工作