热点|Hot CONTENTS/目录 MySQL之父:不要把一个优秀的开发者提升为管理者,那会是种资源浪费字节跳动开源KubeAdmiral:基于K8s的新一代多集群编排调度引擎 比JDK最高快170倍,蚂蚁集团开源高性能多语言序列化框架Fury不到一年,Istio项目正式从CNCF毕业 访谈文章|Interview 第一批因AIGC裁掉自家员工的老板该后悔了? 案例研究|CaseStudy 专访OpenSSFCTO:安全问题应该考虑在构建模型之前,别出了问题就让ChatGPT“背锅” 财报会议新时代:如何将AI训练成资深CFO 小白大挑战:24小时内用ChatGPT和Next.js开发开源项目,吸引上万用户!面向大模型的存储加速方案设计和实践 Cube轻量虚拟化如何做到100ms交付一个安全容器如何挖掘Bazel的极致性能 推荐文章|Article 面向故障处理的可观测性体系建设 红帽:我们为什么要改变RHEL源码的发布策略? LLM对程序员的冲击和影响 高薪缺人,但要懂全栈懂LLM,一个全新职业正在兴起!黄东旭:我对数据库如何Serverless化的一些思考 C++变化太大!该重新学习这门语言了 5天内用户数破亿、增速碾压ChatGPT,Twitter劲敌Threads是如何构建的? II 架构师 2023年08月刊 本期主编Tina 流程编辑丁晓昀发行人霍泰稳 反馈feedback@geekbang.com 商务合作hezuo@geekbang.org 内容合作editors@geekbang.com 特别专题|Topic 日增百亿数据,查询结果秒出,ApacheDoris在360商业化的统一OLAP应用实践ApacheDoris在叮咚买菜的应用实践 天眼查基于ApacheDoris构建统一实时数仓实践星云零售信贷基于ApacheDoris的OLAP演进之路 视频推荐|Video 百亿大表Join提速300倍!ApacheDoris在约苗数据平台的实时数仓建设实践 本月,这些视频值得一看! 卷首语 我们能从Telegram的开发中学到什么? Telegram由Nikolai和PavelDurov两兄弟于2013年推出。根据维基百科的统计,截至2023年7月,Telegram的月活跃用户已突破8亿。这一用户规模可与国民软件QQ相媲美。根据2023年第一季度的财报数据,24岁高龄的QQ移动终端月活跃用户为5.97亿。 虽然规模很大,但Telegram性能非常优异,其系统指标是一众社交软件看齐的对象。同时,始终坚持采用纯原生的方式实现,技术栈简洁干净。此外,自Telegram成立以来的这些年里,其受欢迎程度一直在持续增长,深受开发者推崇:“自从用了Telegram,我才知道某些即时通讯软件有多垃圾。” 在创办Telegram之前,这两位兄弟曾共同创建了俄罗斯社交网络VK。从技术角度来看,VK同样是一款出色的软件。根据VK的早期员工透露,尽管VK已经成熟,Pavel仍然对产品功能保持着高度控制,并怀有极高的期望:“Pavel对质量设定了极高的标准……不论是代码质量还是最终产品的品质。你必须用尽所能,使用各种方式达到这一标准。”在创办Telegram时,他们持续坚守这一高标准。 据报道,Pavel在控制方面一直具有独特性,他还引导着公司的愿景。一名员工形容他为“具有远见的人”,能够吸引并团结杰出工程师,以实现共同的目标。尽管Telegram规模超越QQ,但仅由一支小团队组成,由于团队采用扁平化的管理结构,他们负责的产品能够快速推进。 另外,他对人才的要求也很高,很少有公司像Telegram那样拥有如此多的才华横溢 的工程师。他们喜欢用“竞赛”来招募人才,比如通过举办“开发者挑战赛”来改进其产品并寻找新的队友。该公司曾举办了一场“GIF大赛”,数千人参加了这个比赛,Telegram再从这个人才库中聘用“前两名或前三名”。这是该公司在其整个生命周期中始终保持精简的部分原因。毫不夸张地说,它招聘的工程师是最顶尖的0.1%。 这种对技术和人才的高标准,使得Telegram在经过十年的发展后仍能在功能和技术方面保持高度内聚。或许我们应该庆幸有着Telegram这样的存在,它不仅提升了社交软件开发的标准,还推动了其竞争对手进行改进。 MySQL之父:不要把一个优秀的开发者提升为管理者,那会是种资源浪费 作者李冬梅 7月21日,ArchSummit全球架构师峰会在深圳召开。会上,MySQL数据库的原始版本主要作者以及MariaDB基金会的首席技术官,Michael“Monty”Widenius(以下简称“Monty”)在主论坛上分享了主题为《数据库技术前景理解,以及技术人的职业发展》的精彩演讲。 Monty是开源MySQL数据库原始版本的主要作者之一,并是MySQLAB公司的创始成员之一。此外,他还是风险投资公司OpenOcean的创始人和普通合伙人。凭借他在数据库领域的杰出贡献和丰富的行业经验,Monty在技术界享有盛誉。 在本次大会的Keynote主论坛的分享中,Monty提到了为什么他会认为大数据解决方 案是一种伪需求。Monty认为,大多数公司不会有像Facebook、Twitter、Bilibili、TikTok等公司那样多的真实数据需要“立即”访问。这些巨头们所使用的大数据解决方案并不适用于其他公司。 在不久的将来,大多数公司可以在几台机器上运行它们认为的大数据:内存现在大约2100美元/T,大多数公司可以买得起200G的RAM;现在SSD是50美元/T;用户可以从Nimbus获得100Tb的SSD,从Dell获得960Tb。16T可以很容易地购买到。如今,MariaDB可以轻松处理0.5T的活跃数据。只有当数据超过1T时,才需要考虑分析型数据库。很少有用户需要超过0.5T的数据。 在谈及技术人发展路径时,Monty表示,他自创立MySQL项目和MariaDB之后,只有在最开始时会亲自做一些管理事宜,后面就一直雇人来进行管理公司,做客户服务并领导公司,这样他就可以继续专注于架构、开发和领导MySOL/MariaDB开发团队。 因为他认为优秀的程序员十分难得。程序员需要8-10年,甚至更长的时间才能达到他们的巅峰。优秀的程序员是企业的宝贵资源,他们甚至70年间都可以输出高质量的代码。 Monty表示,“不要因为把一个优秀的程序员提升为经理人而荒废了他在编程领域的建树。一个好的程序员不一定是一个好的管理者。管理者可以通过赋予他们更多的责任来提升他们的价值,比如设计更大更复杂的系统,或者是帮助其他人编写代码,但不能是管理工作”。 字节跳动开源KubeAdmiral:基于K8s的新一代多集群编排调度引擎 作者KubeWharf开源团队策划蔡芳芳 项目地址:https://github.com/kubewharf/kubeadmiral 自2014年开源以来,Kubernetes已然成为编排调度系统的事实标准,为开发者提供了极大的便利。随着越来越多企业拥抱云原生,全球云基础设施规模仍在加速增长,Kubernetes社区版本单集群5000节点的规模已经无法满足企业级大规模应用场景,同时,更多公司选择使用多云架构满足降本增效、异地容灾、环境隔离等需求,多集群管理的必要性日渐显著。 背景 伴随业务的飞速发展,字节跳动内部Kubernetes集群的数量也不断壮大,集群数量超过500,应用的副本数从0到20000不等,其中最大的某个应用体量超过100Wcore。 早期出于隔离和安全的考虑,字节各个业务线独占集群,这些独占的集群带来造成资源孤岛,最终影响资源的弹性效率。这首先体现在各个业务线需要维护独立的buffer;其次业务和集群深度绑定,业务感知大量的集群,并在集群之间为应用人肉分配资源,SRE在运营资源上也需要深度感知业务和集群,最终导致资源在各个业务线之间的周转慢、自动化效率低以及部署率不够理想。因此我们需要引入联邦,解耦应用和集群的绑定关系,将各个业务线的资源并池,减少buffer,提升资源的自动化效率。 随着多云、混合云愈发成为业内主流形态,且Kubernetes成为云原生的操作系统,并就各类基础设施进一步抽象和规范,为应用提供更加统一的标准接口。在此基础上,我们期望引入联邦作为分布式云场景下的云原生系统底座,面向应用提供统一的平台入口,提升应用跨集群分发的能力,做好应用跨集群的分发调度,管理好多个云云原生场景下的基础设施。 KubeFedV2字节落地 apiVersion:types.kubefed.k8s.io/v1beta1kind:FederatedDeployment metadata: name:test-deploymentnamespace:test-namespace spec: template:#定义Deployment的所有內容,可理解成Deployment与Podtemplate之间的关联。 metadata: 面对多集群管理带来的挑战,基础架构团队在2019年以社区KubeFedV2为基础开启集群联邦的建设。KubeFedV2区分主控集群和成员集群,用户在主控集群中创建“联邦对象”,KubeFed的多个Controller根据联邦对象在成员集群中分发资源。联邦对象上有Template(对象模板),Placement(目标集群),Overrides(集群差异化)三个字段声明对象的部署情况。例如,可以在主控集群中创建如下所示的FederatedDeployment进行Deployment的分发: labels: app:nginxspec: ... placement: #分发到指定的两个集群中 clusters: -name:cluster1 -name:cluster2overrides: #在cluster2中修改副本数为5 -clusterName:cluster2clusterOverrides: -path:spec.replicasvalue:5 对于Deployment和ReplicaSet,KubeFed也允许通过ReplicaSchedulingPreference(RSP)指定更高级的副本分发策略。用户可以在RSP上配置每个集群的权重、最小与最大副本数,RSPcontroller自动计算出placement和overrides字段并更新FederatedDeployment或FederatedReplicaSet。 图片来源:https://www.kubernetes.org.cn/5702.html 但是,在具体落地时,我们发现KubeFed并不能满足生产环境的要求: 1.资源利用率低-KubeFed的副本调度策略RSP只能为每个成员集群设置静态权重,无法灵活应对集群资源的变化,导致不同成员集群的部署水位不均。 2.变更不够平滑-扩缩容时经常出现实例分布不均的现象,导致容灾能力下降。 3.调度语意局限-只对无状态类资源有较好的支持,对于有状态服务、作业等多样化的资源支持不足,调度扩展性差。 4.接入成本高-需要通过创建联邦对象进行分发,不兼容原生API,用户和上层平台需要完全改变使用习惯。 随着字节跳动基础架构的演进,我们对于效率、规模、性能与成本提出了更高的要求;同时随着有状态服务、存储、离线作业、机器学习等业务场景进一步拥抱云原生,支持多样化场景的跨集群编排调度能力显得愈发重要。因此,我们在2021年底基于KubeFedv2研发了新一代集群联邦系统KubeAdmiral。 KubeAdmiral架构演进 KubeAdmiral命名引申自admiral(读音[ˈædm(ə)rəl]),本意为舰队司令,加上 Kube(rnetes)前缀,寓意该工具具有强大的Kubernetes多集群编排调度能力。 KubeAdmiral支持Kubern