读发布!设计与部署稳定的分布式系统(第2版)笔记29_控制层下

 

1. 配置服务

1.1. 配置服务本身就是分布式数据库

1.1.1. 像ZooKeeper和etcd这样的配置服务

1.1.2. 受CAP定理和亚光速通信的限制

1.1.3. 可实现容量扩展,但不具备资源可伸缩性

1.1.4. 也会遭受相同的网络创伤

1.2. 信息并不仅仅从服务流向客户端实例,实例也可以向服务报告其版本号(或提交SHA算法)和节点标识符

1.3. 每次写入配置服务,都必须经历某种共识机制才能生效

1.4. 确保实例可以在没有配置服务的情况下启动

1.5. 确保实例在配置服务无法访问时不会停止工作

1.6. 确保配置服务的某个被网络分隔的节点不具备关闭整个系统的能力

1.7. 要跨地理区域进行复制

2. 环境整备和部署服务

2.1. 部署是运维工作中的必经环节,是连接开发和生产的桥梁

2.2. 部署工具本身应该配备一个部署包库

2.3. 对一些组织来说,部署就是DevOps

2.4. 推式部署工具

2.4.1. 使用SSH或其他代理工具,因此中央服务器可以连接到目标机器上来运行脚本

2.4.2. 这些目标机器事先并不知道自己的角色,服务器会统一将角色分配给它们

2.4.3. 对于长寿命的虚拟机甚至物理主机,推式部署工具就可以更简单地进行设置和管理

2.5. 拉式部署工具

2.5.1. 特别适用于资源可扩展的场景

2.5.2. 拉式部署工具更依赖各台机器了解自己的角色

2.5.3. 机器上的软件可以访问配置服务获取有关其角色的最新信息

2.6. 用于生产环境的构建包需要使用已知来源的程序库,在一台“干干净净”的服务器上运行

2.7. 可重复的构建工作非常重要,要确保在机器上可以运行的代码在生产环境中也能运行

2.8. 任何广泛使用的服务器软件都可用作攻击武器,包括构建服务器,诸如Jenkins、Bamboo或GoCD

2.8.1. 构建系统本身的插件是直接从网上下载的

2.9. 金丝雀部署是构建工具需要完成的一项重要工作

2.9.1. “金丝雀”指一小组实例,它们率先获得了系统的新版本

2.9.2. 在一段时间内,运行新版本的实例会与运行旧版本的实例共存

2.9.3. 如果金丝雀实例行为异常,或者其度量指标一直很低,那么该构建就不会推送给剩余的实例安装

2.10. 金丝雀部署的目的就是在构建包到达用户之前,拒绝其中糟糕的构建包

3. 命令与控制

3.1. 只有当实例需要花费很长时间才能做好运行前的准备工作时,实时控制才有必要

3.2. 控制点

3.2.1. 重置断路器

3.2.2. 调整连接池大小和超时

3.2.3. 禁用特定的出站集成

3.2.4. 重新加载配置

3.2.5. 开始或停止接收负载

3.2.6. 特性开关

3.3. 开发人员不相信运维人员能正确地部署软件并运行脚本

3.4. 运维人员不允许开发人员登录到生产机器更新数据库模式

3.5. 这个信任的破裂本身就是一个需要解决的问题

3.5.1. 绝对不要在生产代码中构建一个自我毁灭“按钮”

3.5.2. 许多服务会采取公开一些控制的方法来更新数据库模式,或者删除并重新设置所有数据

3.6. 刷新缓存按钮,这也是非常危险的

3.7. 命令队列

3.7.1. 一个共享的消息队列或发布-订阅总线,所有的实例都可以监听

3.7.2. 有了命令队列,一窝蜂效应就更容易发生了

3.7.3. 为每个实例添加一个随机的延迟时间,让它们能够分散地执行命令,这是避免一窝蜂效应的好方法

3.8. Watir或RoboForm这样的图形用户界面测试工具

