构建微服务架构我面临着同一微服务实例之间的数据共享问题.

我有微服务,它大量使用它的数据源-每个服务请求都会导致数据库请求(通常是插入).这项服务的使用率将非常高,我计划在负载均衡器后面隐藏多个实例.这里出现了一个问题:这些实例是否应该使用一个数据库(该数据库会成为瓶颈吗?)或多个(每个实例的数据源)有吗?

推荐答案

在我使用mSOA架构的经验中,我从未见过

多个(每个实例的数据源)

以供使用.即使您计划大量加载它,最常见的DB本质上也支持多线程访问.通常,数据库系统的瓶颈(或最慢部分)是磁盘.我们不得不多次扩展我们的集群(如果您在云中,成本相对较低,但可伸缩性也会成为一个问题,因为管理和执行扩展的DB系统需要更多的线程).请记住,某些RDBMS使用临时数据库(Tempdb),该实例上的所有数据库都使用该临时数据库进行排序、散列、临时变量等.可以使用多线程和拆分此tempdb文件来提高tempdb的吞吐量,从而提高整体服务器性能.

因为我现在使用Orchard,所以我不得不说,在某些情况下,当您在一个实例上的操作不完全(和及时)同步时.这会导致即使在正确的身份验证之后,对资源的访问也会被拒绝(恰好在注册事件之后).

我计划在负载均衡器后面隐藏多个实例

这是适合您的App服务器的设计,因此使用DB集群也应该是合适的.以完整的答案为目标-您可以考虑DWH个,如果您有很多服务,并且您希望能够从他们所有的数据库中进行一些数据挖掘和分析.

Database相关问答推荐

如何在维护数据库模型的同时从Firestore中删除文档?

为什么Hibernate会为@JoinTable的双向@OneToMany关系生成一个复杂的子查询?

1-2400之间格式奇怪的时间数据

如何将表字段的默认值设置为 0.00?

创建一个spell check,判断具有合理运行时间的数据库

将数据库/后端添加到 android 应用程序

Objective-C中是否有类似于LINQ的东西?

将 .frm 和 .opt 文件导入 MySQL

哪个本地数据库适合 Windows 8 应用store 应用?

查询最后一天、上周、上个月SQLite

Spring Framework 中的默认隔离级别

如何在构建时创建填充的 MySQL Docker 映像

在 MS SQL 中使用 GUID 作为主键是不是一个坏主意?

避免从网站数据库中data scraping数据抓取?

ORA-00060: deadlock detected while waiting for resource

我应该将用户 ID 公开吗?

如何对彼此接近的纬度/经度点进行分组?

Django:检测数据库后端

sqlite 表中的最大行数

在一个查询中使用 group by 计算多列