当前位置: 首页 > news >正文

b站高可用架构 笔记

b站高可用架构

关键点:主机房,多活和多活机房

参考文章:bilibili技术总监毛剑:B站高可用架构实践

1. 前端和数据中心负载均衡

  • 前端负载均衡(动态CDN):最近节点、带宽策略、可用服务容量

  • 数据中心负载均衡:均衡流量、识别异常节点、扩容、提高可用性

  • 子集选择算法:减少心跳检测成本,平均分配后端至客户端,节点变更持续均衡

  • 高并发:多集群提高吞吐量,数据保存多缓存,单集群故障迁移成本降低

2. 负载均衡算法

  • 正常:轮询

  • 问题:请求处理成本不同、物理机差异、k8s容器切换用户感知

  • 关键:考虑服务器可用性,构建全局视图,负载+可用性

  • 算法:choice-of-2 算法,选2节点打分选择;预热新节点;低分节点统计衰减避免“永久黑名单”

3. 分布式限流

  • 作用:服务器过载,先降级服务->限流保证服务稳定

  • 正常:静态QPS

  • 问题:某用户请求过重,挤兑其他用户

  • 关键:不同流量、重要性、用户对应不同QPS,最重要服务自保

  • 解决:使用算法quota-server获取quota,基于滑动窗口(一段时间内使用的次数)最大值计算quota;最大最小公平算法解决大消耗者饥饿;客户端概率公式截流,不全部拒绝

  • 配额获取:基于统一错误码

4. 重试、超时、应对连锁故障

  • 重试:限制次数,只失败层重试,失败返回错误码避免级联,设置周期速率诊断

  • 超时:高并发高延迟引发故障,超时为fail fast让请求消耗或丢弃,上下游不一致导致资源浪费

  • “默认值策略”:每个请求每个阶段检查足够剩余时间

  • 跨进程超时控制:rpc承诺超时时间,不足取消传递,超时时间覆盖上游

  • 应对连锁故障:避免过载,限流->降级,重试退避,超时控制,变更管理,压测演练,扩容重启消除流量

5. 其他

当客户端访问服务时,将用户数据保存到多个缓存上

  • 当Quota耗尽或申请Quota的时间过期,也能主动拉取数据。

  • quota server故障:降级本地策略或直接放行

  • Apisix vs Envoy:Apisix基于nginx ,nginx的多 worker 的协作方式具有高并发优势,Envoy总线设计使得处理东西向流量具有优势

多服务器心跳检测成本过高:

解决:子集选择。client不连接全集,只连接一部分服务器进行负载均衡。

6. b站架构
在这里插入图片描述

  • 无限递归导致主机房CPU爆掉,限流无解,用户刷新多活机房流量挂掉

  • 崩溃不影响CDN静态资源

  • 多活:不同业务不同机房,主机房承载所有在线业务

无限递归导致主机房CPU爆掉,限流无解,用户刷新多活机房流量挂掉

问题:

1. b站架构如何实现高效和可靠的负载均衡

  • 前端和数据中心负载均衡器(BFE和Envoy),选择最近节点、根据带宽和容量均衡流量

  • 子集选择算法,减少连接和心跳检测成本,持续均衡节点变更

  • choice-of-2算法考虑服务器可用性,选2节点打分选择,预热新节点,统计衰减低分节点

2. 如何优化超大规模集群的连接和限流

  • 子集选择算法,客户端只连接后端子集,减少连接和心跳成本

  • quota-server获取和计算quota,减少请求backend频次;滑动窗口算法;最大最小公平算法防大消耗者饥饿

  • 客户端概率公式截流,不全部拒绝,配额获取基于统一错误码

3. 如何设置合理的重试和超时策略- 重试:限制次数,只失败层重试,失败返回错误码避免级联,设置周期速率诊断

  • 超时:高并发高延迟引发故障,超时为fail fast让请求消耗或丢弃
  • “默认值策略”:每个请求每个阶段检查足够剩余时间
  • 跨进程超时控制:rpc承诺超时时间,不足取消传递,超时时间覆盖上游

