写点什么

架构演进:中台、云原生,百度基础架构背后的那些思考

2020 年 4 月 15 日

架构演进:中台、云原生,百度基础架构背后的那些思考

百度的核心业务对基础架构有没有特殊的要求?中台和微服务在架构领域处于什么样的位置?云原生架构的本质和影响是什么?中小企业架构师该如何设计 IT 架构?带着这些问题,InfoQ 记者采访了 QCon 北京 2020《架构演进》专题出品人,百度基础架构部主任架构师郑然。以下为采访实录。


百度核心业务对基础架构的要求


百度的搜索业务特点是用户使用逻辑简单,只需要一个搜索框或下拉动作就可以完成产品的全部使用过程。但简单背后,其实隐藏着非常复杂的算法逻辑,需要经过大量的计算过程,对算法和大数据技术要求很高。


由于用户交互简单,架构上来说,用户对搜索引擎的速度有更高的要求。对基础架构而言,数据规模和性能有非常高的要求,比如基于 C++ 语言的高性能 RPC 框架 (brpc),海量数据的流式计算和分布式存储架构来支持离线数据处理和分析,大规模微服务和服务治理系统等。


相比于更复杂的业务形态比如电商业务来说,郑然体会有两个显著的特点:一方面复杂的业务模型天然缓解了对响应时间的要求,因为业务模型复杂,过程中会和用户产生更多的交互,即使用户购买这个简单的动作也需要多次互动;另一方面是交互结果的精确性。电商业务对交易结果的要求非常精确,而像搜索或者推荐这类侧重算法的产品产出的结果本身就是一种概率模型,不可能完全精确。复杂的场景要求架构设计得更加松耦合和可扩展,更加注重吞吐的优化,所以郑然注意到电商架构中可以大量使用微服务和消息队列机制来降低服务之间的耦合,Java 由于可以支持更快的研发效率,面对复杂业务场景在电商或者金融架构中也是主流,交易场景对分布式事务技术也有大量的应用场景。对结果的精确要求和相对复杂的业务流程,天然增加了业务的延迟,架构中可以侧重吞吐的优化。


随着人工智能技术的不断发展,基础架构的技术层面,郑然理解是一个从简单的单机系统向全面的分布式系统演化的过程。早期数据量少,算法也比较简单,小型的单机系统就可以轻松应付。随着数据量、算法复杂度的不断增加,对数据和算力的要求也越来越高,逐步引入了大量的分布式架构,比如分布式文件系统、表格存储系统、服务治理系统等等。在移动互联网时代,用户对内容的要求也发生着根本的变化,比如通过深度学习技术和大规模视频理解系统来提升对视频内容的理解程度,这些技术在百度智能云的视频云产品系列里也有体现。


如何看待中台和微服务?


郑然认为,中台的概念过于广泛,他主要分享了百度在技术方面的一些做法。在百度相同业务部门和不同体系之间都有很多技术中台的案例,比如垂类搜索架构会复用通用搜索架构中大量的基础能力,搜索引擎架构会复用公司基础架构团队的很多基础能力。技术上通常以服务的形式提供,这其中相对基础的技术能力是比较容易界定的,但是越偏业务侧的就越难界定,需要更高层次的业务和技术架构设计。


在郑然看来,微服务只是中台的一种实现形式,但并不是唯一的实现形式。微服务的本质是单一职责,是松耦合,是技术能力复用,这和中台的本质是一样的,所以如果业务部门微服务做得好,那么也更容易中台化。


云原生给架构带来了什么?


云原生这个时下最流行的技术概念,在郑然看来其实是云计算技术的第二次进阶。在前十年,云计算技术是围绕资源层的弹性来建设的,通过大量的虚拟化技术来实现 IaaS 层强大的弹性能力。但是最近几年,大家发现只有资源弹性还无法释放云的全部能力,业务必须充分意识到自己是运行在云上,按照云的特点进行设计才能进一步发挥云的威力,这就是 Native 的含义。


郑然所理解的云的特性中,核心是弹性,是按需使用。因此,业务架构也要向着弹性发展,比如微服务、存储计算分离、高可用等等,这对业务架构的要求也非常高。在 CNCF 社区的努力下,云原生不仅仅停留在理念和思想上,还涌现出了像 Kubernetes 和 Prometheus 这样成为事实标准的工业级软件,加速了云原生理念的落地。可以想象,随着这些标准化的云原生技术的普及,可以全面加速企业上云的进程,全面释放云的技术红利,让所有企业从中受益。


百度早在 2012 年就开始在云原生的理念下探索了,在 2015 年左右百度集群操作系统 Matrix 已经覆盖了大量的业务线,以此为基础的 PaaS 技术和在离线混部等技术也一直走在前面。2019 年春晚红包,百度作为历史上第一次春晚全程无宕机的公司,云原生的技术思想和业务架构起到了关键的作用。


