disconf-基於xml分佈式配置管理mongo

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章