HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

  • 2020-04-15
  • 本文字数:3865 字

    阅读完需:约 13 分钟

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

百度的核心业务对基础架构有没有特殊的要求?中台和微服务在架构领域处于什么样的位置?云原生架构的本质和影响是什么?中小企业架构师该如何设计 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-04-15 14:256531
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 388.9 次阅读, 收获喜欢 1980 次。

关注

评论

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

缺少IT人员的服装行业该如何进行数字化转型?

优秀

数字化转型

使用 NGINX 在 Kubernetes 中对 TCP 和 UDP 流量进行负载均衡

NGINX开源社区

nginx Kuber udp tpc 企业号 2 月 PK 榜

Gluten 首次开源技术沙龙成功举办,更多新能力值得期待

Kyligence

开源技术 Gluten

活动回顾丨研发效能度量线下沙龙圆满举办

Kyligence

数据分析 Kyligence Zen

AI for Science系列(一) :飞桨加速CFD(计算流体力学)原理与实践

飞桨PaddlePaddle

paddle 算法 飞桨 框架技术

部署 OpenLDAP 对接到 DataEase实现统一用户管理

搞大屏的小北

ldap openldap 统一管理 DataEase

拒绝“ 背锅”!数据治理从策略到落地,发挥CMDB价值!

嘉为蓝鲸

CMDB 自动化运维 嘉为蓝鲸

10分钟学会使用 Loki 日志聚合系统

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业号 2 月 PK 榜

AI for Science系列(二):基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!

飞桨PaddlePaddle

深度学习 paddle API 飞桨

WorkPlus“Meet”,让企业高效协作的视频会议系统

WorkPlus

如何使用DevEco Studio创建Native C++应用

OpenHarmony开发者

OpenHarmony

多个云服务器管理小技巧-行云管家

行云管家

云计算 云服务器 云管理

软件测试 | 霍格沃兹线下班开课啦!

测吧(北京)科技有限公司

测试

项目终于用上了低代码,才知道为什么真香了!

引迈信息

项目管理 低代码

江苏省16家正规等保测评机构名单看这里!

行云管家

等保 等级保护 等级保护机构 江苏

可观测落地实践——从战略管理到工具落地

嘉为蓝鲸

可观测 自动化运维 嘉为蓝鲸

案例介绍:使用A-Ops性能热点火焰图进行性能诊断

openEuler

Linux 操作系统 openEuler 性能测评 A-Ops

购买LED液晶拼接屏的十大原则

Dylan

显示器 LED显示屏 led显示屏厂家

还在头疼每月房贷还款,这个房贷计算机让你一目了然

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟

MySQL审计插件-MariaDB Audit Plugin

GreatSQL

:MySQL 数据库 maria greatsql greatsql社区

飞桨全量支持业内AI科学计算工具——DeepXDE!

飞桨PaddlePaddle

人工智能 深度学习 开源

软件测试/测试开发 | App测试时常用的adb命令你都掌握了哪些呢?

测试人

android 软件测试 自动化测试 测试开发 adb

GhatGPT在信息安全方面的应用

HummerCloud

ChatGPT

活动预告 | GAIDC 全球人工智能开发者先锋大会

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路径简介、多路召回融合]

汀丶人工智能

自然语言处理 深度学习 推荐系统 搜索算法 召回算法

大曝光!从RabbitMQ平滑迁移至Kafka架构设计方案!

艾小仙

kafka 架构 RocketMQ RabbitMQ

AI for Science系列(三):赛桨PaddleScience底层核心框架技术创新详解

飞桨PaddlePaddle

人工智能 paddle 飞桨 框架技术

你什么档次?敢和我用一样的即时通讯平台WorkPlus?

WorkPlus

学术贴 | FPGA 加速图数据库查询执行

KaiwuDB

数据库

【实操演示】使用NineData修改来管理ClickHouse的数据库表结构。

NineData

数据库 开发者 Clickhouse 表结构 NineData

调查报告解读之国外数据库篇:MySQL国内使用率第一,多少企业有意替换国外产品?

墨天轮

MySQL 数据库 oracle redis 国产数据库

架构演进:中台、云原生,百度基础架构背后的那些思考_QCon_小智_InfoQ精选文章