深度 | 字节跳动微服务架构体系演进

字节技术年货之实践篇:微服务架构演进、全链路压测、埋点数据治理…… 动手点关注干货不迷路????祝全天下的开发者朋友,新年职业发展虎啸风生,新年工资增速如虎添翼,新年爱情运势虎跃龙骧,新年代码事故下虎口逃生,虎!虎!虎!社区里缺少的不是架构图,而是可供参考复... 阅读详情

本文整理自字节跳动(火山引擎)基础架构/服务框架团队负责人成国柱在 QCon 2021 的分享,主要介绍了 2018-2021 年间,服务框架团队在 Golang 服务框架和 Service Mesh 上的技术实践和经验总结。


字节跳动微服务架构概述

在字节跳动,微服务架构的特征可以被归纳为 4 点,如下图所示:

首先是规模大、增长快。近三年来,字节跳动的微服务数量和规模迎来快速发展。2018 年,我们的在线微服务数大约是 7000-8000,到今年五月份,这一数字已经突破 5 万。伴随快速增长,服务框架团队也遇到了非常多挑战。

其次是全面容器化、PaaS 化。字节跳动的在线微服务,超过 90% 都运行在容器里。所有上线都通过 PaaS 化平台进行,这意味着线上不会存在物理机部署这种模式。这种做法既有一些挑战:增加调度复杂性;也带来了一些便利性:有利于新功能的推广。

第三,字节跳动的技术体系以 Golang 语言为主。根据最新的调查统计,公司里有超过 55% 的服务是采用 Golang 的,排名第二的语言是前端的 NodeJS,之后是 Python、JAVA、C++,Rust 也有一些使用。

最后是 Service Mesh 在字节跳动目前已经是全面落地状态,这块的详细内容会在本文第三节展开。

基于以上 4 个特点,当前字节跳动微服务架构遇到的主要挑战还是围绕研发效率、运行效率和稳定性。其中研发效率和稳定性是几乎所有互联网公司都会遇到的:多语言、易用性、性能、成本……在这些问题中,字节跳动服务框架团队和火山引擎云原生团队最关注的是以下三个:

  • 快速迭代。研发和上线一定要快;

  • 对多语言的支持要足够好。配合员工规模增速,要对多语言保持非常包容的态度;

  • 运行时的稳定性。

Golang 微服务框架的演进

2014 年,Golang 被引入字节跳动,以快速解决长连接推送业务所面临的高并发问题。到 2016 年,技术团队基于 Golang 推出了一个名为 Kite 的框架,同时对开源项目 Gin 做了一层很薄的封装,推出了 Ginex。这两个原始框架的推出,极大推动了 Golang 在公司内部的应用。

这种情况一直持续到 2019 年年中。在 Kite 和 Ginex 发布之初,由于很多功能版本过低,包括 Thrift 当时只有 v0.9.2,它们其实存在很多问题,再加上 Golang 迎来数轮大版本迭代,Kite 甚至连 golang context 参数都没有 。综上种种原因,Kite 已经满足不了内部使用需求。

在 2019 年中,服务框架团队正式启动了 Kite 这个字节自有 RPC 框架的重构。这是一个自下而上的整体升级重构,围绕性能和可扩展性的诉求展开设计。2020 年 10 月,团队完成了 KiteX 发布,仅仅两个月后,KiteX 就已经接入超过 1000 个服务。

类似的设计思路和底层模块也被应用在字节跳动自研 Golang HTTP 框架 Hertz 上,该项目在 2021 年春晚当天承载的服务峰值 QPS 超过 1000w(未统计物理机部署服务),线上无一例异常反馈。

RPC 框架 KiteX

KiteX 是字节跳动研发的下一代高性能、强可扩展的 Golang RPC 框架。除了具备丰富的服务治理特性,它还集成了自研的网络库 Netpoll,支持多消息协议(Thrift/Protobuf)和多交互方式(Ping-Pong/Oneway/ Streaming),提供自研的、更加灵活可扩展的代码生成器。

下图是 KiteX 的架构图,左侧是它的一些核心特点。

Kite 在发布之初使用的是原生的库,所以存在两个最主要的问题:一是无法直接感知对端连接状态;二是原生 net 网络库在面对长连接时,容易产生 goroutine 爆炸的问题。

