加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

disconf-基于xml分布式配置管理mongo

发布时间:2020-12-16 08:44:46 所属栏目:百科 来源:网络整理
导读:mongodb目前有3种部署方式:单机、副本集(replica set)、分片(shard),本文结合disconf介绍这3种部署方式该如何和disconf配合使用 单机版本 a. 在resources文件夹下新建mongo-single.properties,内容为: # mongo mongo.db.name =xxxdb mongo.host = lo
mongodb目前有3种部署方式:单机、副本集(replica set)、分片(shard),本文结合disconf介绍这3种部署方式该如何和disconf配合使用
  1. 单机版本
    a. 在resources文件夹下新建mongo-single.properties,内容为:
    # mongo
    mongo.db.name=xxxdb
    mongo.host=localhost
    mongo.port=27017
    mongo.connectionsPerHost=8
    mongo.threadsAllowedToBlockForConnectionMultiplier=4
    mongo.connectTimeout=5000
    mongo.maxWaitTime=15000
    mongo.autoConnectRetry=true
    mongo.socketKeepAlive=false
    mongo.socketTimeout=5000
    mongo.slaveOk=false
    b.在resources文件夹下新建mongo-single.xml,内容为:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/data/mongo
    http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">

    <mongo:mongo host="${mongo.host}" port="${mongo.port}">
    <mongo:options connections-per-host="${mongo.connectionsPerHost}"
    threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
    connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
    auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"
    socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"
    write-number="1" write-timeout="0" write-fsync="true" />
    </mongo:mongo>
    <mongo:db-factory dbname="${mongo.db.name}" mongo-ref="mongo" />
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    </bean>
    </beans>
    主要是配置了一个mongoTemplate bean提供mongo crud的api封装接口,使用时只要注入该bean就可以,主要用的是spring data mongo
  2. 副本集
    创建mongo-replset.properties,内容为:
    # mongo
    mongo.db.name=xxxdb
    mongo.replset=ip1:27017,ip1:27018,ip1:27019
    mongo.connectionsPerHost=8
    mongo.threadsAllowedToBlockForConnectionMultiplier=4
    mongo.connectTimeout=5000
    mongo.maxWaitTime=15000
    mongo.autoConnectRetry=true
    mongo.socketKeepAlive=false
    mongo.socketTimeout=5000
    mongo.slaveOk=true
    主要是指定了replset,将slaveOk设置为true表示从节点是可以接受读请求(默认是不可以的,必须从client端进行设置)
    创建mongo-replset.xml,内容为:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/data/mongo
    http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">

    <mongo:mongo id="mongo" replica-set="${mongo.replset}">
    <mongo:options connections-per-host="${mongo.connectionsPerHost}"
    threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
    connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
    auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"
    socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"
    write-number="1" write-timeout="0" write-fsync="true" />
    </mongo:mongo>

    <mongo:db-factory dbname="${mongo.db.name}" mongo-ref="mongo" />
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    </bean>
    </beans>
    使用方法同单机
  3. 分片
    新建mongo-shard.properties,内容为:
    # mongo
    mongo.db.name=sparta
    mongo.host=ip
    mongo.port=27117
    mongo.connectionsPerHost=8
    mongo.threadsAllowedToBlockForConnectionMultiplier=4
    mongo.connectTimeout=5000
    mongo.maxWaitTime=15000
    mongo.autoConnectRetry=true
    mongo.socketKeepAlive=false
    mongo.socketTimeout=5000
    mongo.slaveOk=false
    这里的ip和port需要指定的是mogos(当然mongos也可以建立副本集)进程的ip和端口,由mongos负责分发请求到每个不同的分片
    新建mongo-shard.xml,内容为:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/data/mongo
    http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">

    <mongo:mongo host="${mongo.host}" port="${mongo.port}">
    <mongo:options connections-per-host="${mongo.connectionsPerHost}"
    threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
    connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
    auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"
    socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"
    write-number="1" write-timeout="0" write-fsync="true" />
    </mongo:mongo>
    <mongo:db-factory dbname="${mongo.db.name}" mongo-ref="mongo" />
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    </bean>
    </beans>
    使用方法同单机

    基于上述配置可以将mongo和disconf配置使用,让disconf来管理mongo的配置文件

参考: https://github.com/knightliao/disconf/wiki

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读