热门标签 | 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运维解密是非常好的一本书,它是谷歌运维体系的结晶,但是它也是建立在谷歌”健壮的肌肉“之上,建立在科学评估(非人治)之上,我们可以从中学习,也要冷静思考。



推荐阅读
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 解读中台架构:微服务与分布式技术的区别及应用
    中心化与去中心化是长期讨论的话题。中心化架构的优势在于部署和维护相对简单,尤其在服务负载较为稳定的情况下,能够提供高效稳定的性能。然而,随着业务规模的扩大和技术需求的多样化,中心化架构的局限性逐渐显现,如扩展性和故障恢复能力较差。相比之下,微服务和分布式技术通过解耦系统组件,提高了系统的灵活性和可扩展性,更适合处理复杂多变的业务场景。本文将深入探讨中台架构中微服务与分布式技术的区别及其应用场景,帮助读者更好地理解和选择适合自身业务的技术方案。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 人人租机作为国内领先的信用免押租赁平台,为企业和个人提供全方位的新租赁服务。通过接入支付宝小程序功能,该平台实现了从零到百的迅猛增长,成为全国首家推出“新租赁小程序”开发服务的阿里巴巴小程序服务商(ISV)。这一创新举措不仅提升了用户体验,还显著增强了平台的市场竞争力。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
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社区 版权所有