这在 HTTP 场景下其实很常见,开发人员经常会遇到一个 HTTP 服务(包括使用 Gin 这种框架的时候)的内存出现持续增长。为什么?因为实际场景中客户端经常忘记关连接。

Netpoll 可以通过一个 React 模型去解决连接爆炸的问题,同时也带来一些 zero-copy buffer 的使用。

关于多协议,字节跳动的大多数服务采用的都是 Thrift 协议。而这里的多协议是应对一些业务提出的支持其他协议的需求。例如后端服务和端上的 Protobuf 打通。通过多协议支持实现了它和 Thrift 的解耦。现在 KiteX 同时支持 PB 和 Thrift 协议,也支持灵活的自定义协议扩展。

高性能是所有做框架的开发者共同追求的目标,这里不再赘述。最后,KiteX 是面向开源社区设计的。如上图所示,KiteX Core 是可以直接开源的部分,右侧的 KiteX Byted 涉及字节跳动内部工具,这块在对外时可以被替换成一些开源的日志库和方案。

截至今年 5 月,公司内已经有超过 20000 个服务正在使用 KiteX,同时它也支持了 streaming/泛化调用等需求。在开源上,技术团队也提供了一些监控和日志可插拔的 feature。

在性能上,相比当前社区比较认可的 gRPC 框架,kitex/thrift 实现了 2.5 倍吞吐量的提升,kitex/protobuf 也有近 2 倍的提升。在 TP99 延迟上,KiteX 也有不错的表现。

HTTP 框架 Hertz

2020 年 10 月,字节跳动内部推出 Hertz,作为代替 Ginex(Gin 封装版)的 Golang HTTP 首选框架。

Hertz 的设计思路和 KiteX 大致相同。它借鉴了开源项目 Gin、FastHTTP 的优势,引入了 Netpoll、内存池、零拷贝等技术,因此有着较高的性能。同等配置下,Hertz 的极限 QPS 是 Ginex 的两倍,平均延时则只有 Ginex 的二分之一。

下图是技术团队基于最新版本制作的 Benchmark。在小包和中包场景下,Hertz 相比 FastHTTP 有 30% 到 50% 以上的 QPS 提升;在大包场景,双方差距不大,Hertz 在平均时延上占优。

json 库 Sonic

2021 年春节之前,技术团队对线上容器数量排名前 50 的服务进行了性能瓶颈分析。通过调研,团队发现 json 在整体上占了 9.5% 的资源,在某些服务上的资源占用甚至达到 40%!

既然 json 性能这么差,为什么不换成 Protobuf?

在当时,技术团队确实将部分服务切成了 Protobuf,但考虑到 json 的易用性、受欢迎程度,以及更换协议导致的迁移成本和迁移风险,他们也开始尝试进行一些优化。他们调研了所有可获取的 Golang json 库,并在业务场景下都做了比较详细的对比和分析,发现了一些问题并做了优化:

  • JIT:有些 json 库已经开始展现出 JIT 特征,但还停留在把常见代码片段通过聚合的方式组织起来,没有做到非常极致的 just in time 编译,因此需要推进一步;

  • 前置筛选+SIMD:simdjson 在一些大包场景下的表现很不错,但在一些小包场景下的表现其实不太好,因此需要做前置筛选和 SIMD 优化;

  • asm2asm: C++ -> Go——“优化 Go 最好的方法就是不要用 Go”,技术团队发现用 C++ 写 json 常用函数,把它们编译成 x86 汇编,再通过内部 asm2asm 这个工具转成 Go 的汇编,可以获得非常大的性能提升;

  • lazy-load 解析器:针对多 key 查找的场景,做了一个解析器。

基于上述优化,在一个 110KB 的真实业务请求场景下,相比其他 json 库,Sonic 在每个场景下的表现都有成倍的提升。目前 Sonic 已经开源,但经过内部服务测试,它还处于比较初级的阶段,有一些稳定性问题,后续会有相关团队持续跟进。


字节跳动的 Service Mesh

首先是几个数字。从 2018 年 6 月至今,字节跳动在三年间共上线了约 30000 个服务,Service Mesh 管理的容器数已经超过 300 万个。所有业务场景,以及 ToB 和边缘计算场景,现在都处于 Mesh 全覆盖的状态。

