最近在一直搞Mongodb的主从和集群,从Mongodb官网(http://www.mongodb.org)宕下来Mongodb1.8和最新版的JavaDriver 2.6.5,Mongodb主从可以从这里知晓http://www.mongodb.org/display/DOCS/Replication
Master/Slaver模式由于不能自动切换,所以官方也推荐使用ReplicaSet模式
待主从配置成功后,我们接下来要考虑的就是如何在java端调用mongodb(http://api.mongodb.org/java/2.6.5/)
从图片中我们可以看到Mongodb java driver存在帮我们封装了多个IP和端口的参数方法~
接下来可以参考api中的demo,出现了Rare case where master=null...(如果你调用了slaveOk方法),否则出现Can't find a master
翻了半天源码也没理清头绪,索性将jar包换成了2.4的,发现结果一切正常。
这是https://github.com/mongodb/mongo-java-driver/wiki/Release-Notes以前的版本升级说明
之前在用mongodb做统计,策划同学的意思是只需用包括昨日以前的数据,但个人感觉做实时也没问题,由于需求
相对复杂,于是选择了mongodb的mapReduce方案,结果出现两个问题~
1)开发环境使用1.6线上环境使用1.8,1.8的Mongodb不支持1.6的语法,导致出错
2)单台服务器做mapReduce性能非常差,导致了全表搜索直接影响线上业务(暂时没有备份库)
后来只有换套方案才满足了实时的需求~
以上一些事情引申的话题值得思考
1) 作为程序员使用不熟悉的技术之前,有没有必要对技术做相关的培训和学习(这里指的是技术实现的大概原理,不单纯是使用)?
2) 当我们做产品的时候,向下兼容问题是不是需要单独拿出来测试?
3) 讨论下方案在项目和产品中的位置~