当前位置: 首页 > 知识库问答 >
问题:

启动C++客户端模式,接近缓存

暨弘毅
2023-03-14

我有一个ignite服务器在复制模式下运行,许多客户机在同一个节点上,几乎启用了缓存。现在,在使用near cache和不使用near cache运行client时,我没有发现显著的性能差异。

我对近缓存的理解是,经常使用的键和值将存储在客户机本身,因此不会对服务器进行实际的Get()调用。如果我错了请指正。

可以有人共享一个工作附近的缓存配置XML。

SERVER CONFIG:
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.xsd">
        <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">

            <property name="cacheConfiguration">
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="cacheMode" value="LOCAL" />
                                <!-- Enable near cache to cache recently accessed data. -->

                                <!--    <property name="nearConfiguration">

                                    <bean class="org.apache.ignite.configuration.NearCacheConfiguration"/>

                                </property> -->
                    <property name="nearConfiguration">
                    <bean class="org.apache.ignite.configuration.NearCacheConfiguration">
                    </bean>
                    </property>

                </bean>
            </property>
        <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <!--
                        Ignite provides several options for automatic discovery that can be used
                        instead os static IP based discovery.
                    -->
                    <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
                    <!-- <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> --> 
                             <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">  
                        <property name="addresses">
                            <list>
                                <!-- In distributed environment, replace with actual host IP address. -->
                                <!-- <value>127.0.0.1:48550..48551</value> -->
                                <value>XXX.ZZZ.yyy.36:47500..47501</value>  
                            </list>
                        </property>
                    </bean>
                </property>
            </bean>
        </property>

    </bean>
</beans>


CLIENT CONFIG:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.xsd">
        <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">

            <property name="cacheConfiguration">
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="cacheMode" value="LOCAL" />
                                <!-- Enable near cache to cache recently accessed data. -->

                                <!--    <property name="nearConfiguration">

                                    <bean class="org.apache.ignite.configuration.NearCacheConfiguration"/>

                                </property> -->
                    <property name="nearConfiguration">
                    <bean class="org.apache.ignite.configuration.NearCacheConfiguration">
                    </bean>
                    </property>

                </bean>
            </property>
        <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <!--
                        Ignite provides several options for automatic discovery that can be used
                        instead os static IP based discovery.
                    -->
                    <!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
                    <!-- <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> --> 
                             <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">  
                        <property name="addresses">
                            <list>
                                <!-- In distributed environment, replace with actual host IP address. -->
                                <!-- <value>127.0.0.1:48550..48551</value> -->
                                <value>XXX.ZZZ.yyy.38:47500..47501</value>  
                            </list>
                        </property>
                    </bean>
                </property>
            </bean>
        </property>


    </bean>
</beans>

共有1个答案

宦烈
2023-03-14

是的,near cache通过本地缓存node上经常使用的条目来提高性能,但是如果您在单机或JVM上运行所有测试,这是没有意义的。Near cache允许不在远程节点上获取数据,但在您的测试中,一切都已经在本地工作了。

对于复制的分区的缓存上的服务器节点来说,也没有意义,因为备份数量等于或大于数据节点数量,因为每个节点的所有数据集都已在本地可用。

因此,当服务器节点在远程计算机上工作时,为了提高性能,您需要将客户机节点配置为使用Near cache。测量前不要忘记在缓存附近预热。

下面是用于设置缓存附近的XML片段:

...
<bean class="org.apache.ignite.configuration.CacheConfiguration">

       <!-- Your other cache config -->

       <property name="nearConfiguration">
             <bean class="org.apache.ignite.configuration.NearCacheConfiguration"/>
       </property>
</bean>
...
 类似资料:
  • 启动客户端 需要启动一个以太坊客户端,当然如果你已经启动了就不需要再次启动。 如果是geth的话这么启动: $ geth --rpcapi personal,db,eth,net,web3 --rpc --rinkeby 如果是Parity启动: $ parity --chain testnet 如果使用Infura客户端提供的免费的云端服务,这么启动: Web3j web3 = Web3j.

  • 客户端跟服务端基本一样,也支持Web Host和Generic host 调用AddClient方法启用客户端 public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(Compatibility

  • 我想知道以下问题的答案: 1)如果Ignite服务器重新启动,我需要重新启动客户端(web应用程序)。是否有任何方法可以在服务器重新启动时重新连接到服务器。我知道当服务器重新启动时,它分配了一个不同的ID,因此当前现有的连接变得过时。是否有方法克服这个问题,如果是的话,哪一个版本的Ignite支持这个功能。目前我使用1.7版本 3)如果我有一个大对象要缓存,我发现序列化和反序列化在Ignite中需

  • 我的客户端代码看起来是这样的(Cache只是一个没有属性的可序列化类): 我现在的问题是:使用这段代码,我得到了一个ClassNotFoundError,它试图将东西放到复制的映射或常规映射中,但在专用的Hazelcast服务器(成员)中,而不是在客户端。 每当我从客户端配置中删除近缓存配置时,所有的工作都非常完美,当然,除了我没有近缓存。 我错过了什么?

  • 问题内容: 到现在为止,我主要是利用,,用于构建Web应用程序技术堆栈。关键是,提到的堆栈使用服务器端模式。Web浏览器的主要作用仅限于请求/响应周期(+客户端验证)。数据检索,业务逻辑,接线和验证是服务器端的主要职责。 我对 AngularJS 框架有几个疑问,这些疑问是由我阅读过以下引号引起的: 从 AngularJS教程中 : 对于Angular应用,我们鼓励使用Model-View-Con

  • 关于AngularJS框架,我有几个问题是从我读到的以下引用中得到启发的: 从AngularJS教程: 对于有角度的应用程序,我们鼓励使用Model-View-Controller(MVC)设计模式来解耦代码并分离关注点。 我知道我的问题有些奇怪,但我认为原因是,我对传统的服务器端MVC模式有些敏感。我确信有人已经做了同样的转变。