【问题标题】:Elasticsearch in microservices architecture微服务架构中的 Elasticsearch
【发布时间】:2018-07-20 09:41:37
【问题描述】:
我正在设计一个系统,其中我们有两个不同的微服务来管理两种不同的数据类型。常见的方法是每个微服务都有一个数据库,但是如果 Elasticsearch 取代了一个数据库,你有什么想法?我应该为每个微服务拥有 Elasticsearch 实例(集群)来声称我的架构漂亮而闪亮,还是一个具有许多索引的实例(集群)可以?
我希望得到诸如“视情况而定”之类的答案,但我仍然很想知道您对此的看法。
【问题讨论】:
标签:
elasticsearch
design-patterns
microservices
【解决方案1】:
即使您使用的是关系数据库,也有其他方法可以实现持久数据封装,而不是为每个服务配置单独的数据库实例。为每个架构设置一个单独的架构是一种替代方案,它仍然可以让您的架构保持“漂亮和闪亮”。私人拥有的桌子也是如此。只要您遵循将事物分开而没有任何跨域依赖或约束的意图,同时设置一些障碍以防止其他微服务团队作弊,您仍然是光明的一面。
这也适用于 Elasticsearch。我会利用它的多租户功能,只使用索引来分割所有权。考虑到您只有两个用户(微服务),这应该是干净和容易的。您可以考虑为基于角色的索引所有权添加 Elasticsearch Shield 插件,以防止其他团队为获得真正闪亮的解决方案而作弊。使用 Elasticsearch,这变得非常灵活,因为您可以根据每个微服务的负载和数据量来定制索引。
由于您可以获得所需的封装程度以及特定于服务的配置(通过索引),因此我认为您的第二个选项是可以的,因为它仍然符合架构的意图。