RedisConf19会议记录 Day0: Training

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: # 前言 2019年的RedisConf比以往时候来的更早一些,今年会议时间是4月1-3号,仍然是在旧金山鱼人码头Pier 27。恰逢今年是Redis第10周年,规模也比以往大一些,注册人数超过1600人,总共有80个议题,除了RedisLabs外还有很多云厂商和Redis用户带来分享,今年也是阿里云首次在RedisConf进行分享。 # Agenda 会议总共三天,第一天是Tr

前言

2019年的RedisConf比以往时候来的更早一些,今年会议时间是4月1-3号,仍然是在旧金山鱼人码头Pier 27。恰逢今年是Redis第10周年,规模也比以往大一些,注册人数超过1600人,总共有80个议题,除了RedisLabs外还有很多云厂商和Redis用户带来分享,今年也是阿里云首次在RedisConf进行分享。

Agenda

会议总共三天,第一天是Training Day,主要是作者开场加RedisLabs的培训课程,今天的agenda如下图:

image.png

会议记录

Breakfast

注册过程很简单,输入自己的名字就可以打印入场券,我们到的比较早就先上来吃早餐。

image.png

早餐还不错,有各种水果和面包蛋糕,还有咖啡和茶,终于有口热水喝了,4月初的旧金山还是挺冷的,我还裹着羽绒服但是美帝人民已经有短袖短裤上阵的了。

Opening Session

在课程开始之前,Redis作者antirez先来开场,和Redis的开发一样依然是随性的风格,没有准备PPT直接现场演示。

image.png

作者开场对Redis的介绍比较简单,像一些数据结构和基础命令的使用,也是为了照顾到大多数的受众,来参会的也有不少刚刚接触Redis的用户。比较重要的是作者认为Redis现在已经不止是Cache了,因为具备persistence持久化和replication复制功能,已经是一个完备的Database,这也是今年会议的主题之一。

期间有个小插曲,在介绍list时作者忘记了RPOPLPUSH这个命令要怎么写,现场打开源码,vi了一把server.c才搞定,哈哈,毕竟Redis发展到现在已经10年,有6种数据结构和上百个命令,有些命令也非常复杂。

之后和作者做了下简单交流,作者很高兴这次我们过来参加RedisConf,对前年云栖大会的中国之行印象深刻,也称赞了阿里云对Redis社区的贡献,不过由于昨天才到旧金山,时差还没倒过来比较疲惫,很快就回酒店休息了。

先来张合影镇楼,哈哈。

image.png

Training

之后是RedisLabs的课程,我们挑了几个去听,整体听下来的感觉比较基础,还是偏向于入门的介绍。

  • Redis as a Primary Data Store

    这个课程主要是讲如何使用事务来构造各个key的关系,毕竟Redis是key-value型数据库,要同时修改多个有关系的key就会有并发问题,此时就要利用事务来保证原子性。
    
  • Redis Clustering

    关于集群的一些简单介绍,比较重要的是RedisLabs在社区Cluster上也做了一套Proxy来方便用户接入,Proxy是今年超热门的话题。
    
  • Streaming Architectures

    Redis 5.0引入了Streams数据结构,用来对标kafka,这个课程对Streams做了下科普,一些命令的使用演示,演讲人Itamar也是Github上的老朋友了,很风趣幽默,他说已经告诉了好多人这次RedisConf我们会来,还邀请他的朋友明天去参加我们的session,一直称我们是amazing guys哈哈。
    

课程期间作者从Twitter上发来消息,问我们中午有没有时间一起for Redis internals talk,于是乎约了午饭时间来讨论。

Lunch & Redis internals talk

今天的午餐比较简陋,就是便当,有火鸡三明治、牛肉汉堡等,但是都是冷的。。。中国胃还是吃不惯啊。随便拿了个火鸡三明治,一边吃着一边和作者讨论了。

作者说上次来杭州的时候玩的很开心,逛了西湖和灵隐寺,在灵隐寺吃了素斋很不错,尤其是豆腐很好吃,意大利的豆腐都是硬的,龙井茶也很好喝,上次买的已经喝完了,意大利也没有卖的,比较遗憾这次没给他带份龙井当礼物,下次来中国多买点哈哈。同时也邀请我们去意大利玩,自己平时是在西西里住,但是他在佛罗伦萨有房子,如果我们去可以住他家里,聊到西西里的美丽传说大家会心一笑哈哈,还有电影教父,来自西西里的黑手党,作者自嘲自己家乡的人在世界各地制造麻烦。

午饭闲聊完开始讨论正事,作者重新启动了threaded-io分支的开发,也就是网络读写多线程(前一个星期还在博客上说这个feature短期不打算开发,结果现在又开始了,真是随性哈),因为读写网络的read/write系统调用在Redis执行期间占用了大部分CPU时间,如果把网络读写做成多线程的方式对性能会有很大提升。现在已经实现了第一版,write side也即回复客户端这部分已经完成了,并且去掉了主线程和IO线程之间的互斥锁,采用busy loop的形式来等待io线程工作结束,这部分能够有50%的性能提升,架构图如下:

