微服务架构中的Elasticsearch

时间:2018-07-19 16:55:44

标签: elasticsearch design-patterns microservices

我正在设计一个系统,其中我们有两个不同的微服务来管理两种不同的数据类型。常见的方法是每个微服务都具有数据库,但是您对Elasticsearch是否代替数据库有何看法?我应该为每个微服务使用Elasticsearch实例(集群)来声明我的体系结构漂亮又有光泽,还是一个具有很多索引的实例(集群)可以吗? 我希望得到“取决于情况”之类的答案,但我仍然很想知道您对此的看法。

1 个答案:

答案 0 :(得分:1)

即使您使用的是关系数据库,除了为每个服务提供单独的数据库实例之外,还有一些方法可以实现持久的数据封装。每个方案都有一个单独的架构是一种选择,它仍然可以使您的体系结构“精致而有光泽”。私有表也是如此。只要您遵循将所有东西分离开而没有任何跨域依赖性或约束的意图,同时为阻止其他微服务团队作弊设置障碍,您仍然会保持乐观。

这一切也适用于Elasticsearch。我将利用其多租户功能,仅使用索引来拆分所有权。考虑到您只有两个用户(微服务),这应该很简单。您可以考虑为基于角色的索引所有权添加Elasticsearch Shield插件,以防止其他团队为真正出色的解决方案作弊。借助Elasticsearch,它变得非常灵活,因为您可以根据每个微服务的负载和数据量定制索引。

由于您可以获得所需的封装程度,并且具有特定于服务的配置(通过索引),因此我认为您的第二个选择是可以的,因为它仍然符合体系结构的意图。