郑然补充到,目前百度的云原生技术更多的是自研的技术体系,和 CNCF 社区的标准化技术方案有较大差异。团队看到了云原生社区的迅速发展和强大生命力,从 2019 年开始逐步拥抱 Kubernetes、Istio、Prometheus 等优秀的开源技术,希望结合自研的技术实践经验,将百度的优秀实践回馈到 CNCF 开源生态中去,促进云原生技术的发展,在 2019 年百度向 Kubernetes 社区的贡献进入全球前十的行列。


对于云原生是否适用于传统行业,郑然认为云原生适用于任何企业,CNCF 2019 年的年度报告中不乏各行各业的实践案例。事实上,云原生的本质是应用需要按照云的特点而设计,虽然很多业界标准的云原生技术能够帮助企业加速云原生理念的落地,但是企业必须认识到自身架构必须按照云原生的理念进行优化才能真正达到云原生的能力,这方面郑然认为没有捷径。很多企业希望完全依赖公有云厂商或者自己的 IT 部门就能实现云原生的转型是绝对错误的,只有业务积极适配云原生的技术理念,才能真正完成云原生的蜕变。


中小企业架构师应该如何设计 IT 架构?


架构是为了保证业务高速发展而准备的,作为架构师首先需要深入理解业务, 只有深刻理解业务需求,才能设计出最符合当前业务发展阶段的架构。除此之外,架构师还需要在某些维度锻炼自己的核心能力,郑然在自己的个人公众号里曾经写过一遍《架构师能力模型》的文章,总结了架构师应该锻炼的十项能力,稍微总结一下:


  1. 研发流程的持续改进。架构师不是单兵作战,一定需要团队的共同努力,那么需要对团队的研发效率了如指掌,并且针对性的提出优化手段。

  2. 归纳抽象和技术泛化能力。架构设计很多情况下郑然理解就是将共性和差异化的东西分离出来,共性的部分抽象成独立的接口,功能模块或者组件,差异化的部分分别形成其他代码模块。那如何识别或者分析出共性的部分,这主要就是依靠架构师的归纳,抽象和技术泛化能力。

  3. 业务和需求的分析和理解能力。架构师要能够接地气,只有更好的理解业务才能设计出符合业务发展阶段的架构。

  4. 技术折中和持续改善的能力。架构设计需要在很多因素中平衡,把握其中的平衡点并且知道后续如何改善是架构师内功的一种体现。

  5. 技术广度和深度。架构师毕竟仍然是工程师,而且大都是从一线研发工程师逐步成长和积累起来的,在某一技术领域或者技术方向通常都有较为深入的理解和积累。不管是一线研发同学还是架构师,至少应该在 1~2 个技术领域有着深入理解的基础上,再同时涉猎技术广度。

  6. 持续学习能力。计算机技术发展速度非常快,持续学习能力对于计算机工程师来说都非常重要,特别是架构师还要求开阔技术视野。持续学习能力与其说是一种能力,更多的还是一种习惯的养成。

  7. 技术影响力。可以多参加 QCon 的演讲。

  8. 沟通表达能力。对上可汇报,对下可讲细节,对用户可讲产品功能,沟通可以说贯穿日常工作的方方面面,是架构师综合能力的集中体现。

  9. 技术管理能力。架构师不是做完架构设计之后就可以高枕无忧了,架构师往往要带领整个研发团队完成架构的落地。这就要求架构师即使不是经理角色,也要具备一定的技术管理能力,从而带着整个团队一起完成工作。技术管理能力首先要求能够设定清晰的目标,这是整个团队工作的方向;其次要求在行进过程中不断纠正执行路径,执行路径很难在项目启动时就规划清楚,需要在执行过程中不断探索;有了目标和路径,还需要优秀的人才组成团队,所以架构师也不能疏忽人才招聘和人才培养的工作。

  10. 坚持正确的价值观,积极正能量。有着正确的价值观,时刻充满积极正能量的人,面对诱惑的时候,能够更加坚定自己的选择。面对困难的时候,可以主动寻找解决办法,有足够的韧性。这可能也是很多成功者的必备素质吧。


彩蛋:QCon 《架构演进》专题的思路和考虑


这是我第二次出品架构演进的专题了,很荣幸能够得到 QCon 组委会的邀请,作为一个技术人为技术社区出一点点力,帮助更多的同学成长。技术是为业务服务的,架构也需要按照业务的需求进行设计和演化,没有一次就设计完备的架构。那不同阶段业务的需求是什么?不同的行业,对业务和技术的需求有什么共同点和差异点?传统行业和互联网行业对技术的要求又有什么差异点?技术架构本身都是非常虚化的,很多经验丰富的架构师都是从多年的业务和技术发展过程中锤炼出来,那如何让更多的同学了解当面对业务需求的时候,选择什么样的架构方案呢?


