在微服务架构中扩展数据库

2024-01-10

假设我们有 5 个微服务 (μS),每个微服务都需要一个包含一些表的数据库。这些服务中的每一个都需要能够扩展,包括数据库查询。为此,据我所知,我们有几个选择:

1. 1-μS; 1 个实例; 1 个数据库实例

不要水平缩放,只垂直缩放。

2. 1-μS; N 个实例; 1 个数据库实例

服务的每个实例都可以读取和写入同一数据库。如果服务处理是瓶颈,则可以采用简单的扩展方法。

3. 1-μS; N 个实例;高可用性数据库集群

服务的每个实例都可以读取和写入同一个 HA 数据库。如果数据库读/写也是瓶颈,那么这是一种扩展的好方法。运营成本较大。

4.N-μS; N 个实例;高可用性数据库集群

每个服务的每个实例都可以读取和写入同一个 HA 数据库集群。每个服务在 HA 数据库集群中使用自己的数据库。

5. Other

除了需要数据库的服务之外,还有其他方法可以扩展数据库吗?


每个解决方案都需要权衡,无论是读取还是写入性能、操作成本等,但是对于扩展数据库,推荐的解决方案是什么:

  • 服务和数据库在某种程度上是平等的,扩展服务需要扩展数据库?
  • 服务需要更多处理时间意味着服务需要扩展而不是数据库?
  • 数据库比服务需要更多的处理时间?

我的观点是,如果某个服务的写入量很高,那么 3 或 4 是一个解决方案,而对于其余的 4 是一个解决方案。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在微服务架构中扩展数据库 的相关文章

  • 研究MySQL、SQLite源码了解RDBMS实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道实现数据库是一个很大的话题 但我想通过研究数据库系统的源代码来基本了解数据库系统的工作原理 例如
  • 我的用例可以合并到单个查询中而不影响性能吗?

    我主要着眼于改善表现查询的内容以及是否能够解决单一查询对于我的用例之一 解释如下 涉及到2张表 Table 1 EMPLOYEE column1 column2 email1 email2 column5 column6 Table 2 E
  • 数据加密

    存储大量信用卡信息的数据库是我们刚刚完成的系统中不可避免的一部分 不过 我想要的是卡号的最终安全性 我们可以设置一种加密和解密机制 但我们自己无法解密任何给定的号码 我所追求的是一种即使在数据库级别也能保护这些信息的方法 这样任何人都无法进
  • 要做或不做:将图像存储在数据库中[重复]

    这个问题在这里已经有答案了 在 Web 应用程序的上下文中 我的前老板总是说在数据库中放置对图像的引用 而不是图像本身 我倾向于同意在数据库中存储 url 与图像本身是一个好主意 但在我现在工作的地方 我们在数据库中存储大量图像 我能想到的
  • 主键默认可以为NULL吗?为什么这样描述呢?

    我有一张桌子 当我describe这是 mysql gt DESC my table Field Type Null Key Default Extra contact id int 11 NO PRI NULL auto incremen
  • using 块会关闭数据库连接吗?

    using DbConnection conn new DbConnection do stuff with database 会不会using块调用conn Close 是的 它会 实施DbConnection Dispose calls
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • JPA中如何连接多个数据库?

    我有一个 Spring Boot 应用程序 当前使用 JPA 连接到单个数据库 application properties 文件中的连接详细信息 spring datasource url jdbc oracle thin localho
  • 如何以最短的停机时间移交 TCP 侦听套接字?

    虽然这个问题被标记为 EventMachine 任何语言的通用 BSD 套接字解决方案也非常受欢迎 一些背景 我有一个应用程序正在侦听 TCP 套接字 它通过常规的 System V 风格的 init 脚本启动和关闭 我的问题是它需要一些时
  • Postgres 从 10 升级到 12:pg_upgrade 由于存在所需库而失败

    usr pgsql 12 bin pg upgrade gt b usr pgsql 1 pgsql 10 pgsql 12 gt b usr pgsql 10 bin gt B usr pgsql 12 bin gt d var lib
  • 我应该检查代码中的数据库约束还是应该捕获数据库抛出的异常

    我有一个将数据保存到名为 作业 的表中的应用程序 Jobs 表有一个名为 Name 的列 该列具有 UNIQUE 约束 名称列不是主键 我想知道在尝试保存 更新新条目之前是否应该自己检查重复条目 或者最好等待数据访问层抛出异常 如果这个应用
  • Guid.NewGuid().GetHashCode() 用于数据库

    这对于用作数据存储 SQL Server 的 ID 可靠吗 我会使用 guid 但我更喜欢数字值 A guid更有可能代表一个记录uniquely than a numeric value 随着 GUID 确保全球唯一性 GUID 可以跨数
  • Mysql UUID_SHORT() 与 UUID() 相当吗

    如果您愿意的话 请快速提出问题或意见 我需要为数据库表生成一些 UUID 自动递增密钥不会减少它 因为我还需要密钥在数据库和系统中保持唯一 UUID 工作正常 但其输出对于行将导出到的某些系统来说太长 UUID SHORT 做得很好 我已经
  • 如何处理多个连接

    我有一个复杂的查询 需要总共 4 个表中的字段 内部联接导致查询花费的时间比应有的时间长得多 我已经运行了一个 EXPLAIN 语句 其可视化结果附在下面 这是我的查询 SELECT pending corrections correcte
  • 如何选择从数据集中进入数据表的列?

    作为数据工作的新手 我希望我能正确地提出这个问题 如何选择从数据集中进入数据表的列 我知道我可以使用 填充数据表 DataTable table dataSet1 Tables 0 但这会引入所有列 如何仅使用某些列填充数据表 我正在使用
  • 使用 unnest() 返回行?

    我尝试在完成后返回一组行UPDATE 像这样的东西 UPDATE Notis new noti SET notis noti record type FROM SELECT FROM Notis WHERE user id 2 FOR UP
  • 如何设计具有主键和多值属性的表?

    我对数据库设计很感兴趣 现在正在阅读相应的文献 通过这本书 我遇到了一个让我感到不确定的奇怪例子 有一个关系 在此表中 我们有一个复合主键 StudentID Activity 但ActivityFee部分依赖于表的key Activity
  • BIT(1) 的存储大小是多少?

    我一直认为a的存储大小BIT 1 列为 1 位 But http dev mysql com doc refman 5 6 en storage requirements html http dev mysql com doc refman
  • 如何管理微服务故障?

    比方说 我有几个微服务 REST API 问题是 如果一项服务无法访问 我们称之为服务 A 发送到服务 A 的数据将保存在临时数据库中 服务工作后 数据将再次发送 问题 1 我应该创建每 10 秒 ping 一次服务 A 的服务来了解服务是
  • 是否可以在MySQL UDF中的IF条件中声明游标

    我可以在 if 语句中声明游标吗 如果可能的话我怎样才能做到 因为我刚刚做了这样的光标 CREATE FUNCTION fn test ProductID BIGINT 20 RETURNS DECIMAL 10 2 BEGIN DECLA

