热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

读SREGoogle运维解密有感(一)

读SREGoogle运维解密有感(一)360addops团队360云计算作者有话说:这几天打算利用碎片时间读了一下SREGoogle运维解密这本书,目前读了前几章,感觉收获颇多

读SRE Google运维解密有感(一)

360addops团队 360云计算


作者有话说:


这几天打算利用碎片时间读了一下"SRE Google运维解密"这本书,目前读了前几章,感觉收获颇多,结合自己的工作经历和书中的要点,写一些感悟和思考,希望对大家有一点帮助。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!



SRE

有关SRE我就不多介绍了,中文名字叫站点可靠性工程师,它的由来是google想通过软件工程师来解决复杂运维问题。 它里面有很多有意思的点,比如:


运维工作只能占比工作时间50%
另外50%要开发工具解决问题
SRE和开发工程师会轮岗

这些相关概念网上很多都介绍了,我就不赘述了,我说下一些我感兴趣的点


谷歌神话

谷歌一直在技术领域处于世界领先位置,从bigtable的三篇论文,开源的k8s,分布式关系数据库,谷歌的技术在IT领域可以说是标杆。

有个传说是谷歌内部使用的系统一般2-3年以后才会出相关论文或者开源版本实现,出来了以后其它企业开始实践还需要2-3年,等到你把这些实现了,谷歌又不知道实现了什么黑科技。IT界如果是江湖的话,谷歌就像是少林派,有一种天下武功出少林的气派。

所以SRE这本书自带光环,很多人都觉得这是运维圣经,觉得这是拯救运维领域的不二法宝。

或许你也在读这本书,你也想在内部尝试SRE的一些方法和思想。

那么首先我劝你先冷静一下,它并不是一个万能的解药,要先考虑下你的公司现状,问题,结合实际国情,找到切实可行的方法。
我为什么这么说呢?请往下看


谷歌的肌肉

首先本书一开始简单说了下SRE的思想和方法论,然后介绍了谷歌的基础设施,就好像一个人一样,谷歌的基础设施就是这个人的肌肉,有了强劲的肌肉才能跑得快,跳得高。



  • 网络设施
    谷歌基于自研的交换机Clos,使用SDN技术,确保每个数据中心可提供海量带宽,并且可以动态带宽管理优化网络连接。

  • 调度系统
    使用Borg负责在集群层面管理任务编排工作

  • 存储
    在物理机设施(磁盘)上构建了一套简单可用,可靠的集群存储服务。


Colossus GFS文件系统的改进白本
Bigtable 松散存储的,分布式,有顺序,持久化的NoSQL数据库
Spanner 分布式的关系型数据库


  • 分布式锁
    Chubby 提供一个可以处理异地,跨机房级别锁请求的集群锁服务

  • 监控和报警
    Borgmon 从监控对象抓取监控指标,这些指标可以用来触发报警,也可以存储起来供观看。(开源实现是Prometheus)

  • RPC
    所有谷歌服务之间使用RPC通信,称为Stubby(开源实现gRPC),传输格式是Protobuf。

  • GSLB和BNS


利用地理位置进行负载均衡DNS请求
用户服务层面负载均衡
RPC层面负载均衡

通过各个层面的负载均衡将用户流量导向健康的服务上面。
这些完善的基础设施,给SRE中的方法和思想做了强有力的支撑。


故障不是洪水猛兽

SRE中定义了一个概念叫SLO(服务质量目标),通过SLO合理评判一个服务要达成的服务质量。

首先我先说下”故障“这个词,这个词对运维人员来说,是非常不想听到和遇到的。运维人员有一个重要任务是确保服务的稳定,换句话说就是没有故障。

所以我们或多或少谈到“故障”就会色变,遇到故障马上第一时间解决,为了避免下次还出现,我们可能还会开“事故总结会”,优化流程和工具。

其实我们很多时候对于“故障”的理解是简单粗暴的,从一线员工到老板都认为“故障不能有”,“故障必须消除”,我们耗费很大精力“消除了一切故障”,系统平稳运行了,自己也会萌生成就感,感觉干的还不赖。可是并没有进一步去思考一下,故障存在的意义。

我们常见的所谓“99.9%”,“99.99%”的服务可用性,但是并没有使用科学方法来分析和规划业务到底应该3个9还是4个9。

