twemproxy的配置信息填写在nutcracker.yml之中,默认的查找位置是在conf目录下,也可以通过-c参数指定。
nutcracker.yml的例子:
redis1:
listen: 10.18.129.48:11299
redis: true
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
timeout: 400
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 10.18.129.48:6379:1
- 10.18.129.48:9898:1
详细的配置信息如下:
listen
twemproxy监听的端口。可以以ip:port或name:port的形式来书写。
hash
可以选择的key值的hash算法:
>one_at_a_time
>md5
>crc16
>crc32 (crc32 implementation compatible with libmemcached)
>crc32a (correct crc32 implementation as per the spec)
>fnv1_64
>fnv1a_64
>fnv1_32
>fnv1a_32
>hsieh
>murmur
>jenkins
如果没选择,默认是fnv1a_64。
hash_tag
hash_tag允许根据key的一个部分来计算key的hash值。hash_tag由两个字符组成,一个是hash_tag的开始,另外一个是hash_tag的结束,在hash_tag的开始和结束之间,是将用于计算key的hash值的部分,计算的结果会用于选择服务器。
例如:如果hash_tag被定义为”{}”,那么key值为"user:{user1}:ids"和"user:{user1}:tweets"的hash值都是基于”user1”,最终会被映射到相同的服务器。而"user:user1:ids"将会使用整个key来计算hash,可能会被映射到不同的服务器。
distribution
存在ketama、modula和random3种可选的配置。其含义如下:
ketama
ketama一致性hash算法,会根据服务器构造出一个hash ring,并为ring上的节点分配hash范围。ketama的优势在于单个节点添加、删除之后,会最大程度上保持整个群集中缓存的key值可以被重用。
modula
modula非常简单,就是根据key值的hash值取模,根据取模的结果选择对应的服务器。
random
random是无论key值的hash是什么,都随机的选择一个服务器作为key值操作的目标。
timeout
单位是毫秒,是连接到server的超时值。默认是永久等待。
backlog
监听TCP 的backlog(连接等待队列)的长度,默认是512。
preconnect
是一个boolean值,指示twemproxy是否应该预连接pool中的server。默认是false。
redis
是一个boolean值,用来识别到服务器的通讯协议是redis还是memcached。默认是false。
server_connections
每个server可以被打开的连接数。默认,每个服务器开一个连接。
auto_eject_hosts
是一个boolean值,用于控制twemproxy是否应该根据server的连接状态重建群集。这个连接状态是由server_failure_limit阀值来控制。
默认是false。
server_retry_timeout
单位是毫秒,控制服务器连接的时间间隔,在auto_eject_host被设置为true的时候产生作用。默认是30000 毫秒。
server_failure_limit
控制连接服务器的次数,在auto_eject_host被设置为true的时候产生作用。默认是2。
servers
一个pool中的服务器的地址、端口和权重的列表,包括一个可选的服务器的名字,如果提供服务器的名字,将会使用它决定server的次序,从而提供对应的一致性hash的hash ring。否则,将使用server被定义的次序。
分享到:
相关推荐
**Twemproxy详解** 1. **基本概念**:Twemproxy,又名Nutcracker,是由Twitter开源的一个轻量级、高性能的代理服务,主要应用于分布式内存存储系统,如Redis和Memcached。它的工作原理是接收来自客户端的命令,转发...
"安装":意味着我们需要了解如何从源码包中构建和安装twemproxy,这通常涉及到编译器、依赖库的安装,以及执行配置脚本和编译命令。 **知识点详解** 1. **Twemproxy简介**:Twemproxy(也称为nutcracker)是一个...
7. **配置管理**:twemproxy的配置文件允许用户定义服务器池,包括每个服务器的权重、超时设置、连接池大小等参数,便于根据实际需求调整缓存系统。 8. **监控与日志**:为了确保系统的稳定运行,twemproxy提供了...
在主从切换时,agent负责更新Twemproxy配置并重启,确保系统的高可用性。尽管如此,仍有改进空间,例如优化主从切换的通知机制,以便更快地识别并处理切换事件。 总结来说,基于Redis的分布式缓存系统通过Twemproxy...
20.3.4 Redis+Twemproxy配置 389 20.3.5 Mysql+Atlas配置 390 20.3.6 Java+Tomcat安装 394 20.3.7 Java+Tomcat逻辑开发 395 20.3.8 Nginx+Lua逻辑开发 401 21 使用OpenResty开发商品详情页 405 21.1 技术选型 407 ...
《Nutcracker(Twemproxy):Twitter开源的C语言代理服务器详解》 Nutcracker,又称为Twemproxy,是Twitter开源的一款轻量级、高性能的代理服务器,专为Memcached和Redis设计,用于提高分布式缓存系统的性能和可...
Worker 进程模型详解在 Nginx 的设计中,Master 进程主要负责接收来自客户端的连接请求,然后将这些请求分发给 Worker 进程处理。Master 进程不直接处理请求,而是通过事件驱动模型(epoll)来监控 Worker 进程的...
**Memcached服务器软件详解** Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。它的工作原理是将数据存储在内存中,以便快速检索,从而实现高速的...
Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 MongoDB聚合、索引及...
- **定义**:代理分片是指通过代理服务器(如Twemproxy、Codis等)来实现数据分片和路由的功能。 - **优点**: - 业务程序无需关心后端Redis实例的具体情况,降低了开发复杂度。 - 维护较为方便,易于实现高可用。...
- **配置文件详解**:Redis的配置文件通常位于安装目录下,名为`redis.conf`。在该文件中可以设置Redis服务器的各种参数,例如监听地址、端口号、密码验证、持久化方式等。例如,通过设置`databases 16`来开启16个...
**Memcached服务器详解** Memcached是一款高性能的分布式内存对象缓存系统,主要用于减轻数据库的负载,提高Web应用的性能。它的工作原理是将数据存储在内存中,通过键值对的形式进行访问,使得数据的读取速度大大...
### Redis运维知识点详解 #### 一、Redis简介与特点 Redis是一种开源的、支持网络通信的、基于内存的键值对存储系统,采用ANSI C语言编写。它提供了丰富的数据结构支持,包括字符串(Strings)、哈希(Hashes)、列表...
#### 二、产品优势详解 **1. 高效、稳定的同步服务** - **全量同步**:NineData在4c8g规格下的全量同步性能相较于阿里云DTS提升了70%,相比Redis-Shake则高出50%。 - **增量同步**:在1c2g规格下,NineData的增量...
### Redis 主从复制、集群与哨兵模式详解 #### 一、Redis 主从复制 **主从复制**是Redis中最基础也是最常用的架构之一。它主要用于实现数据的冗余备份和读写分离。 ##### 1.1 主从模式概述 - **数据库分类**:在...
在 Laravel 框架中,Redis 被广泛用于实现任务队列,它能有效地处理大量异步任务,提升应用...- laravel项目利用twemproxy部署redis集群的完整步骤 这些文章将帮助你更好地理解和实践 Laravel 中的 Redis 集成及优化。