带着这些问题,我想需要让同学们了解到更多不同业务场景下的典型案例,让经验丰富的架构师讲解架构设计的取舍,或许能够帮助大家少走一些弯路。所以出品这个专题的核心思路就是选择典型案例,既包括银行这样的传统行业,还包括快手、百度地图、微博等国内知名的互联网产品,同时还有谷歌大规模索引系统这样超硬核的技术分享。


受访嘉宾简介


郑然,现任基础架构部主任架构师,负责百度分布式集群管理系统和云原生架构。有着近 10 年的搜索引擎架构研发经验,先后研发了 3 代 PaaS 系统以及基础的微服务架构中间件,帮助百度搜索引擎提升集群的资源利用率和研发效率。积极参与技术社区的分享活动, 多次担任 QCon 等技术大会的讲师和出品人。




由郑然老师担任出品人的QCon北京2020“架构演进”专题邀请到不同行业的架构专家,和大家分享架构演进的成功案例,帮助企业赢得数字化时代的技术红利,点击了解详情


2020 年 4 月 15 日 14:255353
用户头像
小智 InfoQ 主编

发布了 396 篇内容, 共 308.2 次阅读, 收获喜欢 1717 次。

关注

评论

发布
暂无评论
  • 架构设计第二周作业

    请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

    2020 年 6 月 17 日

  • 大咖对话 | 创业就是把自己过去的经验快速的产品化

    最重要的事不是把增长从100%提到150%,而是全力投入到未来把天花板再提高10倍的工作中去。

    2018 年 6 月 8 日

  • ArchSummit 讲师专访:腾讯微博张松国谈腾讯微博的架构成长过程

    由InfoQ主办的全球架构师峰会将于2012年8月10日-12日在深圳举行,为了更好地诠释架构的意义、方法和实践,InfoQ中文站近期会集中对参会的讲师进行专访,本期采访的是来自腾讯微博事业部的技术总监张松国 ,他将会做题为“腾讯微博的架构成长过程”的分享。

  • 架构训练营第二周 - 作业

    请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

    2020 年 6 月 17 日

  • 架构 0 期 -week6- 命题作业

    下面两题,至少选做一题

    2020 年 7 月 16 日

  • 第四周作业总结

    前端使用前后端分离架构

    2020 年 10 月 18 日

  • 七牛云许式伟:我所理解的架构是什么

    架构大家都知道,但你知道它到底是什么吗?看许式伟如何理解架构。

  • 低成本构建大规模云端系统实践

    演讲嘉宾 蔡超,Mobvista技术副总裁兼首席架构师。 内容介绍 云计算“Scale on-demand”和“pay as you go”的特性使的我们可以以很低的硬件成本快速构建自己的系统。但是随着规模的日益扩大,其成本会迅速增长,甚至很快会超过那些基于自有硬件基础设施的传统解决方案。Mobvista作为一家快速成长的移动营销公司,在短短的5年时间里,其业务迅速增长。目前业务已遍及200多个国家及地区,每天处理150亿次的请求。与那些All in Cloud的公司一样,Mobvista面临了规模快速增长带来的巨大成本压力。 此次演讲,将通过本人在Mobvista的一些实践来讲述如何通过架构的演化(Microservice,Serverless)及利用云计算的新特性(如竞价实例)来有效降低系统成本。 演讲大纲 1、架构风格的转变; 2、更细粒度的伸缩; 3、有效利用Spot Instance降低成本。

    2018 年 9 月 12 日

  • 编程语言中的架构思考

    本次分享将探讨 Golang, Java, Python 等编程语言或者库的设计,及其对于代码结构和工程架构的影响。

  • 架构 0 期 -week3- 命题作业

    组合模式

    2020 年 7 月 1 日

  • 架构师需要具备哪些素质

    关于架构师的话题一直是社区讨论的热点,最近@caoz在微博针对“架构师”这个话题,发表了自己的见解,指出成为架构师的关键并不在于照搬公用、成熟的框架,而在于是否具备基本的系统资源监控以及瓶颈分析的本领。

  • 开篇词 | 微服务,从放弃到入门

    谈到将微服务落地,我有很多实战干货想和你分享。

    2018 年 8 月 20 日

  • 第七周总结

    没有一个架构是不会改变的,我认为所有架构都是为业务服务的,当业务改变时,需要做出一些列调整来实现所有的需求,之前肯定是从逻辑代码实现上来考虑,缺少一种大局观。业务代码逻辑修改虽然能够实现业务需求,但是忽视了不同实现方案对于系统的影响,只顾眼

    2020 年 11 月 8 日

  • 第一周架构方法 - 周总结

    第一周架构方法-周总结

    2021 年 1 月 2 日

  • 美团集群调度系统 HULK 技术演进

    演讲嘉宾涂扬,美团点评技术专家,基础架构部容器策略团队负责人。自 2014 年加入美团点评基础架构部以来,曾负责过美团基础架构部统一密钥服务 KMS、分布式调用链 Mtrace、消息中间件 Mafka、HULK 等项目的设计和落地,目前主要专注于服务治理、分布式系统、容器集群调度等方向。内容介绍伴随着美团业务量的不断上升,对机器数量的需求也在与日俱增,而全球数据中心的平均资源利用率在 6%~12% 之间,美团内部也已经拥有数万台服务器,HULK 正是为提升集团资源利用率而生。本次将为大家带来 HULK 在集群调度系统这块的技术演进路线以及在业务侧的落地经验。演讲大纲 集群调度系统的演进历程; 服务画像在集群调度中的应用; 业务侧落地过程中的挑战与解决方案; 未来规划。

    2019 年 6 月 11 日

  • Week04 总结

    对于大型互联网的架构,虽然有些经验 ,但是在老师的指导下,对架构有了更深入的认识;

    2020 年 7 月 1 日

  • 为什么总有人觉得 5 万块钱可以做一个淘宝?

    淘宝的工程师之所以要改进系统,真实的驱动力不是技术,而是不断攀升的业务量带来的问题复杂度。

    2019 年 4 月 3 日

  • 架构之书:雄心与《C++ 语言的设计与演化》

    《C++语言的设计与演化》是C++之父Bjarne Stroustrup写的一本书,主要讲 C++ 为什么会演成 C++98 的样子。

    2020 年 12 月 12 日

  • 第 62 讲 | 张溪梦:技术领袖需要具备的商业价值思维

    技术领袖必须转变成商业战略导向的思维,通过解决业务的问题,拉动增长,完成创新-战略-执行-结果的过程,和公司的CXO们一起为,企业的增长做出各种准备和努力。

    2018 年 7 月 31 日

  • 架构 homework1

    系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。

    2020 年 6 月 10 日

