微服务架构:从基础到实践
1. 数据存储与扩展策略
当数据量处于合理规模时,可通过添加新实例对服务进行水平扩展,每个实例需能存储所有数据。然而,若数据量因记录数量或记录大小增加而增长,就需考虑其他存储非权威数据的策略。例如在某些场景下,随着功能的增加,单个记录可能会变得很大。
有两种主要策略可供选择:
- 使用共享外部数据库 :可以用延迟换取存储大小,但这会改变维护成本,且需确保数据库具备扩展性。虽然使用传统数据库通常需要模式(schema),但当数据足够稳定时,模式带来的风险会降低。模式在项目初期成本较高,因为它锁定了假设,但后期可基于经验证据构建。
- 分片(Sharding) :若想避免使用共享数据库,可采用分片策略。可以使用分片编排服务,或者通过模式匹配对数据实体消息进行预分片,这是用于扩展信息服务的标记属性方法的一种变体。
2. 建议服务的优化
建议服务最初设计为完全在内存中运行且无状态,旨在提供“足够好”的建议,因此可直接进行水平扩展。但在生产环境运行一段时间后,用户反馈表明自动完成建议是一项有价值的功能,且希望能获得近乎即时的智能建议。当前的消息流设计无法满足这一目标,用户测试显示响应时间在 50 毫秒或更短能带来近乎神奇的体验。
为实现低于 50 毫秒的延迟,可采取以下措施:
- 使用用 C 语言编写的自定义 Web 服务器直接提供建议 API,并搭配高性能嵌入式键值存储。
- 服务器需运行在大型机器上,并可能使用无冲突复制数据结构来共享建议。
- 在全球范围内部署服务器,以靠近用户。
订阅专栏 解锁全文
1418



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



