zoukankan      html  css  js  c++  java
  • Coherence的NameService

    Coherence*Extend模式下客户端需要连接一个或多个proxy Server从而接入集群,在一些比较大型的环境中,Proxy Server往往比较多,一旦修改起来需要修改每个配置文件,在Coherence 12.1.2中推出了NameService的功能,原理如下:

    • 启动Coherence集群时,先启动一个NameService的进程(固定port),也可以启动多个
    • 所有的客户端指到这个NameService(也可以联到多个),然后由NameService分派一个Proxy Service完成接入
    • 这样每个Proxy Server的配置可以比较简单

    具体配置如下:

    proxy-override.xml

    <?xml version="1.0"?>
    <!DOCTYPE cache-config SYSTEM "cache-config.dtd">
    <cache-config>
    <caching-scheme-mapping>
    <cache-mapping>
    <cache-name>*</cache-name>
    <scheme-name>distributed-scheme</scheme-name>
    </cache-mapping>
    </caching-scheme-mapping>

    <caching-schemes>
    <!-- Distributed caching scheme. -->
    <distributed-scheme>
    <scheme-name>distributed-scheme</scheme-name>
    <service-name>DistributedCache</service-name>
    <thread-count>50</thread-count>
    <backup-count>1</backup-count>
    <backing-map-scheme>
    <local-scheme>
    <scheme-name>LocalSizeLimited</scheme-name>
    </local-scheme>

    </backing-map-scheme>
    <autostart>true</autostart>
    <local-storage>false</local-storage>
    </distributed-scheme>
    <local-scheme>
    <scheme-name>LocalSizeLimited</scheme-name>
    <eviction-policy>LRU</eviction-policy>
    <high-units>500</high-units>
    <unit-calculator>BINARY</unit-calculator>
    <unit-factor>1048576</unit-factor>
    <expiry-delay>48h</expiry-delay>
    </local-scheme>

    <proxy-scheme>
    <service-name>ExtendTcpProxyService</service-name>
    <thread-count>10</thread-count>
    <acceptor-config>
    <tcp-acceptor>
    </tcp-acceptor>
    </acceptor-config>
    <load-balancer>proxy</load-balancer>
    <autostart>true</autostart>
    </proxy-scheme>

    </caching-schemes>
    </cache-config>

    启动nameServer的命令(通过unicast方式启动nameServer)

    "%java_exec%" -server -showversion -Dtangosol.coherence.localhost=192.168.0.101 -Dtangosol.coherence.localport=8088 -Dtangosol.coherence.mode=prod -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.management=all %java_opts% -Dtangosol.coherence.cacheconfig=E:wls12ccoherenceinstorage-override.xml -cp "%coherence_home%libcoherence.jar" com.tangosol.net.DefaultCacheServer %*

    启动后的提示

    启动一个或多个代理服务器,输出

    客户端的schema,client.xml

    <?xml version="1.0"?>
    <!DOCTYPE cache-config SYSTEM "cache-config.dtd">
    <cache-config>
    <caching-scheme-mapping>
    <cache-mapping>
    <cache-name>*</cache-name>
    <scheme-name>extend-dist</scheme-name>
    </cache-mapping>
    </caching-scheme-mapping>

    <caching-schemes>
    <remote-cache-scheme>
    <scheme-name>extend-dist</scheme-name>
    <service-name>ExtendTcpCacheService</service-name>
    <proxy-service-name>ExtendTcpProxyService</proxy-service-name>
    <initiator-config>
    <tcp-initiator>
    <name-service-addresses>
    <socket-address>
    <address>192.168.0.101</address>
    <port>8088</port>
    </socket-address>
    </name-service-addresses>
    <connect-timeout>10s</connect-timeout>
    </tcp-initiator>
    <outgoing-message-handler>
    <request-timeout>5s</request-timeout>
    </outgoing-message-handler>
    </initiator-config>
    </remote-cache-scheme>
    </caching-schemes>
    </cache-config>

     启动以后,看到请求先到NameService 8088.3,然后分到proxy Server,8089:36095

  • 相关阅读:
    非阻塞式NIO 小案例(模拟聊天室)
    网络通信小案例,服务端接收成功要给客户端一个反馈(阻塞式)
    阻塞式网络通信小案例:
    NIO的非阻塞式网络通信
    字符编码
    使用分散(Scatter)与聚集(Gather)来实现文件的复制
    使用通道之间的数据传输(效果,也是实现文件的复制)
    创建直接缓存区完成文件的复制
    C++预处理详解
    C++的学习资源
  • 原文地址:https://www.cnblogs.com/ericnie/p/5880567.html
Copyright © 2011-2022 走看看