当前位置: 首页 > news >正文

pika:适用于大数据量持久化的类redis组件|简介及安装(一)

文章目录

  • 0. 引言
  • 1. pika简介
  • 2. pika安装
  • 3. pika设置开机自启
  • 4. pika主从搭建
  • 5. pika哨兵模式实现自动容灾
  • 总结

0. 引言

最近因为公司中用到pika组件,于是将研究过程和理解进行系统记录,以供后续参考。

1. pika简介

pika是360开发的一款国产类redis的非关系型数据库,主要用来解决redis在大内存下产生的启动恢复时间长、一主多从代价大、缓存区容易写满等问题。适用于大数据量下的数据查询,比如日志、汇总数据、各种全量数据等。

需要注意的是pika是类redis的,也就意味着它兼容redis的大部分指令和客户端

其支持的客户端可以在github源码库中查看到,以java为例,比较常用的redis客户端jedis,redission都支持pika
源码库地址:https://github.com/OpenAtomFoundation/pika/wiki/%E6%94%AF%E6%8C%81%E7%9A%84%E8%AF%AD%E8%A8%80%E5%92%8C%E5%AE%A2%E6%88%B7%E7%AB%AF

这就意味着,对于pika的客户端对接和使用,可以直接参考redis

在这里插入图片描述
pika和redis一样,同样支持5种数据类型string、hash、list、set、zset。针对各数据结构的指令支持情况可见下图
在这里插入图片描述
更多可见官方对pika 支持的redis接口及兼容情况的描述
https://github.com/OpenAtomFoundation/pika/wiki/pika-%E6%94%AF%E6%8C%81%E7%9A%84redis%E6%8E%A5%E5%8F%A3%E5%8F%8A%E5%85%BC%E5%AE%B9%E6%83%85%E5%86%B5

pika特性

  • 协议兼容:完全兼容 Redis 协议,且极力追求高性能、大容量、低成本、大规模
  • 数据结构:支持 Redis 的常用数据结构 String、Hash、List、Zset、Set、Geo、Hyperloglog、Pubsub、Bitmap、Stream、ACL etc
  • 冷热数据:对热数据做缓存,将全量数据持久化存储到 RocksDB,并且实现冷热分级存储
  • 极大容量:相比于 Redis 的内存存储方式,Pika 支持百 GB 的数据量级,能极大减少服务器资源占用,增强数据的可靠性
  • 部署方式:单机主从模式(slaveof)和 Codis 集群模式,扩缩容简单
  • 迁移简单:不用修改代码即可平滑从 Redis 迁移到 Pika
  • 便于运维:完善的运维命令文档

2. pika安装

下面我们针对pika单机版的安装来进行详细叙述

1、下载安装包,这里我选择了3.5.3版本,tar.gz压缩版中只有一个pika执行文件,缺少配置文件和工具包,所以选择bz2版更加方便
下载地址

在这里插入图片描述

2、解压bz2格式的需要提前安装一个bzip2工具

yum install -y bzip2

3、创建个路径用来安装pika, 然后解压安装包

mkdir /data/pika
tar -xvf pika-linux-x86_64-v3.5.3.tar.bz2

解压后可以看到有一个output路径
在这里插入图片描述

4、我们修改一下配置文件中的配置项

thread-num : 4 # 调整为cpu核数值
thread-pool-size : 12 # 一般该值为thread-num的1.5倍,这里我没有调整,直接使用的默认值log-path : /data/pika/output/log/ # 日志文件路径,指定为绝对路径,防止因执行路径不同导致的文件变化
db-path : /data/pika/output/db/  # 数据文件路径,指定为绝对路径,防止因执行路径不同导致的文件变化


pika中的各配置项,可以参加官方说明
https://github.com/OpenAtomFoundation/pika/wiki/pika-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E

在这里插入图片描述

同时pika的相关参数调优可以参考https://github.com/OpenAtomFoundation/pika/discussions/1970?sort=old

在这里插入图片描述

5、可以通过如下指令手动启动pika

./output/bin/pika -c ./output/conf/pika.conf

可以用各类redis客户端对pika进行连接测试
在这里插入图片描述

至此,pika就安装成功了,但在服务器中运行时,为了防止断电、重启等导致的宕机,我们还要设置pika的开机自启

3. pika设置开机自启

1、创建pika.service文件

vi /usr/lib/systemd/system/pika.service

并编辑内容

