文章源自JAVA秀-https://www.javaxiu.com/21239.html 闪耀的瞬间 收藏 分类专栏: 版权 文章源自JAVA秀-https://www.javaxiu.com/21239.html 请仔细看好 spring.data.mongodb.uri 的配置,他的格式如下,可以参考mongodb连接:文章源自JAVA秀-https://www.javaxiu.com/21239.html 网上使用uri连接的很多都是错误的,导致我项目代码一直连接不上文章源自JAVA秀-https://www.javaxiu.com/21239.html 我本地MongoDB环境,192.168.68.137是主库,138、139是从库,主库写,从库查文章源自JAVA秀-https://www.javaxiu.com/21239.html 5.代码示例,创建一个 Rest风格的 IndexController ,提供:添加与查询接口,访问这2个接口,看控制台输出,是否查操作自动分配到从库,写操作分配到主库 文章源自JAVA秀-https://www.javaxiu.com/21239.html 5.1启动项目,测试流程如下:(已先添加了1000条数据) 文章源自JAVA秀-https://www.javaxiu.com/21239.html a 访问 getList d IDEA的控制台,第一 getList读请求分配到从库138上,第二个 add写请求分配到主库137上,其他的是jmeter测试工具并发 getList读请求的结果,都是在 138、139从库上 大功告成,源码下载文章源自JAVA秀-https://www.javaxiu.com/21239.html MongoDB数据超多之后请使用索引,真实案例,有张表数据超过300万,分页查询超时,设置合理的索引后秒查 如,按时间倒序索引:db.Exception_Info.createIndex({“createDate”:-1}),正序是 1,倒序是 -1文章源自JAVA秀-https://www.javaxiu.com/21239.html 文章源自JAVA秀-https://www.javaxiu.com/21239.htmlSpringBoot项目开发(二十二):SpringBoot MongoDB实现副本集(读写分离)
文章源自JAVA秀-https://www.javaxiu.com/21239.html文章源自JAVA秀-https://www.javaxiu.com/21239.html
2018-10-10 15:41:11
12175
文章源自JAVA秀-https://www.javaxiu.com/21239.html
16
java
mongodb
spring boot 文章源自JAVA秀-https://www.javaxiu.com/21239.html
1.MongoDB可以单库、主从(官方现已不推荐)、副本集、分片加副本集,通过分片加副本集可以组成庞大的数据存储集群,而大部分项目使用副本集就能满足需求了
2.MongoDB副本集(Replica Set):有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组成。
3.副本集环境搭建,请参考 Mongodb安装与设置副本集
4.SpringBoot实现 MongoDB的连接与读写分离操作,这个操作我卡了很久,其实也很简单,就是连接字符串导致的,mongodb在SpringBoot项目的 application.properties文件中连接配置 文章源自JAVA秀-https://www.javaxiu.com/21239.html# MongoDB URI配置 重要,添加了用户名和密码验证
spring.data.mongodb.uri=mongodb://zhuyu:zhuyu@192.168.68.138:27017,192.168.68.137:27017,192.168.68.139:27017/ai?slaveOk=true&replicaSet=zypcy&write=1&readPreference=secondaryPreferred&connectTimeoutMS=300000
#每个主机的连接数
spring.data.mongodb.connections-per-host=50
#线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值
spring.data.mongodb.threads-allowed-to-block-for-connection-multiplier=50
spring.data.mongodb.connect-timeout=5000
spring.data.mongodb.socket-timeout=3000
spring.data.mongodb.max-wait-time=1500
#控制是否在一个连接时,系统会自动重试
spring.data.mongodb.auto-connect-retry=true
spring.data.mongodb.socket-keep-alive=true
12345678910111213mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
1@RequestMapping("/index")
@RestController
public class IndexController {
@Autowired private MongoTemplate mongoTemplate;
@RequestMapping("/getList")
public List<TestModel> getList(){
List<TestModel> list = mongoTemplate.findAll(TestModel.class,"test");
return list;
}
@RequestMapping("/add")
public String add(){
TestModel model = new TestModel("zhuyu" + System.currentTimeMillis());
mongoTemplate.insert(model , "test");
return "success";
}
}
12345678910111213141516171819 b 访问 add
c 工具 jmeter 做并发测试,每1秒100个线程并发 getList读请求,且循环5次,总共500个请求,下面是测试结果
文章源自JAVA秀-https://www.javaxiu.com/21239.html
文章源自JAVA秀-https://www.javaxiu.com/21239.html

评论