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

news/2024/12/12 23:33:12/

文章目录

  • 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/  # 数据文件路径,指定为绝对路径,防止因执行路径不同导致的文件变化pidfile : /data/pika/output/pika.pid #  pid文件目录
dump-path : /data/pika/output/dump/ # dump目录设置, bgsave后生成的文件将存放在该目录中
db-sync-path : /data/pika/output/dbsync/ # 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.ppmy.cn/news/1554613.html

相关文章

linux 架构详解

Linux 是一种开源的操作系统内核&#xff0c;最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核&#xff0c;用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…

循环神经网络(RNN)原理及实现

一、引言 在深度学习领域&#xff0c;循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类具有独特结构和强大功能的神经网络模型。与传统的前馈神经网络不同&#xff0c;RNN 能够处理序列数据&#xff0c;如时间序列数据、文本数据等&#x…

【RocketMQ 源码分析(一)】设计理念与源码阅读技巧

RocketMQ 的设计理念与源码阅读技巧 一、设计理念二、源码设计三、源码阅读技巧 一直想仔细仔细看看这个 RocketMQ 的源码&#xff0c;学学它的设计思想和编码风格&#xff0c;没准在以后自己在设计和编码的时候有思考的方向。这是专栏的第一篇 —— 介绍下 RocketMQ 的一些设计…

硬件设计 | Altium Designer软件PCB规则设置

基于Altium Designer&#xff08;24.9.1&#xff09;版本 嘉立创PCB工艺加工能力范围说明-嘉立创PCB打样专业工厂-线路板打样 规则参考-嘉立创 注意事项 1.每次设置完规则参数都要点击应用保存 2.每次创建PCB&#xff0c;都要设置好参数 3.可以设置默认规则&#xff0c;将…

图像边缘检测示例(综合利用阈值分割、数学形态学和边缘检测算子)

一、问题 读入一副灰度图像&#xff08;如果是彩色图像&#xff0c;可以先将其转化为灰度图像&#xff09;&#xff0c;然后提取比较理想的灰度图像边缘。这里以moon.tif为例。 二、算法 大家一开始容易想到直接利用MATLAB的内置函数edge并采用不同边缘提取算子进行边缘提取&a…

如何选择安全、可验证的技术?

澳大利亚信号局的澳大利亚网络安全中心 (ASD 的 ACSC) 发布了一份指导文件&#xff0c;题为《选择安全和可验证的技术》&#xff0c;旨在帮助组织在采购软件&#xff08;专有或开源&#xff09;、硬件&#xff08;例如物联网设备&#xff09;和云服务&#xff08;SaaS、MSP 服务…

/usr/local/go/bin/go: cannot execute binary file: Exec format error

现象&#xff1a;ubuntu中安装go软件环境&#xff0c;报上述错误 原因&#xff1a;系统与软件不适配 解决&#xff1a;查看本系统的版本 找到x86-64对应的go版本即可

数据结构--链表和单链表详解及实现

一.前言 数据结构思维导图如下&#xff0c;灰色标记的是之前讲过的&#xff0c;本文将带你走近单链表(红色标记部分)&#xff0c;希望大家有所收获&#x1f339;&#x1f339; 二.链表的定义和概念 在讲单链表之前&#xff0c;我们先学习一下链表 2.1 链表的定义 链表是一种…