01

业务挑战

随着业务量快速发展,用户对 Redis 这种速查KV缓存型数据库需求越来越高,不仅要快,还要持久化安全。Redis 自身aof 可保证持久化数据,但是随着内存增长,高内存下aof文件过大,bgrewriteof 重写往往会导致业务连接超时等问题产生,同时进行扩容以及分析rdb等也会对系统内存造成挑战,还有重要的一点就是内存太贵了, 用不起用不起~为此Pika 诞生了~360 DBA和基础架构组联合开发的类Redis 存储系统,一种基于硬盘存储的完全兼容Redis协议,解决Redis由于存储数据量巨大而导致内存不够用的容量瓶颈,并且可以像Redis一样,通过slaveof命令进行主从备份,支持全同步和部分同步,同时DBA团队还提供了迁移工具,所以用户不会感知这个迁移的过程,迁移是平滑的。

02

Pika vs Redis

目前360 KV数据库应用中主要包含 Redis和 Pika ,Pika 主要的定位目标并不是取代Redis,而是Redis 的一个补充,是在使用 Redis容量过大的场景下面的一个解决方案,同时用硬盘换内存节约成本。

01 优势

① 容量大:Pika没有 Redis的内存限制, 最大使用空间等于磁盘空间的大小

② 加载db速度快:Pika在写入的时候, 数据是落盘的, 所以即使节点挂了, 不需要rdb或者oplog。Pika重启不用加载所有数据到内存就能恢复之前的数据, 不需要进行回放数据操作

③ 备份速度快:Pika备份的速度大致等同于cp的速度(拷贝数据文件后还有一个快照的恢复过程,会花费一些时间),这样在对于百G大库的备份是快捷的,更快的备份速度更好的解决了主从的全同步问题

02 劣势

由于 Pika是基于内存和文件来存放数据, 所以性能肯定比 Redis低一些, 但是我们一般使用SSD盘来存放数据, 尽可能跟上 Redis的性能。

下面是 Pika 多线程VS Redis 单线程性能压测,在多线程Pika 测试下大部分常用 command性能都可以和 Redis媲美甚至高出。

03

360 Pika使用现状

Pika 目前在360公司内部有2000+的主从实例以及在运行, 公司目前的大部分业务80%以上业务都在使用, 无线浏览器, 花椒, 云盘, 信息流,搜索等等。基于codis的pika集群可支撑百万 qps以及上TB容量,近10套集群也已在搜索/反作弊业务上线使用。同时Pika在公司外部也有大量的使用, 具体可以看 user list: Qihoo360/Pika 当然这只是一部分的使用用户。

04

业务收益

如下图:

05

HULK云平台数据库自动化运维

HULK 云平台是奇虎360应用开发部于2012年10月开始内部开发,并在2013年1月正式推出的供公司内部使用的私有云计算平台,是简单高效的分布式Web服务开发、运行平台。我们把pika服务集成在了 hulk平台中,为用户提供了统一的类redis服务入口。

01 Pika用户端申请

应用可以通过HULK 用户端发起申请Pika新实例,可选择不同套餐ABCD 分别对应不同的存储容量大小最小是10GB,最大是100GB。如需更大存储容量联系DBA进行申请,可以选择单机房或者多机房,架构分为一主多从和机房自洽(多机房共用相同端口独立主从结构)。

02 Pika管理端审核

应用通过 HULK用户端申请 Pika后,DBA可以在 HULK 管理端进行审批操作。

03 Pika管理端操作页面

管理端可进行“新建实例”,“下线实例”,“维护实例”,“修改配置”,“同机房/跨机房切主”,“实例端口扩容”等常用操作。非常方便DBA进行日常运维操作,当实例故障需要处理的时候点“维护”来避免频繁告警;当主从切换后,HULK 自动对“角色”进行甄别刷新;还可以通过“编辑”按钮对数据库参数进行在线编辑;点击“控制台”可以直接登陆对应机器数据库进行操作;同时当整台机器宕机的时候可以通过“端口克隆”来把机器上所有的端口克隆复制到新机器然后报修。