下图是公司内部 Service Mesh 的架构示意图。除数据面和控制面外,它还有一个运维控制面(Operation Plane),且具备两个突出特点:

  • 在数据面,字节跳动的 Service Mesh 实现了中间件的能力 sidecar 化,形成一个标准模式,下图中的通用 sidecar 即标准技术方案;

  • 该 Service Mesh 的运维控制面可以发布多种不同类型的资源。但凡需要集中发布的资源,例如 Mesh 的 sidecar,例如 WebAssembly 的资源、动态库,都可以通过运维控制面进行发布。

字节跳动内部 Service Mesh 的主要特征

当前字节跳动 Service Mesh 的特点可以用 4 个关键词概括:

全功能。除了前文提到的 RPC 框架、HTTP 框架,字节跳动的 Service Mesh 已经对中间件、MySQL、MongoDB、Redis、RocketMQ 等提供全面支持,在安全能力、服务治理能力,包括流量复制、mock、容灾等方面,它均可提供完整功能。

多场景。字节跳动的 Service Mesh 适用于内网环境、边缘,也可被用于把两个 IDC 串联起来。IDC 串联为什么要通过 Mesh?因为跨 IDC 的网络是不稳定的,考虑到高昂的成本和严格的服务访问控制,需要通过 Mesh 提供较强的边缘管控能力。

稳定性。这是一个比较常见的话题,此处不做展开。

高性能。字节跳动 Service Mesh 的性能优化基于技术团队的理念:如果目标是做一个真正 zero copy 的 proxy,而我们做不到,那么它的原因是什么?网络和内核、基础库、组件架构、编译——如果阻碍来自内核,就去改内核的 API,例如降低 sendfile 的开销。围绕这一理念,技术团队通过采用 Facebook 的 hashmap,带来了 1%-2% 的性能提升;通过重写抽象层,实现 35%-50% 的吞吐量提升;通过全静态编译,无需修改任何代码,就获得了 2% 左右的性能提升……

下图展示了技术团队在性能优化方面的主要思路和措施:

性能:基于共享内存的 IPC

如前文所述,技术团队想实现的是真正 zero copy 的 proxy。那么拷贝发生在哪里?

上图是一个最原始的状态,mesh proxy 带来了两层 copy,一次是把业务进程 copy 到 Unix Domain Socket 的 Buffer 里,另一次是读取出去。此外它还多了一个进程,而多一个进程,就意味着增加了调度开销,同时也会产生一些复制成本。

针对这个问题,技术团队采用的做法是把它只写进内核一次。通过一个共享内存的 IPC,业务进程把准备发送的数据写进去后,mesh proxy 只需根据 meta header 就可以决定任何调度策略和治理策略,并通过调用下游发送函数把数据发出去。

但现在 TCP Socket 是不能直接把数据发出去的,怎么办?请负责内核的团队写一个 API。这样,整个 overhead 就可以降到最低值。

上图是采用共享内存 IPC 的性能测试结果。从 2020 年初开始,字节跳动内部就已经开始走上这种数据走共享内存、控制信号走 Unix Domain Socket 的路,同时做好控制协议。确实这条路也是可以走下去的,当前已经有 500+ 服务在线上进行灰度,整体稳定性不错。未来技术团队也计划把这种优化方式扩展到所有涉及同机通讯的场景。

另外,定义一个通用的协议,可以实现这种能力的复用。随着容器与容器之间的通信变得越来越频繁,这种基于共享内存的通讯的重要性也会日益凸显出来,字节跳动内部 Service Mesh 的通用 sidecar 也是基于相同的思考。

可观测性:Service Mesh 之痛

基础架构部门经常会被问到两个问题:

  • Q1:上下游延迟不一致——为什么我在客户端看到的延迟是 100 毫秒,而 Server 端处理只花了 50 毫秒,中间这 50 毫秒去哪里了?

  • Q2:请求超时——接了 Mesh(不接 Mesh 其实也一样),我的请求为什么就超时了?

如果深入地去思考这个问题,可以发现,它的根本原因在于一次请求的时间可以分为业务可见的部分和业务不可见的部分。