随机推荐

  • 垂直对齐 div 元素中的图像?

    我有一个 div 元素 其高度设置为em 其宽度我设置为百分比 里面有一张图片 它的宽度以百分比表示 83 但是 如果我的分辨率使 div 元素开始变得有点窄 则图像也会变窄 但图像不会占据整个 div 应有的 而是会变小并出现在div 的
  • 如何使用 VB6 获取硬件信息,例如 CPU 名称、总 RAM 等?

    标题几乎说明了一切 我需要使用 VB6 获取一些硬件信息 例如 CPU 信息和总 RAM 理想情况下 它会为 CPU 返回类似以下内容 英特尔酷睿 2 四核 Q8500 2 66 GHz 对于 RAM 来说 有些简单的东西 比如计算机总共拥
  • Laravel 使用请求获取 POSTed 数据

    在 Laravel 中如何获取请求正文 我正在尝试 request gt get data 但得到空结果 我正在向控制器中的存储功能发出 POST 请求 但无法获取 POST 数据 public function store Request
  • Golang:即使数据库关闭,第二次 Ping 也会成功

    我遇到了一个有趣的问题 即 db Ping 不会返回错误 即使数据库自第一次尝试以来已被终止 源代码如下 import database sql fmt log time github com go sql driver mysql typ
  • Assembly.ReflectionOnlyLoadFrom 不起作用

    我有一个集会Library1 dll其中包含一些接口 这些接口被序列化为字节数组到数据库中 由于某些原因 我们必须更改接口属性和定义 所以现在我正在编写一个迁移实用程序 所以我有两个版本Library1 dll 在我的实用程序中 我创建了一
  • 使用多核使用 g++ 进行编译

    快速问题 允许 g 生成自身的多个实例以便更快地编译大型项目 例如 多核 CPU 一次 4 个源文件 的编译器标志是什么 您可以使用 make 来完成此操作 使用 gnu make 时 它 是 j 标志 这对单处理器机器也有帮助 例如 如果
  • 程序终止后动态分配内存

    当包含动态分配内存 使用 malloc new 而没有 free delete 调用的 C C 程序终止时 动态分配的内存会发生什么 操作系统是否收回内存 或者其他程序是否无法访问该内存 我不认为语言标准有任何保证 但是支持稀疏虚拟内存和内
  • 对 SliverList 中的变化进行动画处理

    我目前有一个SliverList其项目是动态加载的 问题是一旦这些项目被加载 SliverList更新而不动画更改 在加载和加载之间进行转换very刺耳的 我看到AnimatedList存在 但它不是条子 所以我不能将它直接放入Custom
  • python 迭代文本文件直到满足条件

    我想继续迭代文本文件 直到满足循环内的当前条件 这是示例文本 10 01 N A 10 02 N A 10 03 N A 10 04 N A 10 05 N A 10 06 N A 10 07 N A 10 08 N A 10 09 N A
  • 用R计算多个多边形之间的最小距离

    我对 R 和 sf 包还是有点陌生 我有两组多边形数据正在尝试分析 我的第一组多边形 火灾 包含数百个野火周界 第二组 城镇 包含数百个城市区域边界 对于每次火灾 我想计算到最近城镇的距离 火灾多边形边缘到最近城镇多边形边缘 并将其作为字段
  • Meteor 的 Iron Router - 将多个路径路由到一个模板,但仍然是 DRY

    我想将多个路径路由到同一个模板 例如 abc home and home都会显示home模板 路径也可以有子路径 所以abc parent child and parent child也应该路由到相同的路径 I can 简单地重复 Rout
  • 使用 PHP 对从 CSV 数据构建的多维数组进行排序

    尝试对 PHP 中从 CSV 填充的数组进行排序 理想情况下 我也希望能够通过单击来控制排序此处表格中的选项卡 http wakeuptv com shows 不过 现在我手头的第一个任务就是整理该死的东西 已经为此工作了 3 天多了 非常
  • ASP.net 中的免费 PDF 查看器

    我有许多二进制格式的 PDF 文档 位于 SQL Server 2008 数据库中 我的 ASP net 页面中有一个 gridview 当用户单击记录的任何 ID 列时 我需要在浏览器中打开 pdf 有没有免费的 PDF 查看器控件 如何
  • 配置服务时如何通过依赖注入在 Azure Function V3 中注入或使用 IConfiguration

    通常在 NET Core 项目中 我会创建一个 引导 类来配置我的服务以及 DI 注册命令 这通常是一个扩展方法IServiceCollection我可以在哪里调用类似的方法 AddCosmosDbService并且所有必要的东西都是包含该
  • System.Web.Razor API 文档 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 此类型 成员支持 NET Framework 基础结构 并且不适合直接在代码中使用 谁能说出以下事实 System Web Razor http
  • 使用 Python 打开 Outlook

    我正在尝试使用 Python 打开 Outlook 但我得到了这个 import win32com client ol win32com client Dispatch outlook Application 它会打开 Outlook 但我
  • NgModule 中的声明、提供者和导入之间有什么区别?

    我试图理解 Angular 有时称为 Angular2 然后我遇到了 Module Imports 声明 供应商 下列的角度快速入门 https angular io guide quickstart 角度概念 imports使其他模块的导
  • PHP:从 javascript 重新加载验证码图像

    我有一个 PHP 中的用户注册表单 我将验证码图像检查放在页面中 我像这样使用它 img src captcha php alt Enter this text in the adjacent text box 在我的 javascript
  • 在 SQLite LIKE 中转义通配符 (%, _) 而不牺牲索引使用?

    我在 SQLite 查询方面遇到了一些问题 实际上我开始认为 SQLite 不是为超过 10 行的表设计的 真的 SQLite 是一场噩梦 以下查询 SELECT FROM Table WHERE Name LIKE Text 效果很好 E
  • 在微服务架构中扩展数据库

    假设我们有 5 个微服务 S 每个微服务都需要一个包含一些表的数据库 这些服务中的每一个都需要能够扩展 包括数据库查询 为此 据我所知 我们有几个选择 1 1 S 1 个实例 1 个数据库实例 不要水平缩放 只垂直缩放 2 1 S N 个实