天天看点

分布式本地缓存的设计distributed-local-caching:

distributed-local-caching:

存在的原因

在软件开发行业,数据的存储,一般分为持久化(mysql,postgresql,elasticsearch,hbase,mongo),分布式缓存(redis,Memcached),以及本地缓存(guava代表的)。而本地缓存,是讲数据存储在每台服务器的内存中,这样常常涉及到数据的更新的问题。而分布式本地缓存就是来解决这个问题

实现原理

分布式本地缓存的设计distributed-local-caching:

note:

* 生产者可能是消费者

* 消息是通过Fanout exchange实现广播的

* 数据的存储通过guava的cache实现的

例子

生产者:

“` java

@Before

public void initProductMessageClient() throws IOException{

LocalCacheClientConfiguration configuration = new LocalCacheClientConfiguration();
    configuration.setAddress("128.0.0.1:5672");
    configuration.setvHost("/dev");
    configuration.setUser("user");
    configuration.setPwd("pwd");
    productMessageClient = new ProductMessageClient(configuration);
}

@Test
public void testSendRemoveDataMessage() throws IOException {

    while (true) {
        productMessageClient.sendRemoveDataMessage("111");
    }
}
           

“`

消费者:

“` java

@Before

public void initProductMessageClient() throws IOException {

LocalCacheClientConfiguration configuration = new LocalCacheClientConfiguration();
    configuration.setAddress("128.0.0.1:5672");
    configuration.setvHost("/dev");
    configuration.setUser("user");
    configuration.setPwd("pwd");
    configuration.setQueueName("lc-queue");
    configuration.setQosCount(5);

    consumerMessageClient = new ConsumerMessageClient(new LocalCacheConfiguration(), configuration);
}

@Test
public void testConsumer() throws IOException {

    consumerMessageClient.consumer();

    try {
        Thread.sleep(10000000);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
           

“`

github地址

项目地址

有错的地方,欢迎大家指出来。

继续阅读