比如开发人员做一次加密耗时 1 毫秒,但调用一个服务做一次加密可能需要 10 毫秒。这 9 毫秒到底去哪里了?很多开发人员会认为这是环境的问题,或是基础架构的问题。这个问题一直存在,而且相当普遍。

那么,延迟来自哪里?

  • 计算。比如序列化,上游其实不会关心请求的序列化和反序列化,以及从用户态拷贝到内核态,这些都可以被归类到计算里,而这些延时业务侧是感知不到的(此处需要区分感知与可观测,通过监控可以看到这部分耗时,但一般业务不理解这儿的计算耗时,认为处理时间仅仅是自己的业务逻辑);

  • 调度。比如要异步发送一个东西,数据写入后,上游并不知道会什么时候发。如果机器负载非常高,可能需要等待 100 毫秒,甚至任务会在容器里被 CPU throttle 掉,这时从上游的角度看就是请求超时;

  • 网络。出现超时后,网络永远是第一个排查项:是不是挂了?是不是变慢了?

分析清楚这三个问题后,那么应当如何解决呢?服务框架团队的做法是推进 LLT(Low Level Tracing)。即把上游看不见的地方都做可视化处理:如果计算耗时看不到,就把计算时间表现出来;如果调度情况无感知,就把调度的用时算出来;如果网络情况不清楚,就把网络的用时也算出来。完成内核网络及调度事件收集后,这些时间最终都会汇入 OpenTracing 集中展示。

如上图所示,当上游开始调用 RPC Client write() 时,事实上就已经进入业务不可见范围。

字节跳动内部有一套基于 eBPF 做的 tracing 体系,它能根据提供的 log ID 展开追踪,把请求什么时候进入内核、什么时候从网卡发出等时间戳记录下来。有了这些信息,技术团队就能通过 OpenTracing 看到请求什么时候从本机发出、什么时候对端收到、什么时候开始进入 Mesh 处理、什么时候开始进入业务层处理……整个链路变得十分清晰。

上述方案的 CPU overhead 约为  8%- 10%,整体开销稍重,所以目前是按需开启状态。

字节内部 Mesh:通用 sidecar 的出现

Service Mesh 的出现源于技术社区希望用它解决多语言、运维、迭代等问题,这种概念可以被泛化,即是否可以为解决多元问题和运维问题同样打造一套标准技术方案。毫无疑问,所有中间件都在这个范畴内,无论是 MySQL、Redis Client,还是 API Gateway、登录组件、风控组件,它们都属于这一领域。

同时,Service Mesh 背后的能力也可以被复用:既然可以把 Mesh 的 sidecar 分发到线上任意一个容器,并完成安全的热升级,那么同样的方法也可以被用于中间件的 sidecar。

字节跳动的 Service Mesh 提供通用 sidecar,把诸如 API Gateway sidecar、风控 sidecar、登录及 Session sidecar 等以 Mesh 的方式分发到容器里。这样做并不会对业务侧造成什么影响,但后果是它们也需要应对性能、可观测性、稳定性等问题。由于 Service Mesh 在字节跳动已经大规模落地,这些问题的解决方案其实和 mesh proxy 没有太大差别。

总结与展望

谈到微服务,由于缺乏直观感受,很多人往往只关注服务的功能层面,而忽略底层的运维属性。但其实现在为什么社区还在不断讨论微服务,因为它部署在公有云、私有云、混合云等充满不确定性的环境下,解决的是由此带来的各种复杂性问题。

但换个角度看,如果开发人员都使用同一种语言,不做跨机器和跨进程的通讯。当所有服务都部署在同一台宿主机上,类似跨网络通讯、请求超时等问题会大大减少,通过共享内存或是无序列化等手段,整体性能似乎可以获得最极致的提升。

这是不是破坏了微服务的概念?其实不然。这样的部署对于业务来说是透明的,只要宿主机规格足够,开发人员可以通过调度按服务域进行聚合,框架层和流量调度层感知情况后,很自然地就会把远程通讯切换成本地通讯,使得性能得到大幅优化、延时降低。如果机器出现宿主机级别的故障,所有服务确实会一起挂掉,但如果只是某一个模块出现故障,则可以把它轻松 fallback 到其他服务上。