[Unit]
Description=pika server
Requires=network.target
After=network.target[Service]
Type=forking
WorkingDirectory=/data/pika/output
ExecStart=/data/pika/output/bin/pika -c /data/pika/output/conf/pika.conf
Restart=always[Install]
WantedBy=multi-user.target

2、创建pika.service.d目录

mkdir /etc/systemd/system/pika.service.d

创建limit.conf文件

cat > /etc/systemd/system/pika.service.d/limit.conf <<EOF
# If you need to change max open file limit
# for example, when you change maxclient in configuration
# you can change the LimitNOFILE value below
# see "man systemd.exec" for information[Service]
LimitNOFILE=65536
EOF

3、最后因为要后台启动pika, 我们还需要修改pika中的配置项

vi /data/pika/output/conf/pika.conf

daemonize设置为yes,即让pika允许后台启动
在这里插入图片描述
4、接下来就可以通过systemctl指令启动、停止pika服务了

# 停止
systemctl stop pika
# 启动
systemctl start pika
# 重启
systemctl restart pika
# 检查启动状态
systemctl status pika

5、添加到开机自启

systemctl enable pika

6、如果启动过程有问题,可以查看output/log下的日志文件进行排查

4. pika主从搭建

pika的主从搭建很简单,与redis类似,只需要在从节点中增加一个slaveof配置即可

1、首先我们先按照上诉步骤,再搭建一个节点

2、然后修改该节点配置文件

port : 9222 # 我这里直接在同一台服务器启动的从节点,所以调整一下端口,如果在不同服务器则不用调整
log-path : /data/pika/output2/log/ #  声明日志文件路径
db-path : /data/pika/output2/db/ # 声明数据文件路径slaveof : 192.168.x.x:9221 # 主节点ip和端口 # 该配置项只在从节点配置,配置后从节点会从该主节点同步数据

在这里插入图片描述
其他与主从相关的配置,大家可以根据需要调整

# sync 主从同步时候从库执行主库传递过来命令的线程数量
sync-thread-num : 6# 同步验证密码, 用于slave(从库)连接master(主库)请求同步时进行验证, 该参数需要与master(主库)的requirepass一致
masterauth :# 主从同步流量控制的的窗口,主从高延迟情形下可以通过提高该参数提高同步性能。默认值9000最大值90000。
sync-window-size : 9000# 处理客户端连接请求的最大缓存大小,可配置的数值为67108864(64MB) 或 268435456(256MB) 或 536870912(512MB)
# 默认是268435456(256MB),需要注意的是主从的配置需要一致。
# 单条命令超过此buffer大小,服务端会自动关闭与客户端的连接。
max-conn-rbuf-size : 268435456

3、启动从节点,查看其log/pika.INFO日志可以看到数据同步记录
在这里插入图片描述
至此主从节点就搭建完了,要实现完整的容灾,还可以搭建哨兵模式

5. pika哨兵模式实现自动容灾

根据官方的描述,pika哨兵模式与redis完全一致,所以这里不再累诉,大家可以参考这篇文章:

redis进阶:哨兵模式工作原理及搭建: https://wu55555.blog.csdn.net/article/details/127797798

总结

至此pika安装就完成了,下节我们来看看如何在java项目中集成pika


http://www.mrgr.cn/news/79477.html

相关文章:

  • Qt之第三方库‌QXlsx使用(三)
  • shell脚本实战案例
  • UE_C++ —— 数据类型
  • 【动手学电机驱动】STM32-MBD(1)安装 STM32 硬件支持包
  • 使用IntelliJ IDEA开发Gradle插件并发布到本地
  • openharmony5.0版本源码一二级目录概览
  • 【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(三)
  • Scala-隐式转换
  • “切片赋值”创建列表批量操作“新”方法(Python)
  • JDK17 CompletableFuture
  • shell自动显示当前git的branch
  • [机器学习] 监督学习之线性回归与逻辑回归
  • C++ 完美转发和左值右值
  • 利用高德地图API,如何在PHP与vue3中实现地图缩放功能
  • UE5.5 Geometry库平面切割原理分析
  • Vue3+Vite+ElementPlus 构建 笔记
  • 深入理解 Spring MVC 中的 @RequestBody 注解
  • AI职位对项目经验有哪些具体要求?
  • 【力扣】647.回文子串
  • 【论文相关】期刊/会议 信息检索——IEEE各期刊投稿要求(待完善)