SRE中说到一句话“100%稳定的系统是不存在的”,它把这个做为一个前提,那也意味着系统是肯定要出故障的。

SLO就是用来解决这个事情的,首先服务的故障不可避免,每个服务的级别不同,不可能所有服务都是99.999999,要针对业务的不通特性制定不同的SLO。


比如: 谷歌的企业服务,针对企业用户是有签署服务中断赔偿协议的,那么稳定性要求很高,所以它的SLO级别必须很高。 谷歌的youtube(当时),针对终端用户且版本迭代很快,业务在不断变化和创新,SLO级别可以放低。


SLO的制定通常是产品经理,开发团队,SRE一起协商完成,大家根据业务的规模,产品特性,产品处于的阶段制定。

SLO的制定,我觉得就是科学的面对“故障”这个问题,故障不可避免,不应该以消灭故障为目的,合理的接受它,确保它在SLO标准的范围内,高于这个标准会浪费人力和成本,低于这个标准就需要进行优化。

SLO的制定很大程度在于各个团队之间的协商,大家都有基于数据的科学评判方法,比如产品预估的用户数,产品发版周期,使用带宽等。
中国的国情更多的是拍脑袋,老板的态度,上面的一句话“不能有事故”,那就是99.999999999999999无限,没有科学的进行评估。


SLO解决的问题

通过这样一个SLO,之前很多令人头疼的问题就迎刃而解了。



  • 成本和收益的矛盾
    大家都知道维护服务可用性的成本不是线性增长的,到一定程度,增加一个9可能需要10倍100倍的成本,通过SLO让成本和收益取得很好的平衡,假设一个业务增加SLO等级,可以计算一下需要的成本和带来的收益,如果得不偿失就可以不用增加SLO等级。

  • 科学的运维
    有了SLO,对于运维工作有了可量化的标准,运维工程师不用每天提心吊胆,生怕出现故障,只要故障在SLO范围内就是可接受的,节省出很多精力用在更重要的事情上。

  • 稳定和创新的矛盾
    大家都知道运维工程师最不喜欢的就是“线上变更”,一个服务如果不做变更一般都是很稳定的,问题往往出现在变更上。
    可是一个新业务往往需要大量变更,不停的迭代创新。
    这个时候运维会说:别做变更了,稳定是第一位的,出了故障,我们得背锅。
    开发会说:我们得变更,这样才有新功能,才能获取更多用户啊。
    矛盾因此产生了。
    通过SLO很好的解决了这个矛盾,我们先一起给这个业务制定好SLO的等级,如果是需要频繁的变更的,可能SLO等级就会低一些。
    这样在满足业务创新的需求上,只要在SLO范围内,就认为业务是稳定的。
    反之,如果变更太频繁,使故障率超出了SLO可接受的范围,可以要求开发调低变更频率,或者重新制定SLO等级。
    这样就解决了业务既要“稳定”又要“创新“的矛盾。

    结语

    SRE Google运维解密是非常好的一本书,它是谷歌运维体系的结晶,但是它也是建立在谷歌”健壮的肌肉“之上,建立在科学评估(非人治)之上,我们可以从中学习,也要冷静思考。



推荐阅读
  • k8s进阶之搭建私有镜像仓库
    企业级私有镜像仓 ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 用LGWR WORKER的例子介绍strace分析Oracle数据库行为的方法
    可观测性能力是IT运维的强有力的支撑。日志告警、指标是两种在运维中很常用的可观测性指标。 ... [详细]
  • 智慧博物馆信息系统建设方案
    3.信息化系统建设3.1博物馆RFID藏品管理系统3.1.1系统概述博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修 ... [详细]
  • 【GO】k8s 管理系统项目的前端部分16–前端布局详解
    【GO】k8s管理系统项目[前端部分–前端布局]1.前端布局2.Layout2.1layoutsrclayoutLayout.vue ... [详细]
  • KVM配置调整
    一内存CPU调整1.1增大虚拟机内存[root@k8s-01~]#virshshutdownvm01-centos7域vm01-centos7被关闭[root@k8s-01~]#v ... [详细]
  • 黄东旭: 关于基础软件产品价值的思考
    黄东旭:关于基础软件产品价值的思考-好久没写东西了,正好趁着春节的节后综合症发作写写文章热身一下,记得前几年偶尔会写一些关于TiDB产品功能解读的文章,TiDB5.0发了那么长时间 ... [详细]
author-avatar
shajc220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有