发现更多内容

程序员快乐器之JAVA代码生成工具

Learun

敏捷开发 快速开发 生成代码

起飞!这份技术点拉满的ELk+Lucene笔记,可能价值百万

小Q

Java lucene elasticsearch 架构 面试

epoll的原理和流程

Dnnn

聊聊开发工程师如何转型产品经理

长沙造纸农

程序员 开发者 产品经理 转型 中年危机

URL 去重的 6 种方案!(附详细实现代码)

王磊

Java

MYSQL中时间类型底层存储,DATETIME ,TIMESTAMP,INT 如何选择?

Dnnn

TCP三次握手和四次挥手

Dnnn

或许是史上最好的AQS源码分析了,AQS基础一

InfoQ_d2212957090d

AQS

遇到银河提现不了网站维护审核怎么办?

丛林里的余光

数据库 网站平台 提现

学完微软技术总监整理的44 个微服务架构设计模式,我涨薪了

Java架构师迁哥

算法与数据中台实践之网约车平台

博文视点Broadview

大数据 数据中台 中台 算法 数据

Redis哨兵(sentinel )机制讲解

Dnnn

bit比特, Byte字节,基础知识

Dnnn

anyRTC推流小助手-客户端推流(PUSH RTMP)工具

anyRTC开发者

技术 音视频 WebRTC 直播 RTC

分布式追踪系统原理看不懂,40张图带你亲手实践

小Q

Java 架构 面试 分布式 系统设计

Hadoop 简介

yuanhang

hadoop

GO 语言异常处理

Dnnn

go

理解大端字节和小端字节

Dnnn

Centos 上配置大数据环境

yuanhang

大数据

GO 语言超时实现

Dnnn

go

马云:今天的区块链并没有被人们认识到价值!

CECBC区块链专委会

区块链 阿里巴巴 马云

Linux命令netstat详解

Dnnn

教师节送什么老师最开心?程序员三招解决家长送礼难题!

华为云开发者社区

编程 程序

居然有人仅凭这份《Java面试宝典》就成功拿到了阿里、京东、字节跳动等大厂offer

Java成神之路

Java 编程 程序员 面试

【API进阶之路】用API打造一条自动化内容生产流水线

华为云开发者社区

自动化 API 部署

GO 语言交叉编译

Dnnn

go

GO语言 MD5 四种实现方式

Dnnn

go

如何设计Upload组件思考

赵孔磊

阿里架构师耗时三个月整理的Spring实战笔记:入门到实战

Java架构师迁哥

初识大数据

yuanhang

大数据

实战解析丨如何对Mysql连接请求的tcpdump内容进行分析

华为云开发者社区

TCP/IP 数据传输

2021年,算法还“香”吗?

2021年,算法还“香”吗?

架构演进:中台、云原生,百度基础架构背后的那些思考-InfoQ