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

滴滴、阿里云、语雀相继宕机,损失巨大,软件的高可用失效了么?

在北京寒冬的夜里,小程加班完成了当天最后一个任务,他拖着疲惫的身体离开了位于西二旗的工位,走到办公楼下,下意识地拿出手机打开滴滴,准备打车回家,但是他却发现滴滴的打车页面显示网络异常。起初小程以为是手机流量没开或者手机欠费,经过反复确认后发现不是话费欠费问题,于是他重启了滴滴 app,甚至重启了手机,但都是一样的结果:

在寒风中折腾了半个小时,将本来就没穿秋裤的小程冻得瑟瑟发抖,直到在 DevOps 技术交流群中看到很多小伙伴都遇到了这种情况,小程意识到,可能是滴滴出问题了。群里的小伙伴也在讨论:是不是高可用没做好

事后,滴滴出行发布了致歉信并发布了事故的初步调查原因:并不是网络攻击而是底层系统软件发生故障。

同样的 P0 事故在半个月之前发生在了阿里云身上。

11 月 12 日,双十一刚过,阿里云发生了宕机,旗下的钉钉、淘宝、闲鱼等产品皆受到了不同程度的影响,此次事故还影响到了使用阿里云的一些企业级客户。经过数小时的修复后,服务恢复正常。                     

如果再往前一个月,同样的 P0 事故又发生在了语雀身上。

10 月 23 日,程序员节的前一天,语雀出现重大服务故障,持续了 7 个多小时才完全恢复。事故的整个过程及原因分析法不在了关于语雀 23 日故障的公告中。

一个多月的时间内,大厂的产品相继发生了三起 P0 事故。其实任何一家企业都不想自身的产品或服务出现 P0 事故,任何一个程序员都不想有处理 P0 事故的机会。事故既然已经发生,那么就要去复盘,然后制定对应的计划避免后续再发生类似的故障。而这类计划中可能会有一个永远绕不过去的话题:高可用

高可用是一种软件架构模式,主要是为了让应用程序能够满足业务规模的快速发展,尤其对于大规模或者超大规模的企业来讲,高可用是提升企业服务可靠性、可用性的重要手段。

设想一个场景:企业内部正在抓紧研发一款基于 AIGC 的产品,产品所处的赛道还处于空白状态,突然得知,另外一家竞品公司决定提前发布产品。于是公司全员开始加班,希望能比竞品更早发布产品,以达到快速占领市场的目的。但是在关键时刻,源代码托管平台崩了,数千人无法提交代码了。运维人员查看之后发现单点设置的源代码托管平台,在数千人的协作下崩盘了。由于没有采用企业级的服务,运维人员只能自行查找资料去修复。ETA:unknown。所有人只能眼睁睁地在办公室看竞品的发布会了。

如何避免这种“悲剧”?

答案是:搭建源代码托管平台的高可用架构

极狐GitLab 高可用方案


极狐GitLab 高可用扩展性架构

极狐GitLab 提供高可用扩展性架构,其源自全球最大代码托管平台之一的 GitLab.com 十多年的技术实践沉淀,该架构通过了全球 3000 万注册用户的检验。

极狐GitLab 高可用扩展性架构通过把极狐GitLab 中所有组件单独抽出来,以分布式集群的方式部署,每一个服务和组件都是多副本的,在整体架构设计上不存在单点故障,并结合负载均衡、水平伸缩、分布式架构、主从多副本机制和云原生等多种机制,实现理论上无限扩展的能力

极狐GitLab 提供支撑从 1000 人到 50000 人规模架构最佳实践参考和专业服务支持,为企业构建高度可靠 DevOps 研运平台保驾护航。

极狐GitLab 在数据存储方面使用了多个组件,如 PGSQL 和 Redis,不少客户已经将极狐GitLab 实例中的这些组件替换为第三方的高可用组件。但极狐GitLab 中最核心的存储组件却不是 PGSQL 也不是 Redis,而是 Gitaly,这是 GitLab 自研的组件,用于对代码仓库进行管理和指令互动,因此它的地位最重要,负载也最高。

