微服务之存储
引言
在微服务架构下,推荐每个服务都有自己独立的数据库、缓存、搜索等,这样做的优点是能够让服务之间的耦合度降低,同时可以让不同的服务根据不同的业务需求选择自己合适的存储方式。搜索服务可以用 Elasticsearch,日志服务可以用 Mongodb,业务数据可以用 MYSQL 。缺点就是对于事务的处理比较麻。所以我们尽量避免分布式事务,采用合理的设计。
——《spring cloud 微服务 入门、进阶与实战》
存储选型
关于数据库的选择每个公司都不太一样,说说我的选择吧。业务数据肯定是用 MYSQL,如果资金允许也可以用 Oracle;搜索服务用 Elasticsearch来构建;大数据量的基础数据,采用 Mongodb存储,缓存用 Redis 即可。一个中小型的互联网公司用这些组件基本上就足够了。微服务的好处在这里就体现出来了,每个服务都可以根据自己的业务选择最合适的存储方式。
——《spring cloud 微服务 入门、进阶与实战》
Mongodb
集成 Spring Data Mongodb
- 在 spring boot 中集成 mongodb 只需要加入对应的 starter 就可以了,非常方便。
1 | <dependency> |
- 配置数据源
1 | # mongodb |
添加数据操作
- 准备实体对象
1 | /** |
- 控制器 测试代码
1 |
|
运行项目访问接口:数据库已成功添加了
修改数据操作
1 |
|
删除数据操作
1 |
|
查询数据操作
- mongoTemplate 查询
1 |
|
- spring data 框架查询
1 |
|
索引
要给某个字段加索引就在字段上面加上 @Index 注解,里面可以填写对应的参数,在插入数据的时候,框架会自动根据配置的注解创建对应的索引。
1 |
|
- @CompoundIndexes 组合索引声明,内可以包含多个 @CompoundIndex
- @CompoundIndex 组合索引
- name 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
- def = “{‘city’: 1, ‘region’: 1}” 定义:city与region组合, 1 表示顺序。 -1 表示倒序。
- @Indexed 普通索引
- unique = true 建立的索引是否唯一。指定为true创建唯一索引。默认值为 false.
- 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为 false。
redis
集成配置
未完待续。。。
参考: