写点什么

专访贺晋如:小红书基础架构演进历程

  • 2022-04-02
  • 本文字数:3306 字

    阅读完需:约 11 分钟

专访贺晋如:小红书基础架构演进历程

早年间云计算刚起步的时候,Infrastructure as a Service 概念兴起,基础设施即服务,各大云计算服务来支撑各个企业的业务发展。同样的道理,基础架构在公司内部相当于技术底座,对各个业务进行赋能,其重要性不言而喻。


贺晋如博士在回国之前,曾在 Facebook,Pinterest 工作过,后回国加入茄子快传,小红书。在国外的工作经历中有些收获对于现在的工作很有帮助的。用贺晋如自己的话说,分为两方面,第一方面是技术上,他曾经非常有幸和一些世界上很优秀的工程师一起工作,一起从 0 搭建大规模的分布式系统。这里的收获不仅仅是如何搭建各种系统,更多是跟这些大师学到的搭建复杂系统的思维体系,比如:如何在设计复杂系统时做各种架构上的取舍:如何写高质量的代码;如何有效的定位线上故障并及时排障。这些收获是让他在后面很长时间都有所收益。


第二方面是在工程师文化上,在 Facebook 的时候,公司鼓励工程师去不断尝试,不设限的去参与解决各种问题。


这些技术上和文化上的收获其实都在回国后的工作里起到了比较大的帮助,这些帮助也潜移默化的影响着他的工作。目前,贺晋如是小红书基础架构负责人,负责公司的云原生架构,高可用的服务架构,数据库,缓存和 NoSQL 存储系统。以下是对贺晋如的采访整理。


InfoQ:您的工作内容基本上是围绕基础架构领域,可以介绍一下您现在在小红书带领基础架构部门具体做哪些事情么?


贺晋如:小红书的基础架构主要包括数据库缓存,存储,中间件,Kubernetes 云原生计算等相关内容。


中间件系统的完整是随着业务的需要而慢慢建立起来的,当这些系统成体系,完善后,威力巨大。也许这就是坚持长期主义,相信技术的力量,允许犯错,提供平台的结果。


我们之前在中间件的迭代上碰到过很多问题,总的来说,最核心的点在于如何让中间件的升级迭代成本变低。举个例子,我们曾经对中间件版本做了一次比较大的升级操作,对流量进行精细化的控制。出发点是好的,要求业务方去设置这些参数,让服务更加的高可用。但事实上,在我们推动升级的过程中,一部分用户其实并不关注这些配置项,另外一些用户关注但不知道如何配置。业务方不愿意升级,得一个一个业务去做宣传或者帮他们升级。


拿到这些反馈后,我们意识到,需要做到让业务方的改动尽量的少,才能使推广新版本的成本足够的低。所以我们在后续的中间件迭代里就秉持了一个理念:中间件的升级需要尽量做到业务无感知,让业务方接入成本足够的低;任何一次版本的变动都需要做到足够的向下兼容。为此,我们开始在后续的版本着手施行无感知升级的方案,这样中间件的升级迭代的成本就下来了。


InfoQ:你们在招聘网站上对存储方面的候选人要求,对 Redis、MySQL 等数据库相关产品内核优化;缓存、数据库中间件性能优化、功能迭代;其他分布式数据库解决方案预研。想了解,你们现在的数据存储方案有哪些?对于存储有怎样的特殊需求?有哪些解决方案?


贺晋如:我们现在数据大部分都存放在自建的 MySQL 和 MongoDB 里,同时缓存使用的是自建的 Redis。这里值得一提的是,小红书的 Redis 集群在 2018 年就已经实现全部容器化在 Kubernetes 上部署了,应该算业界比较早尝试做存储容器化的公司。4 月份的 ArchSummit 全球架构师峰会上,我们缓存团队的同学也会和大家分享这方面的经验。在存储方面,我们自建了高性能的 KV 存储,这部分在去年的 QCon 已经做了分享。


