云服务器内容精选
-
使用约束 内存加速中创建的GeminiDB Redis实例规格为1U4GB、2U8GB、4U16GB,主备版形态时,则实例免费;免费时长为3个月,其他规格需要收费。 一个IAM账号一个区域可以创建三个公测实例。 支持创建的GeminiDB Redis实例规格变更,但是变更后GeminiDB Redis实例收费。 解除映射后,需要及时删除GeminiDB Redis实例,否则会对GeminiDB Redis实例收费。
-
注意事项 目前仅支持MySQL到GeminiDB Redis接口Hash类型的转换。 新规则的Redis键前缀+键分隔符不能是已有规则的Redis键前缀+键分隔符的子前缀,反之亦然。例如新规则的前缀为 "pre1:",键分隔符为 "," ,老规则前缀为 "pre1",分隔符为":", 这种情况不允许创建新规则。 如果修改映射规则中MySQL实例的表名后,则需要重新配置映射规则。 暂不支持对MySQL实例表的TRUNCATE TABLE、DROP TABLE、DROP DATABASE等语句的识别及同步。 如果对映射规则中键(Key)字段中的一个或多个字段执行改名、删除等操作时,会使映射规则失效。
-
内存加速概述 内存加速是GeminiDB Redis为了优化“传统被动缓存方案”而推出的功能,它可以让用户通过界面配置规则的形式,自动缓存MySQL的数据,加速MySQL的访问。 如下图图1所示,“传统被动缓存方案”需要用户自行开发代码把MySQL中的数据写入到缓存中,存在效率低、不可靠的缺点。而采用云数据内存加速的“全自动主动缓存方案”,支持界面可视化配置,配置完成后即可实现数据自动同步。同时还支持数据过滤及过期等功能,极大提高了开发效率及数据的可靠性。 图1 内存加速 父主题: 内存加速
-
请求示例 清除指定DB的数据 PUT https://{endpoint}/v3/0549b4a43100d4f32f51c01c2fe4acdb/instances/e73893ef73754465a8bd2e0857bbf13ein12/databases { "action" : "flush", "db_id" : 1 } 清除所有数据 PUT https://{endpoint}/v3/0549b4a43100d4f32f51c01c2fe4acdb/instances/e73893ef73754465a8bd2e0857bbf13ein12/databases { "action" : "flush" }
-
响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 job_id String 任务ID。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。 状态码: 500 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置偏移量,表示从查询到的大Key列表偏移offset条数据后查询对应的大Key信息。 取值大于或等于0。不传该参数时,查询偏移量默认为0,表示从第一条大Key开始查询。 limit 否 Integer 查询个数上限值。取值范围:1~100。不传该参数时,默认查询前100条大Key。 key_types 否 Array of strings 大大Key的类型,一个字符串列表,支持"string"、"hash"、"zset"、"set"、"list"、"stream"六种类型。
-
响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 keys Array of 表5 objects 查询到的大Key列表。 count Integer 大Key的总数。 表5 BigKeysInfoResponseBody 参数 参数类型 描述 db_id Integer 大Key所在的DB。 key_type String 大Key类型。 key_name String 大Key名。 key_size Integer 大Key的长度。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。
-
性能测试结果 基于上述样本,预先注入1TB+数据并进行压力测试,测试结果如下: 数据压缩率: 写入1.1TB数据(约38亿条),压缩后数据占用约为155GB,数据压缩比约为13.8%; 性能表现: 维持业务总QPS达到约160w,此时读请求总流量约为1.5Gb/s,实例CPU利用率在60%-70%。 平均时延约为0.7ms,P99时延约为1.77ms,P9999(四个9)长尾约为8.03ms。 本次测试结果表明,在大规模RTA场景,GeminiDB Redis有稳定的时延性能,同时基于数据压缩和支持计算/存储独立选配的特性,非常适合作为广告业务的KV数据库选型。 父主题: GeminiDB Redis接口广告RTA场景性能数据
-
性能测试结果 本章介绍GeminiDB Redis性能测试结果,根据上述测试方法操作,展示在各种数据模型、测试场景、Workload模型组合下的性能指标。当前性能白皮书仅呈现中小规格并发能力下的数据库性能数据,如需更高的并发能力,可水平或垂直升级数据库规格。 总数据量小于内存场景下的测试数据请参见表1。 总数据量大于内存场景下的测试数据请参见表2。 表1 总数据量小于内存场景测试数据 实例规格 测试模型 Workload模型 QPS(次/秒) Average Latency(毫秒) P99 Latency(毫秒) 4U*3节点 value_length=100字节 clients=90 100% Write 125590 0.66 1.85 value_length=100字节 clients=105 100% Read 139741 0.62 1.51 value_length=100字节 clients=90 50% Read+50% Write 125620 Read:0.56 Read:1.32 Write:0.55 Write:1.30 8U*3节点 value_length=100字节 clients=128 100% Write 216392 0.62 1.92 value_length=100字节 clients=128 100% Read 202970 0.62 1.89 value_length=100字节 clients=128 50% Read+50% Write 212052 Read:0.63 Read:1.94 Write:0.63 Write:1.92 表2 总数据量大于内存场景测试数据 实例规格 测试模型 Workload模型 QPS(次/秒) Average Latency(毫秒) P99 Latency(毫秒) 4U*3节点 value_length=100字节 clients=75 100% Write 123942 0.62 1.30 value_length=100字节 clients=96 100% Read 125351 0.63 1.54 value_length=100字节 clients=96 50% Read+50% Write 122485 Read:0.64 Read:1.65 Write:0.64 Write:1.61 8U*3节点 value_length=100字节 clients=120 100% Write 196596 0.62 2.02 value_length=100字节 clients=120 100% Read 187716 0.62 1.90 value_length=100字节 clients=120 50% Read+50% Write 197097 Read:0.62 Read:1.94 Write:0.62 Write:1.94 注:clients是连接数,对应memtier命令中t和c字段的乘积。 父主题: GeminiDB Redis接口通用性能数据
-
测试步骤 注入测试数据 测试前,生成并注入数据库测试数据。基于测试模型三种类型的分布,对三种数据类型进行如下配置: hash类型 key:34位字符,使用字符串前缀+9位数字,数字由1亿-9亿连续,以控制数据总量和热数据分布。 field-value共注入10对,其中field为10位字符,value为20-80位随机字符,注入测试数据时取均值50位。 构造并注入约8亿个key: memtier_benchmark -s ${ip} -a $(passwd} -p ${port} -c 20-t20 -n7500000 -d 32 -key-maximum=3 800000000 -key-minimum =1000000000 --key-pr efix ='cefkljrithuir123894873h4523blj4b2jkjh2iw13b nfdhsbnkfhsdjkh' --key-pattern=P:P--ratio=1:0 -pipelire=100 string类型 key:68位字符,使用字符串前缀+10位数字,数字由10亿-38亿连续,以控制数据总量和热数据分布。 value:注入32位随机字符。 构造并注入约28亿个key: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 20 -n 2500000 --command='hset __key__ mendke398d __data__ mebnejkehe __data__ fmebejdbnf __data__ j3i45u8923 __data__ j43245i908 __data__ jhiriu2349 __data__ 21021034ji __data__ jh23ui45j2 __data__ jiu5rj9234 __data__ j23io45u29 __data__' -d 50 --key-maximum=900000000 --key-minimum=100000000 --key-prefix='ewfdjkff43ksdh41fuihikucl' --command-key-pattern=P --pipeline=100 string类型 key:19位字符,使用字符串前缀+9位数据,数字由1亿到3亿连续,以控制数据总量和热数据分布。 value:500 – 2000位随机字符,注入测试数据时取均值1250位。 构造并注入约4亿个key: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 20 -n 520000 -d 1250 --key-maximum=300000000 --key-minimum=100000000 --key-prefix='miqjkfdjiu' --key-pattern=P:P --ratio=1:0 --pipeline=100 数据注入完成后,观察其key个数为3,809,940,889个key(约38亿)。观察GeminiDB Redis控制台中使用数据总量,计算GeminiDB Redis的数据压缩比。压缩后的存储容量约为155GB,即压缩比约为13.8%。 受memtier_benchmark数据平铺时数据生成影响,生成数据在40亿条左右,各类型间数据分布不受影响。 memtier_benchmark工具构造随机字符串中连续字符较多,因此压缩比偏低。根据经验,实际生产数据压缩比一般在30%-50%左右,仍可以达到很好的压缩效果。 压测命令 在三台ECS上对GeminiDB Redis实例执行多个压测任务,压测任务分别为: ECS1上,对类型一进行hgetall查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --command='hgetall __key__' --key-maximum=600000000 --key-minimum=200000000 --key-prefix='ewfdjkff43ksdh41fuihikucl' --out-file=./output_filename 对类型二进行get查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 70 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --key-maximum=2400000000 --key-minimum=1000000000 --key-prefix='cefkljrithuin123894873h4523bhj4b2jkjh2iu13bnfdhsbnkfhsdjkh' --ratio=0:1 --out-file=./output_filename 对类型三进行get查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 10 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --key-maximum=300000000 --key-minimum=100000000 --key-prefix='miqjkfdjiu' --ratio=0:1 --out-file=./output_filename 其中,连接数(c、t两个参数乘积)通过调整各个压测实例的client数量及配置使整体达到160w QPS,同时读请求流量1.5Gb/s。保持该业务流量,评估GeminiDB Redis的性能表现。
-
测试环境 本次测试使用的GeminiDB Redis集群规格和弹性云服务器(Elastic Cloud Server,简称ECS)规格如下: GeminiDB Redis规格 局点 上海一 可用区类型 可用区一/二/三混合部署 节点CPU规格 16 vCPUs 节点数量 20 实例总容量 2 TB ECS规格: 可用区类型 AZ1 规格 c7.4xlarge.2,3台 CPU 16vCPUs 内存 32GiB 操作系统 CentOS 8.2 64bit
-
测试指标 本次模拟的广告业务场景(RTA)业务规模大致抽象为:1TB数据量、160w QPS、1.5Gbit/s带宽。 数据样本 本次测试使用的数据样本主要分为以下三种: 类型 Key Value Hash 34位字符 10对field(10位)-value(20-80位) String 68位字符 32位随机字符 String 19位字符 500 – 2000位随机字符 其中,需要存储在Redis中的Key总数约为40亿条。各类型数据占比约为2:7:1,高频访问的数据约占总体的50%。 评估指标 对于上述测试模型及场景,记录各数据库操作的如下测试指标: 指标缩写 指标描述 QPS 每秒执行的请求数,单位为次/秒。 Avg Latency(ms) 请求的平均时延,代表GeminiDB Redis整体性能表现。 P99 Latency(ms) 请求的P99时延,是比较严格的时延指标,表示99%的请求执行时间都小于该值。 P9999 Latency(ms) 请求的P9999时延,是非常严格的时延指标,表示99.99%的请求执行时间小于该值,仅少量尾部请求超过该值。
-
测试环境 区域:华北-北京四 可用区:可用区1 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择c6.4xlarge.2,16U32GB,操作系统镜像使用CentOS 7.5 64位版本。 被测试实例的配置:每个实例均包含3个节点。 被测试实例的规格:覆盖以下规格类型,详见表1。 表1 实例规格 编号 规格 cluster1 4U*3节点 cluster2 8U*3节点
-
测试工具 本次测试采用Redis Labs推出的多线程压测工具memtier_benchmark,具体使用方法请参见memtier_benchmark。下面就使用到的memtier_benchmark的部分功能进行简单介绍。 Usage: memtier_benchmark [options] A memcache/redis NoSQL traffic generator and performance benchmarking tool. Connection and General Options: -s, --server=ADDR Server address (default: localhost) -p, --port=PORT Server port (default: 6379) -a, --authenticate=PASSWORD Authenticate to redis using PASSWORD -o, --out-file=FILE Name of output file (default: stdout) Test Options: -n, --requests=NUMBER Number of total requests per client (default: 10000) -c, --clients=NUMBER Number of clients per thread (default: 50) -t, --threads=NUMBER Number of threads (default: 4) --ratio=RATIO Set:Get ratio (default: 1:10) --pipeline=NUMBER Number of concurrent pipelined requests (default: 1) --distinct-client-seed Use a different random seed for each client --randomize Random seed based on timestamp (default is constant value) Object Options: -d --data-size=SIZE Object data size (default: 32) -R --random-data Indicate that data should be randomized Key Options: --key-prefix=PREFIX Prefix for keys (default: memtier-) --key-minimum=NUMBER Key ID minimum value (default: 0) --key-maximum=NUMBER Key ID maximum value (default: 10000000)
-
测试步骤 以4U*3节点数据库实例为例: 1.首先进行总数据量小于内存大小场景下的写入,读取,以及同时写入和读取操作,并记录各操作的QPS、Avg Latency、P99 Latency。各个workload模型的性能指标的方法如下所示: 测试模型:100% Write模型 使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入60,000,000次长度为100字节的数据,其中数据为各client采用不同seed在[1, 60,000,000]范围内随机生成。基于key的给定范围,本次写入总数据大小小于数据库集群的内存容量。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 1000000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=60000000 --key-minimum=1 --key-prefix= --ratio=1:0 --out-file=./output_filename 测试模型:100% Read模型 使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发均匀随机读取60,000,000次数据,读取key范围在[1, 60,000,000]内。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 1000000 --random-data --randomize --distinct-client-seed --key-maximum=60000000 --key-minimum=1 --key-prefix= --ratio=0:1 --out-file=./output_filename 测试模型:50% Read+50% Write模型 使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入和读取60,000,000次的数据,写入和读取key范围在[1, 60,000,000]内,同时写入和读取操作比例为1:1。基于key的给定范围,本次写入和读取总数据大小小于数据库集群的内存容量。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 1000000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=60000000 --key-minimum=1 --key-prefix= --ratio=1:1 --out-file=./output_filename 2. 在数据库中增加超过数据库集群内存容量的数据:使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入20,000,000次长度为100字节的数据,其中数据为各client采用不同seed在[60,000,001, 780,000,000]范围内随机生成,同时通过设置pipeline参数,增加数据写入效率。基于key的给定范围以及总共写入次数,本次写入总数据大小大于数据库集群的内存容量。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 20000000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=780000000 --key-minimum=60000001 --pipeline=100 --key-prefix= --ratio=1:0 --out-file=./output_filename 3. 数据库存储数据量大于数据库集群内存容量条件下,进行写入、读取、同时写入和读取操作,并记录各操作的QPS、Avg Latency、P99 Latency。各个workload模型的性能指标的方法如下所示: 100% Write模型 使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入500,000次长度为100字节的数据,其数据为各client随机生成,key范围在[1, 780,000,000]内。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 500000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=780000000 --key-minimum=1 --key-prefix= --ratio=1:0 --out-file=./output_filename 100% Read模型 使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发均匀随机读取500,000次数据,key范围在[1, 780,000,000]内。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 500000 --random-data --randomize --distinct-client-seed --key-maximum=780000000 --key-minimum=1 --key-prefix= --ratio=0:1 --out-file=./output_filename 50% Read+50% Write模型 使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入和读取500,000次的数据,其数据为各client随机生成,key范围在[1, 780,000,000]内。 ./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 500000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=780000000 --key-minimum=1 --key-prefix= --ratio=1:1 --out-file=./output_filename
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格