4. 如何防止和处理连锁故障- 避免过载,限流->降级,重试退避,超时控制

  • 变更管理,压测演练,扩容重启消除有害流量

5. 如何利用多活机房来提高服务可用性

  • 多活(容灾):根据不同业务选择不同机房,主机房承载所有在线业务

其他:主机房CPU炸掉,限流无解,用户刷新导致多活机房流量挂掉,导致崩溃。

相关文章:

b站高可用架构 笔记

b站高可用架构 关键点:主机房,多活和多活机房 参考文章:bilibili技术总监毛剑:B站高可用架构实践 1. 前端和数据中心负载均衡 前端负载均衡(动态CDN):最近节点、带宽策略、可用服务容量 数据中心负载均衡:均衡流量、识别异常节…...

Android: Ubuntu下交叉环境编译常用调试工具demo for lspci命令(ARM设备)

lspci命令交叉环境编译(ARM设备) 交叉编译工具下载: https://releases.linaro.org/components/toolchain/binaries https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/ lspci命令交叉环境编译(ARM设备): 1&a…...

《2023全球IPv6支持度白皮书》近日发布

近日,全球IPv6论坛联合中国的下一代互联网国家工程中心面向全球发布《2023全球IPv6支持度白皮书》。白皮书显示,在过去一年,全球IPv6支持度大幅提升,部署应用成效显著。全球IPv6部署率超过40%的国家数量同比增长了30%,…...

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring的AOP前奏

第一章 AOP前奏 1.1 代理模式 代理模式:我们需要做一件事情,又不期望自己亲力亲为,此时,可以找一个代理【中介】 我们【目标对象】与中介【代理对象】不能相互转换,因为是“兄弟”关系 1.2 为什么需要代理【程序中…...

2023年度佳作:AIGC、AGI、GhatGPT 与人工智能大模型的创新与前景展望

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论…...

直播电商“去网红化”势在必行,AI数字人打造品牌专属IP

近年来,网红直播带货“翻车”事件频发,给品牌商带来了信任危机和负面口碑的困扰,严重损害了企业的声誉。这证明强大的个人IP,对于吸引粉丝和流量确实能起到巨大的好处,堪称“金牌销售”,但太过强势的个人IP属性也会给企业带来一定风险&#x…...

Java如何开发PC客户端(Windows,Mac,Linux)

项目编译工具:Gradle开发工具: Idea开发语言: 建议java17以上ui组件:openjfx (org.openjfx.javafxplugin)打包工具: jpackage (org.beryx.jlink) 一、如何解决打包问题 java 14以后,有了jpackage工具,能够…...

热红外图像非均匀校正方法

热红外图像中的非均匀性通常指的是热像仪在感知温度时出现的空间上的灵敏度不均匀。这种非均匀性可能是由于热像仪本身的制造差异、温度梯度引起的热漂移、光学系统中的不均匀性等因素引起的。为了获得更准确、可靠的温度信息,需要进行非均匀校正。 原因&#xff1…...

性能压力测试--确保企业数字化业务稳健运行

随着企业的数字化转型和依赖云计算的普及,软件系统的性能已经成为企业成功运营的关键因素之一。性能压力测试作为确保系统在各种条件下都能高效运行的关键步骤,对企业的重要性不可忽视。以下是性能压力测试对企业的几个重要方面的影响和作用:…...

【Java】7种逻辑运算,你了解几种