随着小红书业务的不断成长,缓存集群的规模也在扩大,现有的集群方案已经不能满足要求了。我们目前正在进行缓存架构上的迭代,包括对缓存内核的优化,对节点探活机制的改进等等,力求满足超大规模缓存集群的要求。


目前存储的拼图还相对比较薄弱:除了 KV 存储以外,我们还有类似于 Facebook TAO 的一跳图查询引擎。但其实业务对我们的需求是很多的:包括支持复杂图查询的图数据库;表格存储;强一致的 KV 存储,时序数据的存储引擎;对象存储和块存储。这些都需要我们慢慢补齐。此外,随着业务的增长,我们也在探索基于持久化内存的 KV 存储。


InfoQ:MySQL、MongoDB、TiDB 等数据库产品在你们内部的选用,有哪些考量因素?如何配合业务需求?


贺晋如:主要考量因素是业务的需求和可扩展性,以及我们目前数据库团队的规模。我们会更倾向于使用更加主流的产品来作为我们存储核心数据的方案。因为 MySQL 在高可用,数据复制方面都有比 MongoDB 更加成熟的方案,也更容易运维。


InfoQ:异地多活等高可用建设上,具体是怎么做的,技术上攻克了哪些难点?现在处于什么阶段?


贺晋如:我们目前正在从单云架构向着多云架构演进。多云架构和传统的单云架构一个很大不同点是,在多云的环境里,我们让自己的技术栈做到云独立,同样的业务代码在任何一朵云上都可以跑得通。


这里主要的难点就是,服务间在跨云环境里的上下游调用,根据业务需求的不同,有的服务调用可以跨云,有的服务调用是需要做到严格限制在单元内的。新的服务发现逻辑如何做到在所有中间件版本和 mesh 数据面上都能适用,是我们当时在做多活时候的一个难点。


做多云多机房架构的本质是服务的高可用能力,在一个机房的服务发生故障时迅速将流量切走。这是我们面临的另一个难点。


目前小红书主要的技术改造集中在微服务访问的单元化改造,数据库存储层的异地多活改造,南北流量接入层网关改造。我相信这些都是做异地多活的团队都碰到并且需要去解决的一些问题。


在流量控制方面,我觉得很重要一点是在某个机房的下游服务发生故障时,故障的爆炸半径要做到足够的小,尽可能的控制在单机房内。


举一个在实际生产中碰到的例子,在我们 SDK 设计里,流量控制参考了 mesh 的实现:默认上下游服务调用都在单机房内完成。在同机房下游服务健康实例不足的时候会自动 failover 一部分流量到另一个机房。这个设计的初衷是,在同机房下游服务出现容量不足时,能自动的把一部分流量切到另一个机房来保证上下游服务调用的正常。看上去是很合理的,但是在实际中碰到的情况是:上游服务因为流量过载把同机房内的下游服务实例打垮,上游流量会自动的 failover 到另外机房的下游服务,另一个机房的下游服务由于短时间内承接了之前 2X 的流量,很快也挂了,导致我们整条链路宕机。如果没有自动的跨机房流量跳转,我们是可以把故障控制在单机房内。从而保证另外一个机房的流量是正常的。


InfoQ:对于先进的架构和理念选择上,你们有哪些考量和标准?


贺晋如:我觉得核心考量的标准是这些新的架构和理念是否能够为我们的业务赋能,是否能为我们的研发工程师提效降本,是否能提高我们整体架构的稳定性。任何脱离了实际业务来谈架构和理念都是没有意义的。


在这个基础上,架构的通用性和普适性也是我们考虑的因素。这套架构是否已经在相同规模或者更大规模的互联网公司落地。是否已经带来了好的收益。同时一套通用的架构也更容易让我们在市场上招到匹配的人才。


架构的灵活性能给我们足够的可扩展空间进行二次开发来满足业务的需求。我们的业务是一直在高速发展的,如果一套架构不具有可扩展性,那么有可能会在某个阶段成为业务进一步发展的卡点。


InfoQ:在架构上,不管是设计层面,还是应用层面,您这两年有哪些发现,或者观察?对软件架构的发展,有哪些预测,或者期待?


