17 | 流量隔离:MongoDB 数据库隔离是怎么做的?
高楼
你好,我是高楼。
这节课,我们详细来讲讲如何基于微服务技术落地 MongoDB 数据库隔离。
快速了解 MongoDB
MongoDB 是目前比较主流的一款 NoSQL 文档数据库,它能够解决关系数据库中的 Schema 问题,其特点是 No-Schema,任意存储和读取任意数据。
MongoDB 的数据格式主要是 JSON/BSON,因为用它新增字段简单,历史数据容错性强,比较容易存储复杂数据,所以很多电商系统都会用它,我们这个开源电商项目里面的会员服务(mall-member)也用到了它。
目前 SpringBoot 对 MongoDB 使用的支持,主要通过 Spring Data MongoDB 模块,有以下两种方式:
MongoTemplate
MongoRepository
既然 Template 和 Repository 都可以做增删查改操作,它们俩的区别和优劣势在哪里呢?
到目前为止,Repository 比 Template 方便得多,但是后者可以提供对执行内容更细粒度的控制。可以说,“方便”和 “功能强大”在某种程度上是相互矛盾的目标。
Template 能做各式各样的操作,比较灵活,但是什么都得自己写。而 Repository 做了很好的封装,Repository 的实现和 JPA 类似,SQL 是动态生成出来的,对应关系是在实体类上定义的,用起来也比较方便,但是对于更复杂的查询操作,最后还是得靠 Template 来实现。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了基于微服务技术落地 MongoDB 数据库隔离的方法。首先介绍了 MongoDB 的特点和在 SpringBoot 中使用 MongoDB 的方式,包括 MongoTemplate 和 MongoRepository 的区别。然后重点讲解了在 SpringBoot 中落地数据隔离方案的需求和技术预演。文章提到了选择影子库作为 MongoDB 数据库隔离方案,并列举了改造需求,包括服务获取压测请求的标记、MongoDB 支持多数据源、动态切换数据源以及对业务代码的侵入性尽可能少。接着通过一个 demo 工程进行了技术预演,包括集成 MongoDB、实现获取压测标记等步骤。通过全局 Filter 过滤器和数据上下文的实现,展示了如何在业务中获取压测标记。整体来说,本文内容涵盖了 MongoDB 数据库隔离的技术细节和实际落地方案,对于想要深入了解 MongoDB 数据库隔离的读者具有很高的参考价值。文章通过实例演示了如何实现多数据源、全局 Filter 获取标记并存入数据上下文、通过 AOP 拦截请求并判断压测标记、选择对应 Factory以及操作对应的 MongoDB。文章内容丰富,对于想要在真实系统落地 MongoDB 数据库隔离的读者具有很高的实践指导意义。文章还介绍了如何通过自定义 Starter 实现影子库功能,并在真实项目中引入该 Starter。最后,通过接口测试验证了影子库功能是否达到预期。整体而言,本文内容丰富,技术深入,对于想要了解 MongoDB 数据库隔离技术的读者具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全链路压测实战 30 讲》,新⼈⾸单¥59
《全链路压测实战 30 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论