这也是字节跳动内部正在进行的探索,为解决由微服务数量不断增长、复杂性不断提高导致的非业务消耗比业务消耗还要高的问题。

在微服务领域,除了内部探索,字节跳动也在尝试通过服务框架团队和火山引擎云原生团队做技术输出,通过 ToB 品牌火山引擎为更多企业提供微服务和 Service Mesh 方面的解决方案。

本周推荐

2021 年云原生技术发展现状及未来趋势

2021-08-17

蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路

2021-07-29

我们做出了一个分布式注册中心

2021-07-27

开启云原生 MOSN 新篇章 — 融合 Envoy 和 GoLang 生态

2021-07-06

站在巨人的肩膀!字节跳动的这份高并发架构设计的太牛了,不愧是一线大厂(附完整版PDF) 阅读详情

相关推荐

AI系统集成架构演进:从单体到微服务转型

(注:实际发布时建议使用架构演进时间线图示)

AI 原生应用开发的博客 914

字节跳动的技术架构

字节跳动的技术架构 原创软件真理与光 最后发布于2020-02-12 01:20:08 阅读数 14701 收藏 展开 字节跳动创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。 一、产品背景 今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):...

cxu123321的博客 7242

手把手教你用U盘给海信IP501H刷机:GK6323V100C芯片的4.4.2和9.0固件实战

本文详细介绍了海信IP501H电视盒子基于GK6323V100C芯片的刷机实战指南,涵盖Android 4.4.2强刷和Android 9.0免拆刷机两种方案。从工具准备、短接操作到ADB调试,提供全流程解析和常见问题解决方案,帮助用户安全高效地完成刷机操作。

lemon的博客 1456

微服务框架之Kitex

Kitex 是由字节跳动(ByteDance)开发并开源的一款高性能微服务框架,专为构建分布式系统和微服务架构设计。Kitex 基于 Golang,旨在提供一个简单、高效、灵活的开发体验,帮助开发者快速构建和部署可靠的微服务。

youziguo的专栏 2553

DeepSeek的训练与优化流程

DeepSeek的训练体系不仅追求极致的计算效率,更注重将物理规律、人类知识、安全伦理深度融入训练过程,其"效率-安全-可解释性"三角平衡的设计理念,为行业提供了重要参考范式。

m0_56896669的博客 1435

matlab特征提取和分类_SAST Weekly|MATLAB机器学习初探——做个心音分类器

SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享知识的同学投稿至 eesast@mail.tsinghua.edu.cn , 期待你的作品!本期的SAST weekly,想跟大家分享一下如何用MATLAB进行初步的机器学习,构建一个正常/...

weixin_36453829的博客 5579

【字节青训营-7】:初探 Kitex 字节微服务框架(使用ETCD进行服务注册与发现)

初探 Kitex 字节微服务框架,简单使用ETCD进行服务注册与发现。

theaipower的博客 2万+

NLP自然语言处理:神经网络语言模型(NNLM)

目录 一、传统语言模型 1.1 稀疏性 1.2泛化能力差 二、神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1循环神经网络模型示例 2.2.2RNN语言模型训练过程 2.2.3RNN语言模型反向传播 2.2.4语言模型评估 语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛...

陈宸的博客 1万+

首次揭秘!字节跳动基础架构技术迭代演进之路

作者丨薛梁嘉宾丨梁宇明互联网科技公司的长久稳定发展,离不开坚实的技术支撑。在全球拥有 15 亿月活用户的字节跳动,背后的技术支撑,离不开牢固的基础架构和对技术理解深刻的技...

HollisChuang's Blog 1万+

Plant Simulation 快速建模与布局(3)——自动生成的对象 代码“安全”删除管理

《PlantSimulation快速布局建模课程》教授利用SimTalk语言实现高效建模的技术要点,包括批量对象创建、阵列布局、属性管理及自动连接功能。重点讲解对象安全删除机制,通过existsObject检查对象存在性后使用deleteObject方法删除,避免程序报错。课程提供完整代码示例,展示如何通过循环结构实现矩阵布局对象的创建与安全删除,确保代码健壮性,显著提升建模效率。

qq_31964455的博客 119

从 Classic ABAP 到 ABAP Cloud:一份面向开发者的 SAP 学习路线图与实战指南