贺晋如:微服务的 Serverless 化,由架构团队来负责容器,云等底层资源管理,屏蔽底层资源差异性,向业务提供可靠、稳定、可弹性的运行环境,让业务技术团队能聚焦业务需求的快速迭代。


另外,把有状态服务容器化上 Kubernetes。数据库,存储容器化后,有进一步的空间可以提升存储集群的资源利用率。并且也可以减少运维人员的一些重复性工作。


嘉宾介绍:贺晋如 博士


小红书基础架构负责人,拥有十余年高性能分布式系统,微服务高可用架构工作经验,先后在 Facebook,Pinterest 参与和主导大规模分布式图数据库,NoSQL 存储系统,机器学习推理平台等项目的设计和研发。目前在小红书负责公司的云原生架构,高可用的服务架构,数据库,缓存和 NoSQL 存储系统。



除了上面的回复内容外,贺晋如老师还会出席 4 月下旬在上海举办的 ArchSummit 全球架构师峰会活动,他是“架构系统性能优化”专题出品人,这个专题下邀请了小红书、字节跳动、阿里巴巴的技术专家来分享各自的实践内容,感兴趣的可以关注会议日程。

2022-04-02 14:3510008

评论

发布
暂无评论
发现更多内容

Elasticearch索引mapping写入、查看、修改

京东科技开发者

NTFS Disk by Omi NTFS for mac(NTFS 磁盘管理器)v1.1.4中文版

小玖_苹果Mac软件

Serial for Mac(全功能串行终端管理软件)v2.0.17激活版

小玖_苹果Mac软件

明道云正式发布国际品牌Nocoly

明道云

TDengine 签约深圳综合粒子,赋能粒子研究新突破

TDengine

数据库 tdengine 时序数据库

InheritableThreadLocal从入门到放弃

京东科技开发者

Navicat for SQL Server for mac(数据库管理工具)v17.1.6激活版

小玖_苹果Mac软件

TextIn文档解析表格处理模型优化,显著提升表格解析性能

合合技术团队

人工智能 表格 AIGC 文档图像

重塑用户体验!快手电商智能巡检平台的实践与探索

快手技术

前端

ERP系统实施的难点不是系统本身,而是企业的人与管理

积木链小链

企业管理 ERP 中小企业

大促系统优化之应用启动速度优化实践

京东零售技术

后端 大促

MacCleaner Pro for Mac(系统综合清理软件)v3.3.5永久激活版

小玖_苹果Mac软件

Pioneer DJ rekordbox for Mac(专业的DJ音乐管理软件) v5.8.6.0004激活版

小玖_苹果Mac软件

Tower for Mac(强大的Git客户端)v12.3注册激活版

小玖_苹果Mac软件

DeSci 启蒙:从文艺复兴到 Web3.0 的科研革命梦想

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

解锁电商数据宝藏:淘宝天猫API接口深度探索——商品评论与描述详情图获取指南

代码忍者

API 接口 pinduoduo API

Kubernetes为什么要从docker切换ContainerD

虚实的星空

Docker Containerd

Web端软件测试工具

测试人

软件测试

很多人陷入了职场认知误区

老张

认知提升 职场新人

Taro 鸿蒙技术内幕系列(四):JDImage 自研鸿蒙图片库

京东科技开发者

Set A Light 3D Studio for Mac(3D摄影棚布光工具)v2.58d永久试用版

小玖_苹果Mac软件

聚焦实践,面向前端|12月7日华为云首届开源开发者论坛火热报名中~

OpenTiny社区

开源 前端 低代码 组件库 OpenTiny

俄罗斯通过加密货币税法:重新定义数字货币规则

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 链游开发代币开发

电力数据驱动的节能创新:TDengine Cloud 在智慧楼宇中的深度应用

TDengine

数据库 tdengine 时序数据库

简单认识单元化

陈一之

技术思维 高可用架构 应用多活

Microsoft Excel 2019 for Mac(excel电子表格)中文正式版

小玖_苹果Mac软件

专访贺晋如:小红书基础架构演进历程_行业深度_Xue Liang_InfoQ精选文章