image.png

Redis采用的是事件驱动模型,执行逻辑仍然是单线程串行执行模式,待所有命令执行完成之后,把客户端的reply分发给多个IO线程,等IO线程回写客户端完成后再进行下一轮事件循环。

write side采用这种模式提升很明显,现场测试性能可以提升50%,但是比较奇怪的是read side采用同样模式却没有任何提升,于是现场code review了下:

image.png

代码逻辑上没有发现什么明显的问题,会后再checkout这个分支仔细看下。其实目前社区threaded-io分支的架构设计和我们阿里云在做网络多线程的早期版本比较像,整个逻辑read-work-write仍然串行,只是把read/write多线程化,这样对Redis原来的逻辑改动较小,我们后来进行了更彻底的拆分,read/work/write流水线化,不同客户端的read/work/write可以并行,但是仍然保留work的串行逻辑不破坏Redis的执行语义,设计详见 https://www.atatech.org/articles/112918 ,这个设计思路也和作者进行了交流,不过Redis作为一个开源项目,逻辑简单、可读性强还是占了比较高的优先级,他不想把Redis做的太复杂,所以还是只做read/write的并行化,尽量的减少read/write的整体时间而不是read/work/write的流水线,内部使用和开源项目还是有不同的侧重点。

来个硬广:阿里云Redis多线程性能增强版已经上线售卖,欢迎大家使用。

另外就是关于Proxy,就在昨天刚刚放到Github上,目前只是一个demo比较简单,只有一些基础功能,但是这个项目不是作者自己开发,而是交给了Fabio,一个在意大利的小伙伴,我们也对阿里云的Proxy做了介绍,我们的Proxy已经很成熟了,也实现了很多高级功能比如:多DB、block类命令、PUBSUB、Lua脚本、事务、多key命令支持等,作者很有兴趣问我们有没有开源,由于使用了一些内部类库目前还没有开源,不过后面还是有开源的计划的,作者也邀请我们参与到社区Proxy的开发中。

Proxy项目地址: https://github.com/artix75/redis-cluster-proxy

Happy Hour

和作者讨论的时间比较久,下午的课程就没再参加,直接到了会后的Happy Hour,大家一起聊聊天互相认识一下,有吃的有喝的,一起哈皮。

image.png

这个墨西哥玉米饼还不错,有辣酱和牛油果酱等配料。

image.png

这个不知道叫啥的卷,里面的酸黄瓜超级酸,无法承受。。。

image.png

还有各种红酒、啤酒,感觉比国内的度数都要高,喝了一杯啤酒就有微醺的感觉。

同时也和AWS的几个同学做了交流,AWS这次来了6个人有两场session,整场也比较活跃,可谓人多势众,作为云厂商大家都有一样的痛,Redis用户普遍要求比较高,10ms+的延迟工单就来了(捂脸哭),网络问题也是频发,基础设施的稳定性建设也是非常重要。

image.png

结语

愉快的第一天就结束了,明天再带来后续报道。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
16天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
228 0
|
24天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
191 2
|
30天前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
187 0
|
2月前
|
运维 NoSQL 算法
Redis-Cluster 与 Redis 集群的技术大比拼
Redis-Cluster 与 Redis 集群的技术大比拼
82 0
|
1天前
|
存储 NoSQL 算法
Redis 搭建分片集群
Redis 搭建分片集群
|
24天前
|
NoSQL Java 测试技术
面试官:如何搭建Redis集群?
**Redis Cluster** 是从 Redis 3.0 开始引入的集群解决方案,它分散数据以减少对单个主节点的依赖,提升读写性能。16384 个槽位分配给节点,客户端通过槽位信息直接路由请求。集群是无代理、去中心化的,多数命令直接由节点处理,保持高性能。通过 `create-cluster` 工具快速搭建集群,但适用于测试环境。在生产环境,需手动配置文件,启动节点,然后使用 `redis-cli --cluster create` 分配槽位和从节点。集群动态添加删除节点、数据重新分片及故障转移涉及复杂操作,包括主从切换和槽位迁移。
32 0
面试官:如何搭建Redis集群?
|
28天前
|
存储 缓存 NoSQL
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)(一)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)
321 0
|
1月前
|
NoSQL Redis Docker
使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)
使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)
68 0
|
1月前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群
|
1月前
|
运维 负载均衡 NoSQL
【大厂面试官】知道Redis集群和Redis主从有什么区别吗
集群节点之间的故障检测和Redis主从中的哨兵检测很类似,都是通过PING消息来检测的。。。面试官抓抓脑袋,继续看你的简历…得想想考点你不懂的😰。
67 1

热门文章

最新文章