因为有些企业的数据量多达 30 T 级别,使用单个磁盘或单个节点的成本很高,且性能无法保证。Gitaly Cluster 高可用 Git 仓库服务持多副本和分片,把不同的代码库分到不同的存储片上,这也是提高可用性和性能的方式。

极狐GitLab GEO 多地域部署架构

相较于支持 1000 人起步的高可用可扩展架构,极狐GitLab GEO 多地域部署架构则更为轻量和简单,更加适合中小型企业。

GEO 多地域部署架构实现一主多从,主从之间的数据实时同步。极狐GitLab GEO 多地域部署方案是热备份,即便主节点宕机,也可以把从节点处将其恢复,或提升从节点为主节点,那么丢失的数据最多是 1~2 分钟的数据。所以 GEO 多地域部署的时效性和可靠性大大高于传统冷备份方式,属于准高可用,同时是灾备架构,并支持异地容灾

极狐GitLab 的高可用架构和 GEO 功能配合使用,能够为大规模甚至超大规模企业的高效协作提供有力保障,避免因为代码托管平台自身的故障而导致代码无法提交,影响产品的正常发布及系统的稳健运行。

为了方便大家体验极狐GitLab 一体化 DevOps 平台的专业版功能,大家可以申请 60 天专业版免费试用。

相关文章:

滴滴、阿里云、语雀相继宕机,损失巨大,软件的高可用失效了么?

在北京寒冬的夜里,小程加班完成了当天最后一个任务,他拖着疲惫的身体离开了位于西二旗的工位,走到办公楼下,下意识地拿出手机打开滴滴,准备打车回家,但是他却发现滴滴的打车页面显示网络异常。起初小程以为…...

基于binlog实现一些业务(Binlog4j)

前言 今天要跟大家分享的是监控数据变化,实现自己的业务的另一个思路,基于数据库的binglog。我这里是用的Binlog4j实现,希望看总结的,直接看最后。 一、Binlog4j是什么? Binlog4j是轻量级 Mysql Binlog 客户端, 提供宕…...

python实现rpc的几种方式(SimpleXMLRPCServer 自带的、第三方ZeroRPC)、连接linux远程开发分布式锁、分布式id

1 python实现rpc的几种方式 1.1 SimpleXMLRPCServer 自带的 1.2 第三方ZeroRPC 2 连接linux远程开发 3 分布式锁 4 分布式id 1 python实现rpc的几种方式 # 远程过程调用-1 借助于rabbitmq,可以跨语言-2 SimpleXMLRPCServer 自带的-3 ZeroRPC-4 GRPC:跨语言的 htt…...

ARM麒麟V10 auditctl启动失败处理

问题: 业务服务器需要启用审计服务,但是启动审计服务失败,查看状态提示audit0。 修改配置文件/boot/efi/EFI/kylin/grub.cfg 删除audit0,或者设置audit1。 重启服务器后验证状态。 auditctl -D echo "-w /data -p rwxa"…...

day67

今日回内容 视图层 响应对象 cbv和fbv 上传文件 模板层 视图层 一、响应对象 响应对象的本质都是 HttpResponse HttpResponse:字符串 render: 将一个模板页面中的模板语法进行渲染,最终渲染成一个html页面作为响应体。 redirect:重定向 …...

04:2440---内存控制器

目录 一:介绍 1:引入 2:概念 3:通信 A:片选信号 B:片选信号的地址空间范围 ​​​​ 4:地址线 A:不同位数的接法 B:访问原理 C:访问地址 5:时序 1:NOR FLASH A:2440NOR FLASH时序 B:原理/时序图 C:寄存器 6:SDARM A:访问方式 B:原理图 C:BWSCON D:BANKCON…...

【深度学习】CNN中pooling层的作用

1、pooling是在卷积网络(CNN)中一般在卷积层(conv)之后使用的特征提取层,使用pooling技术将卷积层后得到的小邻域内的特征点整合得到新的特征。一方面防止无用参数增加时间复杂度,一方面增加了特征的整合度…...

基于H1ve一分钟搭好CTF靶场

