《SRE:Google运维解密》读书笔记

googleSRE运维解密 SRE读书沉淀 阅读详情

第7章 Google的自动化系统的演进

自动化的价值:一致性、平台性、修复速度更快、行动速度更快、节省时间
综合思想是,纯人工操作在较小型的环境中或许可行,但人工操作难免会存在失误,以及“琐事”现象。尤其是在大型的分布式系统中,从成本和失误率考虑,纯人工操作是不可进行的,必须使用一定的自动化技术。

自动化是“元软件”,即操作其他软件的软件。对应上文的“50%法则”,必须至少有50%的开发时间。

自动化工具Puppet、Chef、cfengine,另外Perl提供了POSIX级别的接口方便与系统交互。

集群故障转移自动化的演进:
1、没有自动化(纯手工)
2、外部维护的系统特定的自动化系统(写个故障处理脚本)
3、外部维护的通用的自动化系统(把故障处理脚本添加到数据库里维护)
4、内部维护的系统特定的自动化(数据库把脚本自动部署到类似系统中)
5、不需要任何自动化的系统(故障时数据库自己跑脚本来故障转移)

拥抱失败:优化基础设施避免故障转移=通过自动化进行快速恢复,二者都能保证系统的高可用性。

第8章 发布工程

读书笔记(SRE:Google运维解密):第6章 分布式系统的监控 绝大部分通用的术语: (a)监控(monitoring):收集、处理、汇总,并且显示关于某个系统的实时量化数据,例如请求的数量和类型,错误的数量和类型,以及处理用时,应用服务器的存活时间等 (b)白盒监控(white-box monitoring):依靠系统内部暴露的一些性能指标进行监控。包括日志分析、Java虚拟机提供的监控接口,或者一个列出内部统计数据的HTTP接口进行监控。 (c)黑盒监控(black-box monitoring):通过测试某种外部用户可见的系统行为进行监控。 (d)监控台页面(d. 阅读详情

相关推荐

卷积神经网络中的边缘检测:从Canny算法到深度学习(PyTorch实现)

本文系统梳理了边缘检测从经典Canny算法到深度学习方法的演进,重点解析了Canny算法的数学原理及其对卷积神经网络设计的深远影响。通过PyTorch实战,详细演示了如何构建并训练一个基于HED架构的深度学习边缘检测模型,并探讨了模型优化、评估及与传统方法融合的高级技巧。

jenkins8butler的博客 152

SRE_Google运维解密_笔记

1.70%的事故由变更引起 2.谷歌的SRE倾向于DEVOPS,兼顾效率(快速上线更新)与质量(降低事故率) 3.SRE大致发展历程:手动(凭经验容易误操作)→自动→智能 4.缓慢的不断重启的实例优于永不重启泄露资源的实例 5.SLA(service level agreement):请求延迟;错误率;系统吞吐量(QPS);可用性;持久性 SLO(object):SLI的目标范围 SLI(indicator):从目标反推指标 6.多创新,少做琐事(DRY),但合理的琐事有助于放松 7.监控系

m0_70751647的博客 1449

最全卷积总结篇(分组、深度可分离、空洞、转置等)

分组卷积(Group Convolution)是一种卷积操作方式,它最早在AlexNet中引入,并在深度学习中被广泛使用,尤其是在高效模型设计(如MobileNet和ResNeXt)中。分组卷积通过将输入特征通道分为若干组,并在每组内单独进行卷积操作,可以减少计算复杂度和参数量,同时有效利用模型的结构特性。分组卷积的工作原理通道分组:输入特征图的通道图为C_in,输出特征图的通道数为C_out,将每组的C_in和C_out分为G组,每组的通道数为C_in/G和C_out/G。组内卷积。

qq_44815135的博客 4219

【读书笔记】SRE:Google运维解密 第Ⅰ部分 概览

研发团队和系统运维团队分属两个部门所带来的间接成本就没那么容易度量了,但是这些间接成本往往大得多。

睡觉的咖啡 719

GIS常用坐标系简介

EPSG:4326是基于WGS 84的地理坐标系,使用经纬度表示,适用于全局定位和地理数据表示。它的缺点是在进行距离、面积计算等地理分析时不够准确。EPSG:3857是投影坐标系,使用平面米坐标表示,适用于在线地图展示,特别适合 Web 地图应用。虽然它在地图展示中很高效,但由于投影引起的变形问题,它不适合高精度地理测量和计算。

weixin_59096287的博客 1977

武汉理工大学 python实验三

请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾),如无解则输出`“Data Error!题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有。编写一个宝塔上的琉璃灯的小程序,计算并输出每层各有多少盏琉璃灯。,如果有多个解,则分行输出,每行一个解;

2401_83472225的博客 5950

《SRE:Google运维解密》读后有感

当我们进行体系化的思考的后,我们就会有新的收获,并且在解决方案上更加的完善。框架和SRE平台这种模式,提供了很多的益处,比如说显著的降低运维开销,因为它支持代码结构、依赖关系、测试、编码样式指南等的强合规性测试,内置服务部署、监控和自动化,设计中自带的通用性支持,这种在框架中把基于生产最佳实践的代码模式进行标准化封装,让SRE在管理时降低了认知的负担,同时仍然可以保持服务的质量,每一个标准框架都为问题所在的领域或者问题相关的基础设市以来提供了一个完整的解决方案。,其次SRE的关注焦点在于。...

学无止境 1072

人工智能_大模型095_Web版003_deepseek R1本地安装_私有化部署_支持RAG_调用HTTPAPI做自己的AI应用_安装RagFlow以及使用_---人工智能工作笔记0240

这里的一定要注意,是资源不够用了,可以点击ragflow-server左边的小绿点,查看 结果。注意去把内存改成10G把至少,我这里改成了10G,因为电脑一共就16G,再试试吧.可以看日志,就显示的是没有连接上mysql,结果我一看,mysql,根本没启动.然后下面选择general就可以了,然后点击确定,然后再去点击。手动去启动,然后再去试试,注意,内存这里给8G太小了还是.调成8G了,然后硬盘大了大了一些换成50G了,然后。点击系统模型设置可以看到,选择聊天模型就可以了,

添柴程序猿的专栏 447

SRE-Google运维解密随记-1

增加现有容量经常需要启动新的实例甚至是整个集群,这通常需要大幅度修改现有的集群配置(配置文件、负载均衡、网络等),同时还要执行一系列测试,确保新上线的容量可以正确地服务用户。虽然不论多么完备的“运维手册”也无法替代人的创新思维,但 是在巨大的时间压力和产品压力下,运维手册中记录的清晰调试步骤和分析方法对处理 问题的人是不可或缺的。、一个业务的容量规划,不仅仅要包括自然增长(随着用户 使用量上升,资源用量也上升),也需要包括一些非自然增长的因素(新功能的发布、商业推广,以及其他商业因素在内)。

砚墨 645

UG\NX二次开发 获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态

获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态。

王牌飞行员_里海的博客 1982

置顶必读(1) |《滚雪球学SpringBoot 3.x》· 高质量专栏介绍,你值得拥有!

《滚雪球学SpringBoot 3.x》 并不是普通的技术讲解合集,它是专为开发者精心设计的系统化学习路径。通过不断“滚动学习”,我们将带领你从基础入门到高阶应用,从理解每一行代码到设计和优化大规模分布式系统,最终帮助你成长为一位精通 spring架构 的工程师。

**My Coding Family** 12万+

读书笔记(SRE:Google运维解密):第17章 测试可靠性

对服务质量的自信可以用过去的系统可靠度和未来的系统可靠度来衡量。前者可以通过抓取和分析历史性监控信息来获得,后者可以用基于历史数据的预测来量化。为了让这些预测信息足够准确,必须满足下列条件中之一: (a)在这段时间内,该系统完全没有改变。包括没有任何软件更新以及服务器数量变化,这意味着未来的行为方式应该与过去的行为方式类似。 (b)可以充分描述整个系统的所有改变,这样可以针对每个系统变化引入的不确定性进行分析。   软件测试的类型:传统测试和生产测试 (a)传统测试: 1)单元测试:单元测试(.

lo_ong的博客 716

37.华为路由器:loopback(本地回环)接口的作用

本地环回接口(或地址),亦称回送地址(loopback address)。 此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。常见于如下用途: 1 作为一台路由器的管理地址 系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址 ,管理员会使用该地址对路由器远程登录(telnet ),该地址实际上起到了类似设备名称一类的功能。 但是通常每台路由器上存在众多接口和地址,为何不从当中随便挑选一个呢 ? 原因如下:由于

迷逝 3万+

读书笔记(SRE:Google运维解密):第3章 拥抱风险

极端的可靠性会带来成本的大幅提升: 过分追求稳定性限制了新功能的开发速度和将产品交付给用户的速度,并且很大程度地增加了成本,这反过来又减少了一个团队可以提供的新功能的数量   可靠性进一步提升的成本主要存在于以下两个维度 (a)冗余物理服务器/计算资源的成本 (b)机会成本 基于时间的可用性 可用性=系统正常运行时间/(系统正常运行时间+停机时间) 通过请求成功率来定义服务可用性 可用性=成功请求数/总的请求数 在一个正式的环境或安全关键的系统中,服务的风险容忍度通常是直接根据..

lo_ong的博客 447

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

《SRE:Google 运维解密》读书笔记01: 为什么要学习Google SRE & Google SRE 可以带给我们什么?

SRE:Google 运维解密》是一本教你如何在高速迭代中保持系统稳定的工程圣经。掌握现代高可用系统的构建方法论;具备用工程思维解决运维问题的能力;成为团队中推动可靠性和效率提升的关键人物;在职业发展中拥有 DevOps/SRE/平台工程等热门方向的核心竞争力。建议搭配实践:读完一章后,尝试在你的项目中落地一个概念(比如定义一个 API 的 SLO,或写一个自动化脚本减少重复操作)。PS: 如果你正在构建或维护线上系统,这本书值得反复精读!!!

1557

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SRE Google 运维解密读书笔记一:SRE 方法论概述

SRE Google 运维解密,是 SRE 领域的启蒙之作,讲述了 Google 的 SRE 实践,SRE 就是从 Google 流传出来的。本文是读书笔记,第一篇,概述 SRE 方法论

n9ecommunity的博客 614

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《SRE:Google 运维解密》读书笔记06: 少琐事 - SRE的隐形敌人

琐事就是运维服务中手动性的、重复性的、可以被自动化的、战术性的、没有持久价值的工作,而且,琐事与服务呈线性关系的增长。一个经典案例:运维人员收到"磁盘目录满"告警后,手动登录服务器清理日志文件。这件事手动、重复(下次磁盘还会满)、可以被自动化、没有持久价值(清理完服务状态没有任何改进),且随着服务器数量增长,这类工作的频次会线性增加。另一个琐事密集场景:周期性报表和周期性巡检。这类工作虽然看似"有必要",但如果每次都需要人工执行,就完全符合琐事的定义——重复、可自动化、缺乏持久价值。

1575

《SRE:Google 运维解密》读书笔记35: 结论 - 从Google的实践到行业的启示

SRE不是一套工具,而是一场文化变革——它通过拥抱风险、消除琐事、从失败中学习、数据驱动决策,将软件工程思维注入运维,让可靠性成为可量化的、可持续的核心竞争力。关键点一句话概括SRE的本质用软件工程方法解决运维问题,是文化变革而非工具集五大核心理念拥抱风险、消除琐事、简单化、从失败中学习、数据驱动决策50%规则SRE必须将至少一半时间投入开发工作,防止退化为纯运维错误预算用“1-SLO”定义可接受的故障额度,平衡创新与稳定无指责文化事故后分析系统缺陷而非追究个人,是坦诚复盘的基础。

2357

《SRE:Google 运维解密》读书笔记31: 通过嵌入SRE的方式帮助团队从运维过载中恢复 - 当SRE团队陷入“运维漩涡”

嵌入SRE = 一名临时顾问,不是替团队清空票单,而是帮助团队建立SLO、区分琐事、识别“火种”,让团队从内部打破“50%规则失效”的恶性循环。关键点一句话概括问题背景票单量持续增长导致50%规则被长期打破,团队精疲力竭嵌入SRE的定位临时顾问,职责是改进团队的实践,而非直接处理票单一人原则一个嵌入SRE比两个更有效,两个可能触发团队防御性反应第一阶段了解服务与背景,区分“核心但很小”与“快速增长”的服务第二阶段找出最大压力源,关注中断数量而非处理速度第三阶段。

2138

《SRE:Google 运维解密》读书笔记19: SRE中的软件工程 - 当SRE从“运维”走向“开发”

SRE中的软件工程 = 将生产运维的知识和经验固化为可复用的内部产品,以团队规模的线性增长支撑服务规模的指数级增长,同时为SRE工程师提供职业发展的工程通道。关键点一句话概括隐形软件工程Google有大量消费者看不见的软件工程,很多在SRE内部完成三大开发优势生产知识深度 + 直接使用者 + 高质量反馈产品化思维SRE工具不是一次性脚本,而是有路线图的成熟项目核心原则团队规模不应随服务增长而线性扩展Auxon案例将容量规划从“预测驱动”升级为“意图驱动”职业发展双通道。

1869

《SRE:Google 运维解密》读书笔记38: 完结篇补充1 - 如何在实际工作中落地这些SRE理念

目的:用数据替代“感觉”,建立共同目标。怎么做选择一个核心用户场景(如“用户登录”或“API 查询”);定义SLI(服务质量指标),例如:成功率 = 成功请求数 / 总请求数延迟 P95 < 500ms设定SLO(建议从宽松开始):“过去 28 天,登录成功率 ≥ 99%”计算错误预算允许失败比例 = 1% → 每月约 7 小时可“不可用”工具建议使用 Prometheus + Grafana 监控 SLI;用简单脚本计算是否违反 SLO。SLO 不是 SLA(对外承诺)

2733

《SRE:Google 运维解密》读书笔记02: 介绍 - SRE的起源与核心理念

SRE(Site Reliability Engineering,站点可靠性工程)是 Google 于 2003 年首创的一种用软件工程方法解决运维问题的实践体系和组织文化。“SRE 就是让一群软件工程师去设计、构建和运行大规模分布式系统,并通过工程手段保障其可靠性。SRE 是用软件工程的方法,把运维从“人力密集型救火队”转变为“自动化、可度量、可持续”的工程学科;优秀的 SRE 是既能写代码又能扛故障的“全栈可靠性工程师”。工具会变,但工程思维、用户视角和简化原则永不过时。

1693

《SRE:Google 运维解密》读书笔记12: on-call轮值 - SRE的“生命线”

on-call 轮值是 SRE 保障服务可靠性的核心机制,通过主副值班制、多地团队、25%运维时间红线和12小时≤2事件的质量标准,让应急响应可持续。关键点一句话概括on-call 的核心目标服务可靠性(分钟级响应)+ 团队可持续性(避免疲劳战)主副值班制主 on-call 负责主要响应,副 on-call 作为备份和协助多地团队优势避免夜间值班损害健康 + 控制团队规模保障熟悉度数量平衡纯运维时间 ≤ 25%,至少 50% 投入研发质量平衡。

1740

《SRE:Google 运维解密》读书笔记03: SRE 理念 - 从“零故障”到“理性风险”

本文摘要:SRE(Site Reliability Engineering)是一种用软件工程方法解决运维问题的实践,核心是让软件工程师负责运维工作。与传统运维不同,SRE强调自动化、50%开发时间、拥抱风险(通过错误预算机制)和消除重复性工作。Google的SRE团队分为产品SRE、基础设施SRE和共享平台SRE三种形态,要求成员具备软件开发能力。SRE七大原则包括:拥抱风险、设定SLO目标、消除琐事、监控系统、自动化、发布工程和追求简单性。SRE与DevOps互为补充,前者提供具体方法论,后者提供文化框架

1650

《SRE:Google 运维解密》读书笔记36: 学后总结与全书回顾 - 从理念到实践

第11-15章建立了完整的应急响应体系:主副值班制、25%运维时间红线、假设-演绎法排查流程、事故指挥系统、以及最核心的无指责事后总结文化。事后总结不是“追责文书”,而是“学习档案”——假定参与事故的每个人都出于善意,基于当时掌握的信息做出了最佳判断。《Google SRE 工作手册》:本书的官方姊妹篇,提供更深入的实践指南《混沌工程》(Casey Rosenthal):DiRT和混沌工程的权威指南:Google SRE团队的另一力作,聚焦安全与可靠性的交集。

2665

《SRE:Google 运维解密》读书笔记37: SRE理念落地实践指南 - 从理论到行动

不要等到下一次事故。找最近发生的一次事故(哪怕很小),按照无指责原则写一份事后总结。事后总结模板//markdown# 事后总结:[事故简述]## 摘要- 发生时间:YYYY-MM-DD HH:MM- 影响范围:[受影响用户/服务/数据量]- 恢复时间:[从发生到完全恢复的时长]## 时间线- HH:MM - [事件描述]- HH:MM - [事件描述]## 根本原因[不是“谁犯了错”,而是“系统为什么允许这种情况发生”]## 行动项目| 行动项 | 负责人 | 截止日期 |

2931
上一篇: ESXi nvidia-smi报错No devices were found, rm_init_adapter failed, device minor number 0
深海的小鱼
博客等级 码龄7年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值