首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微业务设计中的ElasticSearch

微业务设计中的ElasticSearch
EN

Stack Overflow用户
提问于 2019-01-24 14:58:32
回答 3查看 1.5K关注 0票数 1

我们有微型服务设计,也有DocumentServiceDocumentReportService.

DocumentsService -获取文档,在麋鹿中搜索文档。

DocumentsReportsService -生成文档中的报告,导出成PDF,例如,我想再次使用ELK作为存储。

问题:对于DocumentsServiceDocumentReportService来说,ELK是一个ELK实例还是2个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-25 13:13:16

DocumentReportService应该使用DocumentService而不是他自己的ES。

还有Elasticsearch,Logstash,Kibana

票数 2
EN

Stack Overflow用户

发布于 2019-01-26 16:19:10

如果您的问题是对两个服务都使用相同的ES集群,还是对每个服务使用单独的群集,那么-

我主张这样的说法:“没有这样的东西是不好的设计”。设计应该总是补充您的需求,同时也应该是足够简单的理解。记住接吻设计原则

Microservices支持数据库的两种模式。

两者各有优缺点。但是,在微服务中进行设计时不应忽略或忽略的是有界上下文

在您的情况下,我想一个更简单的设计版本可能会很好地定义边界:

文档服务:承担与文档存储交互的主要责任(在您的例子中是弹性搜索)。检索并在需要时将文档存储在文档存储中的是服务。保持文档服务--唯一与文档存储交互的服务--可以使您获得其他服务的优势,而不必担心文档存储的方式和位置。其他服务只知道一个服务,它封装了提供和存储文档的责任。如果将来想要更改文档存储,可以很容易地更改它,而不会影响到您的领域中的任何其他服务。(相比之下,当许多服务与您的数据存储交互时,如果您想要更改存储,那么所有这些服务都必须合并这些更改)。因此,您可以看到上下文是如何使您的设计可扩展的。

报告服务:负责生成报表。它封装了创建完整报告的整个业务逻辑(仅生成)。此服务不知道文档/报表存储的位置。(此服务仅限于生成报表而不是存储报表)

票数 2
EN

Stack Overflow用户

发布于 2019-01-24 23:04:57

我想,您的问题是,是为两个服务使用相同的ES集群,还是为每个服务使用单独的集群。

在Microservice体系结构中,“共享数据库”被认为是一种不好的做法--实际上,多个服务不应该访问相同的数据库对象,因为它会导致它们之间的紧密耦合。很有可能,多个服务仍然可以使用数据库的同一个物理实例。

因此,在您的示例中,如果两个服务在ES中使用单独的索引和映射,那么它们可能使用相同的集群。您应该避免的是将服务读写到相同的映射中,因为这会导致紧密耦合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54349529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档