Twemproxy

概述

twemproxy(发音"two-em-proxy"),是一个memcached和redis协议的快速而轻量级的代理。它的建立主要是减少后端缓存服务器上的连接。基于这一点,协议流水线和分片一起使你能够水平缩放你的分布式缓存架构,它最大的特性和优势就是可以水平缩放分布式缓存架构,如果你的应用内存数据量会不断增加且较大,强烈建议使用它

注意:因为做了分片,所以有一些命令是不支持的,查看不支持的命令列表

特性

  • 速度快
  • 轻量级
  • 维护持久的服务器连接
  • 保持后端服务器连接数低
  • 启用请求和响应的管道
  • 支持代理到多个服务器
  • 同时支持多个服务器池
  • 在多个服务器间自动分片
  • 实现完整的memcached ascii 和 redis协议
  • 服务器配置简单,通过一个YAML文件即可
  • 支持多种哈希模式包括一致性哈希和分配
  • 可以在故障时配置禁止某个节点
  • 通过暴露的统计监听端口提供可观测性
  • 支持Linux,*BSD,OS X 和 SmartOS(Salaris)

部署架构图

 

  • Twemproxy实际上只是一个代理,不保存任何数据,只建立client和Redis实例的通道;
  • 添加缓存数据时通过一定的算法将数据分片进入不同的Redis实例。

用法

客户端是使用非常简单,只需要将原来单机redis的地址改为代理的地址即可,注意同时连接多个代理稍微有些不同,建议使用这种方式

连接多个代理
public  static  void  testMultiTwemproxy(){
         Set<HostAndPort> jedisClusterNodes =  new  HashSet<HostAndPort>();
         //Jedis Cluster will attempt to discover cluster nodes automatically
         jedisClusterNodes.add( new  HostAndPort( "192.168.45.135" 22122 ));
         jedisClusterNodes.add( new  HostAndPort( "192.168.45.136" 22122 ));
         JedisCluster jc =  new  JedisCluster(jedisClusterNodes);
         for  ( int  i =  0 ; i <  10000 ; i++) {
             String key =  "singlekey"  + i;
             jc.set(key,  "singleValue"  + i);
             System.out.println(jc.get(key));
         }
         String value = jc.get( "foo" );
     }
连接单个代理
public  static  void  testSingleProxy()  throws  Exception{
         Jedis jedis =  new  Jedis( "192.168.45.136" 22122 );
         for  ( int  i =  0 ; i <  10000000 ; i++) {
             try  {
                 String key =  "testkey"  + i;
                 jedis.set(key,  "value"  + i);
                 System.out.println(jedis.get(key));
                 Thread.sleep( 5 );
             catch  (Exception e) {
                 e.printStackTrace();
                 Thread.sleep( 1000 );
                 i--;
             }
         }
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值