写在前面 ◉ ‿ ◉ 上一篇文章给大家详细介绍了基于H1ve搭建CTF靶场,以及过程中可能遇到的报错及解决方法,那么这篇文章,我总结了一下,将不会遇到报错的方法给到大家,但是前提是你的服务器最好是一个全新的哦~~~ 我…...

网络篇---第五篇

系列文章目录 文章目录 系列文章目录前言一、如何实现跨域?二、TCP 为什么要三次握手,两次不行吗?为什么?三、说一下 TCP 粘包是怎么产生的?怎么解决粘包问题的?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站…...

Git——Git应用入门

将会介绍以下知识: 搭建Git环境和创建Git版本库(init、clone)。文件添加、状态检查、创建注释和查看历史记录。与其他Git版本库交互(pull、push)。解决合并冲突。创建分支列表、列表切换和合并。创建标签。 1、版本控…...

【SpringBoot】Redisson 分布式锁注解和 @Transactional 注解一起使用问题

一、前言 平时使用切面去加分布式锁,是先开启事务还是先尝试获得锁?这两者有啥区别? 业务中怎么控制切面的顺序?切面的顺序对事务的影响怎么避免? 下面程序分析: OverrideTransactionalpublic ReceiveH5…...

Druid数据库连接池框架

1.Druid概述 Druid 是一个开源的数据库连接池框架,用于管理和优化数据库连接的使用。它提供了高效的、可扩展的连接池管理,可以用于 Java 应用程序连接到关系型数据库。 之前有了解过 C3P0 数据库连接池,所谓数据库连接池就是重复利用连接数据…...

Python项目打包

Python项目如何打包? 本指南总结了Python项目打包的最佳实践,主要涉及代码的打包和分发,以及环境和依赖的管理。 0. 一般项目清单 源代码(可使用git托管)数据包(可使用DVC托管)Docker环境镜像…...

ASUS(华硕) B760M-AYW WIFI D4_解决wifi不能使用

1、最近新购买了一套 diy电脑主机,选用的是 ASUS B760M-AYW WIFI D4电脑主板 win10 系统,到货后 发现右下角电脑图标处及网络适配器中 没有wifi选项 首先 在官网和旗舰店客服处,确认了 该主板 有集成wifi模块,鲨鱼鳍天线未安装…...

Postgresql数据库运维统计信息

如果需要使用以下运维信息,需要如下几步 修改postgresql.conf文件 #shared_preload_libraries # (change requires restart)shared_preload_libraries pg_stat_statements重启数据库创建扩展 CREATE EXTENSION IF NOT EXISTS pg_stat_statements;1. 统计信息…...

Python3基础

导包 在 python 用 import 或者 from...import 来导入相应的模块。 将整个模块(somemodule)导入,格式为: import somemodule 从某个模块中导入某个函数,格式为: from somemodule import somefunction 从某个模块中导入多个函数,格式为&#…...

【性能测试】服务器常用的性能指标总结,一文概全...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 压测过程中&#…...

Vue学习笔记-Vuex基本使用

基本使用 初始化数据、配置actions、mutations,操作文件/store/index.js //index.js文件用于创建Vuex中最为核心的store对象 import Vue from vue import Vuex from vuex Vue.use(Vuex) //actions对象用于响应组件中的动作,专门负责业务逻辑 const actions {//函数…...

vue3中的customRef创建一个自定义的 ref对象

customRef 创建一个自定义的 ref&#xff0c;并对其依赖项跟踪和更新触发进行显式控制 小案例: 自定义 ref 实现 debounce <template><div style"font-size: 14px;"><input v-model"text" placeholder"搜索关键字"/><…...

动态规划学习——子序列问题

目录 ​编辑 一&#xff0c;最长定差子序列 1.题目 2&#xff0c;题目接口 3&#xff0c;解题思路及其代码 一&#xff0c;最长定差子序列 1.题目 给你一个整数数组 arr 和一个整数 difference&#xff0c;请你找出并返回 arr 中最长等差子序列的长度&#xff0c;该子序列…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...