3.9. 对生产环境中长期的运维工作来说,图形用户界面是糟糕的管理界面。长期运维的最佳界面是命令行

3.10. 所有构建的软件要么必须维护,要么被迫抛弃

3.11. 要选择那些适合团队规模和工作负载规模的工具

3.12. 可以从系统可见性开始,使用日志记录、跟踪和度量指标来创建明晰性

3.13. 当面对更大或更动态的系统时,可以使用配置、整备和部署服务来获得杠杆作用

3.14. 一旦系统(在某种程度上)稳定下来,并且问题显露出来,就要建立控制机制,这样就能进行更精确的控制,而不仅仅是重新配置和重新启动实例

3.15. 相比那些高度动态的环境,部署到长寿命机器上的大型系统从控制机制中受益更多

4. 平台厂商

4.1. 相对于云供应商,平台能够提供一个与之不同的特性——位置无关性

4.2. Kubernetes、Apache Mesos、Cloud Foundry以及Docker的Swarm Mode

4.3. 既然已经在平台上花了大价钱,就应该充分加以利用

4.3.1. 不要尝试在它外面再包装一层API,或自己提供一套脚本

5. 工具清单

5.1. 日志收集和搜索

5.2. 度量指标收集和可视化

5.3. 部署

5.4. 配置服务

5.5. 实例安置位置

5.6. 实例和系统可视化

5.7. 调度

5.8. IP地址、覆盖网络、防火墙和路由管理

5.9. 自动扩展控制器

5.10. ⑩告警和通知

6. 要点

6.1. 每个解决方案都会带来新问题。随着系统容量的水平扩展和垂直扩展,我们几乎将一切虚拟化了

6.2. 一旦知道整个系统发生了什么,就能采取干预措施

6.3. 需要了解自动化让所有事情都运行得更快带来的问题

6.3.1. 自动化缺乏人的判断力,所以当出错时,错误会发展得很快,这就需要我们在自动化中建立安全机制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/25792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql统计近7天数据量,,按时间戳分组

