微服务数据持久化存储:从内存到 MySQL
在微服务开发中,数据存储是一个至关重要的环节。之前我们使用内存存储电影元数据和用户评分,但这种方式存在诸多问题,比如缺乏数据持久化保证。当存储数据的服务实例重启时,内存中的数据会全部丢失。为了确保数据不会丢失,我们需要一种能持久化存储数据,并允许微服务读写的解决方案,数据库就是这样的解决方案之一。
1. 数据库简介
数据库是用于存储和检索各种类型数据的系统,它提供了多种数据存储保证,其中耐久性保证能确保存储的数据在软件和硬件重启等常见事件中不会丢失。
数据库还能解决许多与数据存储相关的问题。以之前创建的元数据服务为例,该服务使用内存存储和检索电影数据,提供 Get 和 Put 两个函数。当只有一个元数据服务实例时,只要服务不重启,调用者就能正常读写数据。但如果增加一个元数据服务实例,就会出现数据不一致的问题。
假设电影服务要写入电影元数据,它会选择一个元数据服务实例(如实例 0)并发送写入请求,数据会存储在该实例的内存中。当电影服务要读取之前存储的元数据时,根据处理请求的实例不同,会有两种结果:
- 实例 0:成功返回之前保存的电影元数据。
- 实例 1:返回 ErrNotFound 。
为了解决数据不一致问题,可以使用数据库存储电影元数据。数据库能处理所有元数据服务实例的读写请求,将数据集中存储在一个逻辑存储中。
数据库除了提供数据耐久性外,还有其他优点:
- 事务支持 :许多数据库支持事务,具有 ACID 属性:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



