spring boot集成mongodb 分片解决大数据存储问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了spring boot集成mongodb 分片解决大数据存储问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2317字,纯文字阅读大概需要4分钟。
内容图文
由于项目中涉及到某张表存在超额大数据记录集成分片过程:
- 项目结构:
-
spring boot ---2.1.0.RELEASE
-
mongodb-plus-spring-boot-starter
-
- mongodb版本:3.0.6
首先下载Mongodb 这边使用的是windows版的,liunx版本网上有很多怎么分片配置,先把文件包拷贝几份
原理基本看图就能明白
具体实现:
- config.bat:
%cd%\mongodb-3.0.6-config\bin\mongod --dbpath=%cd%\mongodb-3.0.6-config\bin\datas\data --logpath=%cd%\mongodb-3.0.6-config\bin\datas\log\mongo.log --port 2222
pause
- mongos.bat(configdb 配置为config配置):
%cd%\mongodb-3.0.6-mongos\bin\mongos --port 1111 --configdb 127.0.0.1:2222
pause
其他shard均参照config.bat (shard1->127.0.0.1:3333,shard2->127.0.0.1:4444,shard3->127.0.0.1:5555)
先启动除mongos的mongdb,最后启动mongos
- cmd进入mongos的/bin目录-------
mongo 127.0.0.1:1111/admin
- 连接上mongos
- 添加分片
db.runCommand({addshard:"127.0.0.1:3333",allowLocal:true})
- 开启数据库分片
db.runCommand({"enablesharding","需要分片的数据库名"})
- 设置片键
片键是分片的关键,有范围分片,hashed分片(随机的分配),组合分片(组合分片是比较好的一种分片的选择,好的组合分片可以同时解决热点和随机读IO问题),标签分片(比如对于一些日志非查询文档,可以通过标签将其只插入到某个分片中)
这里选用的是组合分片
db.runCommand({"shardcollection":"xx数据库.xx数据表","key":{"字段":1,"字段":1}})
至此已经完成全部的配置-----查看配置状态db.printShardingStatus()
- spring boot配置
- 我这里用的plus,可以在yml中配置连接数据,若用的spring-data-mongo可以忽略
-
spring: #数据库配置 data: mongodb: uri: mongodb://127.0.0.1:1111/ruian 这里配置的是mongos路由的路径就可以实现分片了 option: min-connection-per-host: 0 max-connection-per-host: 20000 threads-allowed-to-block-for-connection-multiplier: 20 server-selection-timeout: 30000 max-wait-time: 120000 max-connection-idle-time: 0 max-connection-life-time: 0 connect-timeout: 10000 socket-timeout: 0 socket-keep-alive: false ssl-enabled: false ssl-invalid-host-name-allowed: false always-use-m-beans: false heartbeat-socket-timeout: 20000 heartbeat-connect-timeout: 20000 min-heartbeat-frequency: 500 heartbeat-frequency: 10000 local-threshold: 15
再代码中循环插入数据,在分片表中就可以看到实际效果
- 配置中遇到的坑:
在添加片的时候,如果mongodb里面存在数据库则会出现添加失败
启动mongs路由的时候会出现 I SHARDING [Balancer] distributed lock 'balancer/PC
201611240804:1111:1557995632:41' unlocked.暂时不知道原因,但是不影响使用
内容总结
以上是互联网集市为您收集整理的spring boot集成mongodb 分片解决大数据存储问题全部内容,希望文章能够帮你解决spring boot集成mongodb 分片解决大数据存储问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。