我们使用CouchDB支持的Hyperledger架构来存储包含大量文本的记录。我们想要构建一个允许使用Elastic Search在这些记录上进行自由文本搜索的解决方案。然后的问题是使Fabric / CouchDB数据实时进入弹性搜索。最好的方法是什么。我可以想到三种方法:-
1)创建一个服务,以连续模式监听CouchDB更改提要(Couch为此提供了大力支持)并将更改推送到消息队列(Kafka) )。然后可以从Kafka读取另一个服务,然后推送到Elastic Search。我喜欢这个想法(“更改数据捕获”),因为我们可以从Kafka日志中构建其他读取视图。 这种方法的缺点:
2)让我们的客户端应用程序(向Fabric写入的应用程序)在每次向Fabric写入/更新时将事件发布到Kafka。然后,另一个服务可以读取这些事件并写入Elastic。 此方法的最大缺点是:
3)我相信超级管理器结构同行提供了一种称为“事件服务”的功能,该功能在每次写入分类帐时都会发布事件。但是,该文档不是很好,我找不到任何示例。如果您有经验,可以详细说明一下吗? 这种方法的最大问题是尚未经过实战测试,由于缺少文档/博客/示例等,当开发人员出错时,很多开发人员将花费大量时间进行修复。< / p>
非常感谢您的帮助。
答案 0 :(得分:0)
推荐的模式是#3-侦听块事件,并让侦听器将所需的任何数据插入可查询的数据存储中,例如Elasticsearch。使用基于通道的事件服务,侦听器客户端从某个起始块开始注册事件。如果服务有任何中断,则侦听器客户端始终可以从中断的位置恢复。
Node.js SDK event tutorial中详细描述了这种模式以及事件服务的一般用法。