ABAP技术演进路线:从语法到架构思维 本文系统梳理了现代ABAP开发者的能力成长路径。在S/4HANA与云时代,ABAP已从传统过程式语言转变为支持面向对象、测试驱动和云原生开发的现代技术栈。学习路线应围绕四大核心维度展开:1) 语言基础(ABAP OO/Modern ABAP);2) 工程化实践(ABAP Unit/ATC/Clean ABAP);3) 数据建模(CDS/AMDP);4) 服务化架构(Gateway/OData/Fiori)。文章强调以交付形态倒推技术栈,通过真实案例展示了如何将零散技术

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 361

java基础:从单体到微服务:分布式架构演进的本质与边界

架构演进的核心是"适配"——适配业务规模的增长,适配团队协作的模式,适配技术能力的边界。单体应用的简单高效、SOA的企业级集成、微服务的极致弹性,分别对应不同阶段的最优解。在阿里、字节跳动等企业的实践中,成熟的架构师从不盲目追求"微服务"标签,而是根据业务复杂度、团队规模、技术债务等因素,选择"够用且可持续"的架构方案。理解这三种架构的区别,本质上是理解"如何在复杂性与效率之间寻找平衡"——这也是资深工程师与普通开发者的核心差距。

weixin_43290370的博客 1014

基于STM32单片机设计的智能坐垫_431

本文设计了一款基于STM32F103C8T6单片机的智能坐垫系统,该系统集成了压力传感器、SHT30温湿度传感器、薄膜加热垫、涡轮风机、语音播报模块、OLED显示屏及HC-05蓝牙模块,实现了对用户就坐状态与坐垫微环境的实时监测与智能调控。系统通过压力传感器检测用户就坐情况,自动启动久坐计时并触发语音提醒;温湿度数据用于控制通风与加热功能,以改善座椅舒适性;用户可通过按键或手机APP设置久坐时长、手动开关通风与加热,并通过OLED屏或APP实时查看环境参数与计时状态。本设计体现了嵌入式系统在健康关怀与舒适性

409

孩子王中台架构演进之路_首次揭秘!字节跳动基础架构技术迭代演进之路

作者丨薛梁嘉宾丨梁宇明互联网科技公司的长久稳定发展,离不开坚实的技术支撑。在全球拥有 15 亿月活用户的字节跳动,背后的技术支撑,离不开牢固的基础架构和对技术理解深刻的技术人。目前主管字节跳动基础架构团队的是梁宇明,梁宇明 2010 年清华大学毕业后加入 Hulu,曾担任 Hulu 中国数据与广告团队负责人。2018 年,梁宇明离开 Hulu,加入字节跳动,成为字节跳动基础架构团队负责人...

weixin_42132359的博客 1302

继电保护原理1.2-反时限过流保护

反时限过流保护

让你爱上电路设计 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

微服务架构深度解析:从初学者到面试通关

微服务架构深度解析:从初学者到面试通关

shaozheng0503的博客 1090

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

字节跳动技术面试深度解析与23K月薪攻略

技术面试是衡量开发者能力的重要环节,尤其在一线互联网公司如字节跳动。面试评估通常涵盖算法能力、系统设计、项目经验和基础知识四大维度,其中系统设计能力尤为关键。理解TCP三次握手等基础原理只是起点,真正的技术价值在于能将这些知识应用于实际场景,如高并发系统设计中的分片与缓存策略。对于23K月薪的中级开发岗位,面试官更看重候选人的深度技术理解和系统性思维,而非简单的题库背诵。掌握STAR法则描述项目经验、熟悉常见系统设计模式如分片与CDN,以及算法题的高效准备方法,都是提升面试表现的有效策略。

weixin_33749131的博客 417

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

云原生时代下,微服务体系与 Serverless 架构的发展、治理与融合

7 月 22、23 日为期两天的 2022 稀土开发者大会召开在即,此次阿里云 Serverless 研发负责人杨皓然(不瞋)作为大会出品人,带来《微服务与 Serverless》专场演讲,邀请到字节、阿里等各大厂的核心业务负责人,为各位开发者分享微服务与 Serverless 方向的探索实践和经验心得,带你探究 Serverless 前沿动态。...

阿里巴巴云原生的博客 998