可以使用以下 SQL 语句来统计近7天的数据量,并按时间戳分组。如果某一天没有数据,则将其填充为0。 SELECT DATE_FORMAT(FROM_UNIXTIME(timestamp), %Y-%m-%d) AS date,COUNT(*) AS count FROM table_name WHERE timestamp > UNIX_TIMESTAMP(DATE_SUB…

python调用pytorch的clip模型时报错

使用python调用pytorch中的clip模型时报错:AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…

乍得ECTN(BESC)申请流程

根据TCHAD/CHAD乍得法令,自2013年4月1日起,所有运至乍得的货物都必须申请ECTN(BESC)电子货物跟踪单。如果没有申请,将被视为触犯乍得的条例,并在目的地受到严厉惩罚。ECTN是英语ELECTRONIC CARGO TRACKING NOTE的简称;…

基于Java+SpringBoot+Vue的人事管理系统设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Ubuntu 传输文件方法

Ubuntu 传输文件方法 文章目录 Ubuntu 传输文件方法1 scpusage跨越跳板机传输 2 rsync(remote sync)特性installusage本地拷贝同步将文件从远程机器复制到本地机器将文件从本地机器复制到远程机器通过ssh使用rsync 3 SSHFSusage通过 SSHFS 从远程系统访问…

深挖 Threads App 帖子布局,我进一步加深了对CSS网格布局的理解

当我遇到一个新产品时,我首先想到的是他们如何实现CSS。当我遇到Meta的Threads时也不例外。我很快就探索了移动应用程序,并注意到我可以在网页上预览公共帖子。 这为我提供了一个深入挖掘的机会。我发现了一些有趣的发现,我将在本文中讨论。 …

使用node.js 搭建一个简单的HelloWorld Web项目

文档结构 config.ini #将本文件放置于natapp同级目录 程序将读取 [default] 段 #在命令行参数模式如 natapp -authtokenxxx 等相同参数将会覆盖掉此配置 #命令行参数 -config 可以指定任意config.ini文件 [default] authtokencc83c08d73357802 #对应一条隧…

LeetCode 周赛上分之旅 # 37 多源 BFS 与连通性问题

⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度…

python高阶技巧

目录 设计模式 单例模式 具体用法 工厂模式 优点 闭包 案例 修改闭包外部变量 闭包优缺点 装饰器 装饰器原理 装饰器写法 递归 递归的调用过程 递归的优缺点 用递归计算阶乘 设计模式 含义:设计模式是一种编程套路,通过这种编程套路可…

AQL品质抽样标准

AQL抽样标准 - 百度文库 Acceptance Quality Limit 接收质量限的缩写,即当一个连续系列批被提交验收时,可允许的最差过程平均质量水平。 AQL普遍应用于各行业产品的质量检验,不同的AQL标准应用于不同物质的检验上。在AQL 抽样时,…

【开源三方库】Aki:一行代码极简体验JSC++跨语言交互

开源项目 OpenHarmony 是每个人的 OpenHarmony 一、简介 OpenAtom OpenHarmony(以下简称“OpenHarmony”)的前端开发语言是ArkTS,在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性&#x…

SpringBoot开发环境热部署

目录 开发热部署 添加dev-tools依赖 在application.properties中配置devtools 在IDEA中添加设置 开发热部署 在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、 重新启动,整个过程非常麻烦,影响开发…

STM32 低功耗-待机模式

STM32 待机模式 文章目录 STM32 待机模式第1章 低功耗模式简介第2章 待机模式简介2.1 进入待机模式2.1 退出待机模式 第3章 待机模式代码部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止和待机模式。 在系统或…

【Spring Cloud 六】Hystrix熔断

这里写目录标题 系列文章目录背景一、Hystrix是什么服务雪崩服务容错的相关概念熔断器降级超时控制限流 二、会什么要有Hystrix三、如何使用Hystrix进行熔断处理整体项目代码服务提供者pom文件yml配置文件启动类controller 服务消费者pom文件yml配置文件启动类feignhystrixcont…

信息安全技术工业控制系统安全控制应用指南学习笔记

工业控制系统安全控制基线 根据工业控制系统在国家安全、经济建设、社会生活中的重要程度,遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权益的危害程度等,结合信息安全等级保护标准划分及实施效果分析,结合工业…

前端主题切换方案——CSS变量

前言 主题切换是前端开发中老生常谈的问题,本文将介绍主流的前端主题切换实现方案——CSS变量 CSS变量 简介 编写CSS样式时,为了避免代码冗余,降低维护成本,一些CSS预编译工具(Sass/Less/Stylus)等都支…

JVM面试题

JVM理论 #JVM内存模型# Java内存模型(JMM)? Java的内存模型决定了线程间的通信方式,JMM的模型是由主存和工作内存构成,两个线程想要正常通信需要将工作内存中的变量刷到主存中,另一个线程才能正确读取得…

【数据结构】移除链表元素-图文解析(单链表OJ题)

LeetCode链接:203. 移除链表元素 - 力扣(LeetCode) 本文导航 💭做题思路 🎨画图更好理解: ✍️代码实现 🗂️分情况讨论: ❄️极端情况: 💭做题思路 遍历链表…

Git报错合集

本文记录了笔者在使用 github 过程中遇到的问题,仅供个人使用。 目录 Could not resolve hostlocal changes to the following files would be overwritten by mergeTLS connection was non-properly terminatedUpdates were rejected because the remote contains …

普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元

不论办公还是游戏,高刷及低响应时间都很重要,微星现在推出了一款27寸显示器PRO MP273A, 售价只有799元,但支持100Hz高刷、1ms响应时间,还有FreeSync技术减少撕裂。 PRO MP273A的100Hz高刷新率是其最大的卖点之一&#…