时间序列数据是在 kafka 主题中生成的。我需要读取每条记录并用数据库中的一些数据进行修饰,并最终调用 REST API。收到响应后,输出到 kafka 主题。如何使用 kafka Streams API 高效且可扩展地做到这一点?
脚步 -
我认为,上述算法有两个瓶颈——
进行数据库调用会减慢速度。这可以通过缓存元数据并在存在错误或使用状态存储时加载元数据来避免。
同步进行 REST API 调用会减慢速度。
final KStream<String, String> records = builder.stream(InputTopic);
//This is bad
final KStream<String, String> output = records
.mapValues(value -> { //cache hit otherwise database call});
.mapValues(value -> { //prepare http request and convert the http resonse };
output.to(OutputTopic)
Run Code Online (Sandbox Code Playgroud)
如果数据库调用或 REST API 需要较长时间才能完成,上面的代码将对吞吐量产生依赖性和不利影响。具有相同键的记录不应乱序处理。预计吞吐量约为1m/分钟。当一条记录到达 REST API 时,可以并发进行数据库调用。
不知道如何编写可以在这种情况下扩展的拓扑。我是卡夫卡流的新手。
我在 kafka 主题中以时间序列的形式获得了 300K+ 指标/分钟。我想存储和查询数据。满足我需求的可视化工具是Grafana。为了有效地存储和查询,我正在考虑将这些时间序列存储在Prometheus中。
具有大量时间序列的 Kafka 主题 -> Prometheus -> Grafana
我不太确定,如何实现这一点,因为 Prometheus 是基于 Pull 的抓取方法。即使我编写拉取服务,它是否允许我拉取 300K/分钟的指标?
SYS 1, UNIX TIMESTAMP, CPU%, 10
SYS 1, Processor, UNIX TIMESTAMP, CPUCACHE, 10
SYS 2, UNIX TIMESTAMP, CPU%, 30
.....
Run Code Online (Sandbox Code Playgroud)
大多数文章都讨论Kafka导出器/JMX导出器来监控Kafka。我不是在寻找 kafka 监控,而是发送存储在主题中的时间序列数据并利用 Prometheus 查询语言和 Grafana 进行分析。
我们正在使用ElasticSearch来搜索产品中的功能。这很好。
现在,我们想为客户提供自助式商业智能。由于性能影响,有关操作数据库的报告很糟糕。在运行时,计算1000万条记录的平均“订单解决时间”将无法及时获取结果。传统方式是通过使用ETL加载操作数据并将其汇总来创建数据集市。然后,使用任何报告引擎向客户提供指标和报告。这种方法有效,但会增加客户的总拥有成本。
我想知道是否有人使用ElasticSearch作为报告的中间数据表面。Kibana可以满足数据探索和可视化需求吗?
我想为客户服务应用程序构建一个聊天机器人.我尝试了像Wit.Ai,Motion.Ai,Api.Ai,LUIS.ai等SaaS服务.这些认知服务在使用典型的交互模型进行训练时找到" 意图 "和" 实体 ".
我需要为内部部署解决方案构建chatbot ,而不使用任何这些SaaS服务.
例如典型的对话如下 -
Can you book me a ticket?
Is my ticket booked?
What is the status of my booking BK02?
I want to cancel the booking BK02.
Book the tickets
Run Code Online (Sandbox Code Playgroud)
StandFord NLP工具包看起来很有前景,但存在许可限制.因此我开始尝试使用OpenNLP.我假设,涉及两个OpenNLP任务 -
一旦确定了上下文,我将调用我的应用程序APIS来构建响应.
我更喜欢用Java来做这件事.但也可以打开节点或python解决方案.
PS - 我是NLP的新手.
apache-kafka ×2
datamart ×1
etl ×1
exporter ×1
kibana ×1
model ×1
nlp ×1
opennlp ×1
prometheus ×1
rest ×1
serving ×1
time-series ×1