通过lvs 给每个端口挂在读写以及只读vip可供业务选择实现读写分离和负载均衡。

04 Pika监控指标查看

HULK 用户端业务可查看对应端口的监控信息,比如当前容量使用信息/客户端连接信息/访问统计/连接数/内存/cpu/keys等统计信息

05 Pika告警及故障自愈

结合zabbix告警,通过api接口和wonder告警平台发送告警到公司自研交流软件推推以及短信。常见告警通过自愈系统自动进行修复,极大减少人工成本。我们的告警自愈系统可以针对Pika主从复制错误/角色错误/宕机快速恢复主从架构等及时恢复,有效降低了业务影响时间。

06 Pika数据迁移

业务经常因为内存不断增长导致套餐超值无法申请,逐渐转化为 Pika使用,需要由 Redis->Pika。我们在 HULK用户端 Redis DTS 集成了此功能来进行端口间数据迁移,也可实现 Redis数据迁移 [redis/pika 统一为redis数据库类型。

07 Pika升级

当前360已升级大部分版本为3.2.8,部分是最新版本3.3.6,建议升级到3.3.6。

 升级到2.3 升级到3.0

① 扩容端口从库

② 扩容完成后所有从节点执行相关处理逻辑

Pika 26-30主要涉及到bgsave一份数据,然后对备份数据的格式转化,转化时间比看数据量,不过有的无用数据比较多,没compact 的,即使一条也转化的很慢,转化完成后更改替换数据目录启动新版本,然后改identify-binlog-type old ,并且根据info点位同步主从。

③ 从库升级完成后, 切主, 切主后所有节点升级到3.0版本

3.0 升级到 3.2

① 主从同时跑升级逻辑,执行时间间隙不太长一般都能成功,如果失败了的话,就 做个全同步就好了

Pika 30-32 主要是更换数据目录,由单db改为多db,详细的可以看下脚本或者 github 的升级流程https://github.com/Qihoo360/Pika/wiki/%e5%a6%82%e4%bd%95%e5%8d%87%e7%ba%a7%e5%88%b0Pika3.1%e6%88%963.2

08 Pika备份恢复

备份后端主要通过agent实现远程调用,每天根据备份策略进行bgsave备份,并同步到远程备份机。

HULK可以查看每天端口的备份情况,失败有日志可以参考进行修复。

备份恢复检查,备份成功后会随机挑选端口进行数据恢复测试并以邮件的形式巡检发送出来。

06

总结

360 已使用 Pika至少 5年,线上使用数千实例来支撑各个业务线,一直非常稳定。我们研发和 DBA 致力于打造更好的 Pika 服务和用户体验,在社区不断更新新功能和修复bug以及回复社区问题,捐赠给 OpenAtom 基金会后,越来越多的行业和开发者参与进来。相信 Pika 未来应用会越来越广泛,希望和广大知识爱好者一起进步。

Pika在360的应用与实践相关推荐

  1. 横跨7个版本的OpenStack无感知热升级在360的落地与实践

    01 背景 360公司的IaaS服务平台,是基于开源Openstack项目研发的,在发展的数年间已历经了多次版本的更新迭代.2015年,360团队基于Liberty版本自主研发了360公有云(奇云), ...

  2. 360容器平台监控实践

    女主宣言 360 近年来上线了容器云平台,给团队工作带来了一些便利,同时也给运维工作带来了很多挑战.InfoQ记者张婵10月30日采访整理,首发于公众号"高效开发运维". PS:丰 ...

  3. 【2015DTCC】阿里、360、京东 NoSQL实践

    一年一度的数据库和大数据领域技术盛宴--2015中国数据库技术大会(简称 DTCC 2015)将于4月16日至4月18日在北京新云南皇冠假日酒店隆重召开.最新消息,大会NoSQL专场演讲嘉宾已经全部确 ...

  4. 看DTCC2015:阿里、360、京东 NoSQL实践

    "大数据技术交流和价值发现"是大会的核心主题,DTCC 2015大会规模将达到2500人,分3天21个专场,近百场精彩演讲,大会将云集了国内外最顶尖的数据专家,共同探讨MySQL. ...

  5. 【360开源】Pika最佳实践

    奇技指南: Pika是360 热门的c++开源项目,基于rocksdb开发的大容量类Redis存储,力求在完全兼容Redis协议.继承Redis便捷运维设计的前提下通过持久化存储方式解决Redis在大 ...

  6. 360互联网技术训练营第七期 -“遇见”PIKA 续集

    背景介绍 2017年11月26日下午13:30,北京798艺术工厂旁,奇虎360A座发布厅,Pika在这里迎来了自诞生以来的第一个社区沙龙. 什么是Pika Pika 是360 DBA与基础架构团队联 ...

  7. 一场360容器圈的武林大会“360互联网技术训练营第九期—360容器技术解密与实践” (附PPT与视频)...

    女主宣言 周六我们的线下面基,圆满成功.女王大人发现,咱容器圈还是有不少妹子的哇~ PS:丰富的一线技术.多元化的表现形式,尽在"HULK一线技术杂谈",点关注哦! 2018年4月 ...

  8. 一场360容器圈的武林大会“360互联网技术训练营第九期—360容器技术解密与实践” (附PPT与视频)

    女主宣言 周六我们的线下面基,圆满成功.女王大人发现,咱容器圈还是有不少妹子的哇~ PS:丰富的一线技术.多元化的表现形式,尽在"HULK一线技术杂谈",点关注哦! 2018年4月 ...

  9. 360互联网技术训练营第七期 - “遇见”PIKA

    "遇见"PIKA Pika,360 最热门的c++开源项目,基于rocksdb开发的类Redis存储,通过持久化存储方式解决Redis在大容量场景下主从同步代价高.恢复时间慢.单线 ...

最新文章

  1. SAP MM 不常用事务代码之MB59
  2. 今日 Paper | 虚拟试穿网络;人群计数基准;联邦元学习;目标检测等
  3. hbase源码系列(十二)Get、Scan在服务端是如何处理?
  4. 告诉我们您对 Office 2010 的看法
  5. mysql使用全备文件恢复单个库或者单个表
  6. 计算机省二c语言编程改错题,2013年计算机二级C语言上机试题六十九
  7. Dotnet程序集自动生成版本号
  8. 学python心得体会800字-python 学习心得
  9. 卷积网络虽动人,胶囊网络更传“神”
  10. 网站建设中HTML编写技巧你必须掌握的30个 提升你的编写能力|网站建设
  11. Codeforces Round #288 (Div. 2)E. Arthur and Brackets
  12. 创龙 C6000 DSP开发板众筹来袭
  13. 清华大学android源码下载网站地址
  14. Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶
  15. intel DQ77KB 主板使用说明书
  16. 视频中的音频采样率就这样快速修改
  17. Lua实现简单的任务动画移动(Animator)
  18. 国家信息中心副主任周民:加快形成网络安全的亮剑精神
  19. 编程求x的n次方_用C语言程序设计:求x的n次方的函数。
  20. linux3.0字符设备驱动,linux字符设备驱动的 ioctl 幻数

热门文章

  1. 诗与远方:无题(七十四)
  2. Android之播放一首简单的音乐
  3. 解决谷歌浏览器所有页面崩溃问题
  4. Vue 组件 mixins
  5. linux系统软件包依赖关系,Ubuntu解决包依赖关系
  6. [树状数组][哈希]JZOJ 3240 Seat
  7. Spring中将header头转换为参数
  8. Android--JNI编程详解
  9. docker使用问题总结
  10. 浅悉软考网络工程师考试出题风格变化