笔记系列之EVCache

EVCache是Netflix开发的一个开源、高性能的分布式内存缓存系统,基于Memcached和Spymemcached实现。它支持短暂的数据存储,具备高吞吐量和低延迟,适合对数据强一致性的场景。EVCache能线性扩展,可在短时间内完成扩展和负载均衡。本文介绍了EVCache的架构、特性、应用以及安装和开发步骤。
摘要由CSDN通过智能技术生成

EVCache介绍

它是一个开源、快速的分布式缓存,是基于Memcached的内存存储和Spymemcached客户端实现的,是由知名公司Netflix开发的,命名还是挺有意思的,各个英文都有具体含义

E:Ephemeral,数据存储是暂时的,有自身的存活时间

V:Volatile,数据可以在任何时候消息

Cache:内存型键值对存储

看一下架构图,这个图网上很多教程都会有所展现:

 

 其中:

  • Rend服务:它是一个代理服务,是用GO开发的,能够高性能的处理开发
  • Memcached:基于内存的键值对缓存服务器
  • Mnemonic:基于硬盘的嵌入式键值对存储服务器,封装了RocksDB

来看一下官网提供的一些数据解析:

  • EVCache集群在峰值每秒可以处理200KB的请求Netflix自己的生产服务器部署的EVCache经常要处理每秒3000w的请求,存储数十亿个对象,跨数千台Memcached服务器,整个EVCache集群每天处理近2万亿的请求量
  • EVCache集群相应平均延时大约是1-5ms。最多不会超过20ms
  • EVCache集群的缓存命名率在99%左右

整体来看,该缓存在处理请求上的情况还是很可观的


EVCache的应用 

应用场景

EVCache适合对数据强一致性要求过高要求的场景 

扩展性

EVCache是线性扩展,最快可以在一分钟之内完成扩展,而且在未来几分钟内完成负载均衡和缓存预热

部署方式

EVCache支持两种部署方式:单机和高可用区部署


EVCache的安装和开发 

因为Netflix没有开源的EVCache,所以这里面就采用Memcached作为服务器

安装Memcached

linux安装

1、下载插件

yum install libevent libevent-devel gcc-c++

2、下载安装包,并上传到服务器

下载连接:http://memcached.org/latest

3、解压并进入根目录

#解压
tar -zxvf memcached-1.6.12.tar.gz
#进入目录
cd memcached-1.6.12
#配置
./configure --prefix=/usr/memcached
#编译
make
#安装
make install

4、启动服务

#在当前目录不用动,直接运行,后面的参数根据自己环境配置一下即可
./memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /opt/memcached.pid

#-d 选项是启动一个守护进程 
#-m 是分配给Memcache使用的内存数量,单位是MB,我这里是10MB
#-u 是运行Memcache的用户,我这里是root 
#-l 是监听的服务器IP地址,我这里指定了服务器的IP本地地址127.0.0.1
#-p 是设置Memcache监听的端口,默认是11211,我这里也就直接用了,最好是1024以上的端口 
#-c 选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定 
#-P 是设置保存Memcache的pid文件,我这里是保存在/opt/memcached.pid

5、查看进程是否存在

ps -ef|grep memcached

 看到有一个和上面启动命令一样的进程回显,就说明启动成功了

Windows安装

windows安装就很简单了,首先要开启telnet客户端,然后再下载Memcached二进制文件,执行启动即可:

文件下载:http://s3.amazonaws.com/downloads.northscale.com/memcached-win32-1.4.4-14.zip

解压后启动命令:memcached.exe -d start

有些童鞋这个时候会报错:failed to start service

解决方案:运行命令:memcached.exe -d install,因为要先安装,然后再执行启动命令即可

验证方式:打开cmd,执行telnet 127.0.0.1 11211,看看是否进入到客户端(小黑屏),如果进入小黑屏说明启动完成

开发EVCache

我使用的环境是windows环境

 1、添加pom


        <dependency>
            <groupId>com.netflix.evcache</groupId>
            <artifactId>evcache-client</artifactId>
            <version>4.139.0</version>
        </dependency>

        <dependency>
            <groupId>net.spy</groupId>
            <artifactId>spymemcached</artifactId>
            <version>2.12.3</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.eureka</groupId>
            <artifactId>eureka-client</artifactId>
            <version>1.5.6</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.spectator</groupId>
            <artifactId>spectator-nflx-plugin</artifactId>
            <version>0.80.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.spectator</groupId>
            <artifactId>spectator-api</artifactId>
            <version>0.80.1</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.rxjava</groupId>
            <artifactId>rxjava-core</artifactId>
            <version>0.20.7</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.servo</groupId>
            <artifactId>servo-core</artifactId>
            <version>0.12.25</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>annotations</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.nebula</groupId>
            <artifactId>nebula-core</artifactId>
            <version>4.0.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.archaius</groupId>
            <artifactId>archaius2-core</artifactId>
            <version>2.3.13</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.archaius</groupId>
            <artifactId>archaius-aws</artifactId>
            <version>0.6.0</version>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <dependency>
            <groupId>io.reactivex</groupId>
            <artifactId>rxjava</artifactId>
            <version>1.3.8</version>
        </dependency>

2、编写main方法

public class EVCacheDemo {
    public static void main(String[] args) throws EVCacheException {
        String evcacheServer = System.getenv("EVCACHE_SERVER");
        if(evcacheServer == null){
            evcacheServer="SERVERGROUP1=127.0.0.1:11211";
        }
        System.setProperty("EVCACHE_1.use.simple.node.list.provider", "true");
        System.setProperty("EVCACHE_1-NODES", evcacheServer);
        EVCache evCache = new EVCache.Builder().setAppName("EVCACHE_1").build();
        // s:key t :value i:ttl
        evCache.set("name","caobing",10);
        String v = evCache.get("name");
        System.out.println(v);
    }
}

3、启动观察日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值