写点什么

京东刘海锋:过去十年架构领域最重要的三个变化

  • 2019-04-28
  • 本文字数:2830 字

    阅读完需:约 9 分钟

京东刘海锋:过去十年架构领域最重要的三个变化

自从大学时将操作系统内核作为研究方向后,刘海锋就和分布式系统结下了不解之缘。


从分布式存储、图片系统,到中间件体系、容器平台、新一代弹性数据库、异地多活项目等等,刘海锋的职业生涯大多在与基础架构打交道。


他毕业后历经百度、外企、创业公司,然后在 13 年加入京东。参加工作十年后,刘海锋已是京东零售首席架构师兼技术副总裁,这个速度在一般程序员中显得非同寻常。为什么他成长这么快呢?在他眼里的架构又是什么样的呢?


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    成长经历

    从中国科技大学研究生毕业后,刘海锋工作的第一站是百度。在百度的时候,他参与开发了一个新型的存储系统。然而系统上线之后,发现了一个 bug,它会概率性的把一些数据弄错几个比特,这对于作为整个架构基石的存储系统来说是不可接受的。


    刘海锋回忆说,当时这 bug 出现之后整个团队压力都特别大,然而问题太隐蔽,想要短时间修复很困难,但如果因此而将系统下线的话,整个团队的工作都将受到影响。为了定位问题,他从早上的九点多一直工作到第二天的凌晨三四点,竟然把 bug 定位出来并修复掉了,避免了系统回滚。


    这个事情一直影响了刘海锋之后的整个工作生涯,遇到什么问题他的态度不是回避,而是要迎难而上,一口气把它解决掉。


    2014 年 8 月,刘海锋在京东开始带领团队做内部弹性云平台的研发,当时他做了一个略显激进的决定,用 OpenStack 来管理 Docker,让大部分系统和应用都运行在刚发布一年多、稍显稚嫩的容器里。



    这个激进还体现在他后来对数据中心操作系统 JDOS 升级的技术选型,2016 年初,容器已经被大家所接受,但容器编排花落谁家尚无定论,在大家还在观望的时候,刘海锋选择了 Kubernetes,将其作为第二代 JDOS 的基石。这让京东在很早就积累了运维大规模 Kubernetes 集群的经验,京东的 Kubernetes 经验也被 CNCF 官方作为案例分享。2018 年 4 月,京东应邀加入 CNCF,刘海锋也成为代表京东的 CNCF 全球理事会成员。


    不过,虽然在外人看来一些技术决策略显激进,但刘海锋本人并不这么认为,他觉得自己只是在正确的时间做了正确的选择。比如为什么用 Docker 替代 VM,主要是基于在内部的环境里面,隔离性和安全性并不是第一位的需求,而容器镜像带来的敏捷、高性能,以及运维的便利,恰好是他们所需的。因为对 Linux 内核、分布式系统有深刻的理解,所以他能在第一时间理解 Docker 和 Kubernetes 的优势,并且认定它们是未来的发展趋势。


    2016 年的双 11,刘海锋第一次担任京东大促的整体技术协调,这是涉及到公司上上下下,数十个部门和数千人的大规模作战。这让他对架构与公司业务的关系有了更深的理解。他认识到,大促的备战其实是一个综合性的系统工程,这里面需要很多技术的手段,也需要各条产品线各条技术线所有人去协同工作,在做架构设计的时候,要考虑到尽可能多的人的需求,然后在其中做平衡取舍。


    随着负责的团队逐渐增大,刘海锋在管理方面的所花的时间越来越多,但他仍然没有离开技术的一线。他平时会跟团队骨干一起来商定一些重要系统的架构设计,并且定期对关键项目做复盘和 review,也会投身一线和同事一起去处理线上出现的重要问题。 为了更好的做出技术规划,刘海锋会经常研读最新的一些学术论文。他也鼓励团队在国际会议上发表论文,与同行交流,然后把最前沿的理论和方法运用到实际项目中去。

    架构十年

    过去的十年,刘海锋与架构一同成长。他认为,架构领域经历了快速演进的十年。架构领域在整个互联网的技术栈是偏底层的,但过去十年架构领域的演进速度,一点都不亚于应用开发,甚至移动端开发的速度。比如容器,新型的数据库,新型的中间件,大规模集群的调度,以及系统跟算法的结合,在很多方面都出现了新的变化,甚至是出现了里程碑式的进步。


    在具体的变化方面,刘海锋列举了三点,第一点是容器。把所有的东西都放在容器里,这是以前从没有过的。到今天,我们不光把应用的部署放在容器里,很多有状态的服务,包括缓存,数据库大数据的一些计算任务我们也都放在容器里,统一的编排调度和执行。这极大的简化了运维的复杂性,同时也让数据中心整体的资源使用率提升。


    第二点是数据库。数据库作为基础架构非常核心的组成部分,在过去的十年间里面有一个显著的特点是从大一统的一元的数据库逐渐走向多元,逐渐的走向为不同的应用场景而定制。


    十年前,我们能想到的数据库,更多的是商用数据库。但到今天任何上规模的互联网公司,甚至传统行业,都可能需要多元的数据库技术来解决数据管理问题。以电商为例,一般来说会用 MySQL 以及 MySQL 的中间件,作为最关键的结构化存储,但同时会配上内存 KV Store 做加速、用检索型数据库做全文检索,用时间序列数据库做海量数据的监控采集和分析,等等。从 DB 底层核心技术来看,跨地域复制且强一致复制、计算与存储分离、从以磁盘为中心到以内存为中心,是三个非常显著的技术变迁。


    第三点,系统跟算法的结合越来越紧密,系统跟算法一起形成一家公司的技术的基石,系统相当于是骨架,而算法给骨架注入了灵魂。



    举两个简单的例子。第一个,很多大规模的分布式系统需要自动化的运维。在打造自动化运维的过程中,时间序列的分析与预测,根因分析等等发挥了重要的作用,这里面需要算法的力量。第二点,对于大规模的数据中心里面整体的资源调度,这需要非常强的调度的算法,以及预测算法去改进容器在整个数据中心的分配策略,调度算法的改进所带来的成本收益都是非常显著的。所以说,近年来,在架构领域,大规模分布式系统和一些实用算法工程,两者结合非常紧密。

    架构的未来

    最近这两年,刘海锋也经常思考架构的未来。软件架构,唯一不变的就是变化,但变化又分成了波动与趋势,所以对趋势的把握显得尤为重要,所谓架构,不仅要解决现在的问题,更加需要对未来趋势有深刻的理解与把握。


    在这方面,刘海锋给我们分享了两点,第一个是架构智能化(Architecture with Intelligence & Architecture for Intelligence)。他认为在接下来几年,架构的智能化会成为现实。 一方面,算法或 AI 技术跟大规模系统架构的结合会更加紧密,甚至会催化很多分布式系统的一些变革,机器学习算法的应用也会让很多大系统的运维和应用更加的简单。另一方面,AI 的工业级应用也需要有力的底层架构支撑,比如高性能的机器学习框架,大规模特征向量的检索匹配系统,等等。



    第二点是混合多云,或者说,从更大的层面,让应用开发者忘记数据中心,忘记基础设施建设将成为现实。从这个角度来说,甚至可以叫 Datacenter-less。接下来 5 到 10 年,很多大中型企业,他们重要的业务一定会横跨自己的数据中心和不同云服务商的数据中心。一定会有框架出现来屏蔽底层的这些差异与复杂性,让大家像编排机器编排数据中心那样编排多个云。回顾整个行业,我们可以看到,Google 等公司已经着力开始开展这方面的工作与业务。


    具体到一些实际的一些技术框架方面,刘海锋会持续关注和研究目前的一些热门前沿技术,比如说 serveless、Service Mesh,各种新型的数据库软件等等。总之,未来架构将使得应用的开发更加简单,也更加人性化。


    2019-04-28 17:249507
    用户头像
    二叉树视频 InfoQ旗下短视频品牌

    发布了 98 篇内容, 共 32.3 次阅读, 收获喜欢 185 次。

    关注

    评论

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

    2022最新发布!不愧是保姆级的SpringSecurity笔记

    了不起的程序猿

    Java spring 后端 JAVA开发 java程序员

    Java程序的构造与执行

    李印

    编程语言 JVM Java core 8月月更

    前后端分离跨域问题

    青柚1943

    CORS 跨域

    RT-Thread记录(五、RT-Thread 临界区保护与FreeRTOS的比较)

    矜辰所致

    RT-Thread 8月月更 临界区保护

    Kubernetes 动态扩缩容

    CTO技术共享

    开源 签约计划第三季 8月月更

    LAXCUS授权许可证 第1版

    LAXCUS分布式操作系统

    开源 分布式操作系统 软件许可证

    构建在Findora上的Forlend,具备隐私特性的借贷协议

    鳄鱼视界

    头脑风暴:零钱兑换2

    HelloWorld杰少

    算法 LeetCode 8月月更

    3 分钟创建 Serverless Job 定时获取新闻热搜!

    阿里巴巴云原生

    阿里云 Serverless 云原生

    TDengine 3.0 重磅发布,首届开发者大会圆满结束

    TDengine

    数据库 tdengine 时序数据库

    什么是操作系统?

    Jackpop

    SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase

    IT学习日记

    数据库 分布式数据库 oceanbase 签约计划第三季 oracle迁移到oceanbase

    开源一夏 | 使用 JavaScript 和 CSS 的简单字符计数器

    海拥(haiyong.site)

    开源 8月月更

    【精通内核】计算机内存地址原理深度解析

    小明Java问道之路

    内存 intel 签约计划第三季 8月月更 分段分页

    IPv6基础知识

    穿过生命散发芬芳

    ipv6 8月月更

    开源一夏 | AngularJS实战之依赖注入与应用实践

    恒山其若陋兮

    开源 8月月更

    大揭秘:云网流量采集方案关键点

    阿泽🧸

    签约计划第三季 8月月更 云网流量采集

    层次分明井然有条,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang包管理机制(package)EP10

    刘悦的技术博客

    Go 教程 Go 语言 教程分享 编程语言‘

    如何可视化编写和编排你的 K8s 任务

    阿里巴巴云原生

    阿里云 容器 云原生 可视化

    【算法岗必看系列】机器学习高频面试题

    码农鬼仔

    人工智能 机器学习算法 机器学习笔记 机器学习/深度学习 常见面试题

    Vue讲解系列- - -Nginx和Postman讲解

    叶秋学长

    Vue 8月月更

    阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星31K+

    冉然学Java

    Java 面试 springboot 秋招 java面试·

    首发!这份阿里强推的图文并茂的Mybatis 源码笔记将理论和实战完美结合

    了不起的程序猿

    Java 后端 mybatis JAVA开发 框架

    Forlend:构建在Findora上,且具备隐私特性的借贷协议

    股市老人

    涨薪了!拿着GitHub标星80k的阿里性能优化笔记,把项目优化个遍

    程序知音

    Java 编程 程序员 性能优化 后端技术

    关于Http协议,你必须要知道的

    TimeFriends

    8月月更

    Kubernetes rubbish如何回收

    CTO技术共享

    开源 签约计划第三季 8月月更

    为什么实际业务中不建议直接使用POI操作Excel?

    IT学习日记

    POI EasyExcel 签约计划第三季 java excel导出导入 poi和easyexcel对比

    Kruise Rollout:灵活可插拔的渐进式发布框架

    阿里巴巴云原生

    阿里云 开源 云原生 OpenKruise

    Kubernetes eBPF多种玩法

    CTO技术共享

    开源 签约计划第三季 8月月更

    京东刘海锋:过去十年架构领域最重要的三个变化_架构_二叉树视频_InfoQ精选文章