字节跳动高速增长的数据技术秘籍

活动介绍在数据驱动业务增长的今天,数据已成为企业的重要资产,高效地收集、存储、分析数据可帮助企业科学决策,挖掘业务增长点。7 月 24 日,火山引擎开发者社区 Meetup 第四期,邀请到...

Docker的专栏 801

下一代微服务:Serverless 在字节、阿里等大厂的落地实践

微服务和 Serverless 正在成为一对最佳拍档。云计算时代,容器和 K8s 的出现让微服务架构开始发挥更大的效能,如今云应用正朝着无服务器的方向发展,Serverless 简化了开发模式,开发者不用再关心 Server ,只需专注业务逻辑。然而软件开发没有银弹,一些问题得到解决的同时,新的挑战也随之产生。如今,Serverless 已扛起了变革传统 IT 架构的大旗...

云原生实验室 514

字节跳动是如何落地微前端的

???? 加个关注,后续上新不错过~本文内提及的 Garfish 微前端解决方案已开源:https://github.com/modern-js-dev/garfish(目前的 Garfish ...

LuckyWinty的博客 488

揭秘字节跳动的测试架构:亿级流量的质量保障体系

字节跳动质量保障体系以数据驱动和工程化为核心,构建了分层治理的技术架构:底层为统一测试平台,中层标准化工具链,上层定制化解决方案。通过智能化自动化测试、持续测试与混沌工程、大数据质量分析三大技术栈,实现全链路质量管控。在推荐系统和国际化业务等场景中,采用A/B测试一体化、多地域验证等专项方案。未来趋势将聚焦AI赋能测试、优化开发者体验和质量成本精细化,推动测试专家向技术、数据与业务复合型人才转型。该体系实现了从被动检测到主动共建的质量管理范式升级。

2501_94261392的博客 788

2025年,微服务架构和大模型能“玩出”什么新花样?

但随着业务的复杂度增加,单体架构的局限性愈发明显,比如扩展性差、可靠性低、易出现性能瓶颈等,难以满足大规模、高并发、高可用的需求。Eino 基于明确的“组件”定义,提供强大的流程“编排”,覆盖开发全流程,旨在帮助开发者以最快的速度实现最有深度的大模型应用。随着 AI 编码技术的日益成熟,传统的编程和开发模式正在发生巨变,对工程师的技能要求也在不断变化,除了需要具备编程能力,还需要掌握更多跨领域的知识和技能,以提升自己在 AI 浪潮中的竞争力。,与技术领袖共探云原生 × AI 时代的微服务架构与技术实践。

weixin_44186218的博客 2164

一文带你搞懂微服务架构深度解析:微服务的采用前提,技术与理念

技术团队关注的焦点往往是架构的实现和业务建模,容易忽略微服务架构带来的一系列负面影响,通过微服务监控与治理可以全方位地掌控当前服务的运行状态和资源利用情况,可以说,服务治理与监控既是微服务架构在平台层面的核心工作,也是微服务应用“长治久安”的前提。微服务的理念与SOA服务架构是一脉相承的,微服务架构同样强调面向服务,将一个大的“问题空间”通过领域建模拆解分为实体之间的关系和行为,使用限界上下文(Bounded Context)将实现细节封装起来,让服务可以独立伸缩,每个服务都有明确的边界。

2401_84438893的博客 1094

你知道微服务架构深度解析:微服务的主要特性有哪些吗?

虽然,ESB架构改变了传统软件的架构模式,消除了不同应用之间的技术差异,协调了不同应用服务的协作运行方式,实现了服务之间的集成和整合,但是,ESB架构倾向于使用集中式的架构管理模式,它本质上是一种中心化的架构。同时,随着服务规模的扩大,中心化架构的可扩展性会成为一个极大的障碍。在软件领域,我们一直提倡使用复用的方式构建系统,粒度更细的服务通过独立的部署,通过声明语言无关、平台无关的标准接口(REST API、gRPC)对外暴露服务,实现了积木式的架构搭建模式,提高了软件整体的开发效率。

2401_84439805的博客 1070
上一篇: 2021 年云原生技术发展现状及未来趋势
下一篇: 「成都站」SOFAStack & Erda 邀你聊一聊云原生的基础设施建设
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值