嗨,朋友们!今天我们聊点轻松的,来看看Java中那些常用的逻辑运算。可能你在学习编程的路上已经遇到过它们,但是让我们像闲聊一样,再重新认识一下这些小伙伴们! 那个老实巴交的“与”(AND&#x…...

达梦到达梦的外部链接dblink(DM-DM DBLINK)

一. 使用场景: 部链接对象(LINK)是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数…...

create-react-app 打包去掉 map文件

前言: 在使用 create-react-app 创建的React应用中,默认情况下会生成带有.map文件的打包文件,这些.map文件包含了源代码和调试信息,用于开发和调试过程中进行错误跟踪。然而,在生产环境中,这些.map文件通常…...

fdisk工具详解

fdisk 是一个在Unix和类Unix系统中用于管理磁盘分区的强大工具。以下是对你列出的每个参数的解释和示例: rootswitch:/home/admin# fdisk -l /dev/mmcblk0 Disk /dev/mmcblk0: 57.63 GiB, 61865984000 bytes, 120832000 sectors Units: sectors of 1 * 512 512 by…...

【蓝桥杯选拔赛真题81】Scratch旅游相册 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch旅游相册 一、题目要求 编程实现 二、案例分析 1、角色分析...

水平居中、垂直居中、水平垂直居中

1.水平居中 1.1块级元素 text-align:center; 1.2块级元素 注意:需要给标签指定宽度 margin:0 auto; 1.3绝对定位 和 自我位移 position:absolute; left:50%; transform:translateX(-50%); 注意:使用绝对定位会使元素脱离文档流 1.4flex布局 d…...

flex布局换行后出现间隙问题

问题:换行后,行间出现空白间隔,如果没有设置父容器的高度,不会出现这个问题,父容器高度会随子项增多,而变大。 .content {height: 8rem;display: flex;flex-wrap: wrap;justify-content: space-between;al…...

RPC(3):HttpClient实现RPC之GET请求

1HttpClient简介 在JDK中java.net包下提供了用户HTTP访问的基本功能,但是它缺少灵活性或许多应用所需要的功能。 HttpClient起初是Apache Jakarta Common 的子项目。用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 H…...

PHP函数里面写JQ CSS HTML的写法案例

/*** description: 返回顶部* param {*}* return {*}*/public function gotop() {global $_L, $COMCFG;$plugin $COMCFG[plugin][gotop] ?: [];$plugin array_merge(["right" > 30,"bottom" > 80,"color" > "rgba(255, 25…...

爬虫工作量由小到大的思维转变---<第十八章 Scrapy请求处理与返回策略>

前言: 今天我们来聊一聊Scrapy爬虫中的请求处理与返回策略。你有没有遇到过一个Item需要由多个请求组成的情况?如果是的话,那么对请求的处理和决定是否返回处理过的Item对象就变得格外重要。看一下Scrapy中的相关策略,实现爬虫的完美康复。 …...

【免费直播今天下午!】见微知著 唤醒视觉:机器视觉与成像应用解决方案,诚邀您的参与!

机器视觉的出现和应用突破了人眼目之所及的限制,在工业制造、生物医疗和科学研究等领域,我们利用各种视觉和光电设备,得以在“方寸之地”收获细微之处的画面。 如何找寻行业领先的视觉方案、拓宽视觉应用行业?如何拨开云雾、见微…...

智商均值回归

大家都是做技术的,应该都很聪明。 假如家族的智商极限,【min, max】 一言以蔽之,个人的智商是【min, max】中间的一个值。 同理人类的智商也有个极限值,都在这个范围内浮动。 例如,【1&#…...

ChatGPT助力Excel数据分析:让你的工作事半功倍!

文章目录 一、ChatGPT简介二、ChatGPT在Excel数据分析中的应用1. 数据清洗2. 数据处理3. 数据分析4. 数据可视化 三、如何使用ChatGPT进行Excel数据分析1. 安装ChatGPT插件2. 输入问题或命令3. 查看结果并调整参数4. 导出结果并分享四、总结与展望 《巧用ChatGPT高效搞定Excel数…...

多表插入、删除操作(批量)——后端

多表插入 场景:当添加一个菜品时,还需要记录菜品的口味信息,因此需要对菜品表(dish)和口味表(dish_flavor)同时进行插入操作。 两个表的字段: 代码思路:由DishControll…...

Java操作Word修订功能:启用、接受、拒绝、获取修订

Word的修订功能是一种在文档中进行编辑和审阅的功能。它允许多个用户对同一文档进行修改并跟踪这些修改,以便进行审查和接受或拒绝修改。修订功能通常用于团队合作、专业编辑和文件审查等场景。 本文将从以下几个方面介绍如何使用免费工具Free Spire.Doc for Java在…...

什么是数据仪表板?数据可视化仪表盘怎么制作?

在数据经济时代,分析数据是每个企业做出最佳决策的关键。但是,手动分析和解释大量数据是不可行的。数据可视化对于分析数据中存在的各种有价值信息至关重要,包括可见趋势和隐藏趋势等。仪表盘显示可视化趋势和信息,例如 KPI、趋势…...

HiveServer2

HiveServer2 基本概念介绍 1、HiveServer2基本介绍 HiveServer2 (HS2) is a server interface that enables remote clients to execute queries against Hive and retrieve the results (a more detailed intro here). The current implementation, based on Thrift RPC, i…...

YOLOv8改进 | 2023注意力篇 | HAttention(HAT)超分辨率重建助力小目标检测 (全网首发)

一、本文介绍 本文给大家带来的改进机制是HAttention注意力机制,混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意力关注于识别哪些通道更重要,而自注意力则关注于图…...

IDEA Community html文件里的script标签没有syntax highlighting的解决方案

在网上找到的解决方法有的是针对Ultimate版本才可以下载的plugin,对我所用的Community版本无法生效,找了一圈最后在stackoverflow上找到一个有效的方案,给需要的小伙伴分享一下:IntelliJ Community Edition: Javascript syntax hi…...

如何获取旧版 macOS

识别机型支持的最新的兼容操作系统 识别 MacBook Air - 官方 Apple 支持 (中国) 社区网站:AppStore 无法找到macos cata… - Apple 社区 官网链接隐藏比较深:如何下载和安装 macOS - 官方 Apple 支持 (中国) 获取磁盘映像 Lion 10.7 https://update…...

vp与vs联合开发-Ini配置文件

1.*.ini文件是Initialization file的缩写,即为初始化文件,是Windows系统配置文件所采用的存储格式,统管Windows的各项配置, 2.可以用来存放软件信息、注册表信息等 3.可以使用代码方式和手动编辑操作 ,一般不用直接编辑…...

珠海网站建设/职业培训网络平台

这是一个最坏情况n^2,但本机各种随机数据测试都接近o(n)的时间,HDU,POJ,BZOJ上运行时间也只是该题最短时间的两三倍,而且1e6数据还没开读入挂。 但是只是随机数据下接近线性,但是如果故意造数据,随便卡。 BZOJ 3437:…...

做临床研究在哪个网站注册/网络营销成功案例ppt免费

大家应该都被这个问题给困扰过,打开电脑,电脑上全部都是广告弹窗,或者在办公、追剧的时候,电脑突然就弹出了一条烦人的广告,今天就教大家4个方法,永久关闭这些广告弹窗。方法一1、按下组合键【winr】打开运…...

备案网站还是域名/网站建设 全网营销

...

网站建设的常见问题/谷歌推广费用

Nginx是什么? 开源且高性能、可靠的HTTP中间件、代理服务。 类似于nginx的? HTTPD-apache基金会、IIS-微软、GWS-Google 为什么使用nginx? IO多路复用epoll 轻量级(功能模块少、代码模块化) CPU亲和:…...

网站界面设计说明/站牛网是做什么的

构建这里搜集了用来构建应用程序的工具。Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。Gradle:Gradle…...

唐山网站建设拓/宁德市

1、您认为做好测试用例设计工作的关键是什么? 白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题…...