读发布!设计与部署稳定的分布式系统(第2版)笔记21_实例层之配置

news2024/7/6 19:56:20

 

1. 导致运维失误的两大因素

1.1. 隐秘的连锁反应

1.2. 暗藏的高复杂度

1.3. 影响着配置属性

2. 配置

2.1. 配置属性是系统用户接口的一部分,供支持其开发和运维的人员使用

2.1.1. 最易被忽视

2.2. 生产级别的软件都有大量可配置的属性

2.2.1. 主机名

2.2.2. 端口号

2.2.3. 文件系统位置

2.2.4. ID号

2.2.5. 用户名

2.2.6. 密码

2.3. 任何属性出现错误,系统都会遭到破坏

2.3.1. 即使该系统大部分时间能够正常工作,也仍有可能在某个重要时刻中断服务

3. 配置文件

3.1. 由于同一个软件需要在不同的实例上运行,因此某些配置属性可能会因机器而异

3.2. 代码应该在部署目录之外查找适合相应部署环境的配置

3.3. 配置文件会包含整个企业中最敏感的信息:生产数据库的密码

3.3.1. 要避免将不同部署环境的配置值保存在版本控制系统中

3.4. 只要将配置信息存放在与源代码不同的存储库中,将其锁好,仅对有权访问的人开放,并且管理员能够根据过程、程序和执行人等授予或撤销对相关配置信息的访问权限,那么配置信息也可以存放在版本控制系统中

4. 易处理基础设施的配置

4.1. 基于镜像的环境中无法针对不同的实例改变其配置文件

4.2. 方法

4.2.1. 在启动时注入配置信息

4.2.1.1. 提供环境变量或文本blob来注入配置信息

4.2.1.2. 对大多数小团队来说,注入配置信息更为适用

4.2.2. 使用配置服务

4.2.2.1. 将配置信息注入镜像的方法通过配置服务完成

4.2.2.2. 实例会对配置服务产生严重的依赖

4.2.2.2.1. 配置服务只要一中断,就立即会引发严重级别高达1级的事故
4.2.2.2.2. 当配置服务不可用时,实例就根本无法启动

4.2.2.3. ZooKeeper、etcd以及其他任何配置服务,都是复杂的分布式系统软件

4.2.2.3.1. 必须依赖一个精心设计的网络拓扑才能最大限度地提高可用性,并且必须对其容量进行精细的管理

4.2.2.4. 配置服务需要高度的运维成熟度,并会带来一些显著的开销

4.2.2.4.1. 只是服务于一个应用程序,那么就不值得使用配置服务
4.2.2.4.2. 只有服务于组织中更广泛的应用程序时,才适合进行配置服务

5. 定义配置属性

5.1. 属性名称应足够清晰,帮助用户避免“自我失误”

5.2. 主机就定义为hostname,这样的命名虽然没错,但毫无帮助

6. 明晰性

6.1. 指的是系统容许运维工程师、开发工程师和业务负责人了解其历史趋势、当前状况、即时状态和未来走向的程度

6.2. 系统级的明晰性视图将呈现历史分析、当前状态、即时行为和未来走向,每个实例都可以提供足够多的数据构建系统级视图

6.3. 当且仅当具有某种程度的明晰性时,系统才能更加成熟

6.4. 良好的数据有助于做出正确的决策,在缺乏可信数据的情况下,决策就只能根据某人的影响力、偏见

6.5. 缺乏明晰性的系统无法在生产环境中长期运行

6.5.1. 如果系统管理员不了解系统在做什么,就无法对其进行调整和优化

6.5.2. 如果开发人员不了解生产环境中系统各个部分的运行状况,那么他们就不能随着时间的推移,提高系统的可靠性或韧性

6.5.3. 如果业务负责人不了解系统是否在帮助他们赚钱,那么他们将不会投资系统未来的工作

6.5.4. 如果缺乏明晰性,那么每次发布都会让系统变得更糟,从而令系统发生退化

7. 明晰性设计

7.1. 严格的局部可见性只能实现严格的局部优化

7.2. 如果每次仅提升一个应用程序的可见性,则会掩盖扩展效应引发的问题

7.3. 监控和报告系统应该像在系统周围构建的外骨骼,而不是交织在系统内部

7.3.1. 要密切关注系统内耦合现象,监控框架侵入系统内部相对容易

7.4. 从进程中获取信息

7.5. 在实例上运行的进程是完全不明晰的

7.5.1. 除非能在该进程中运行调试器,否则进程几乎不会揭示任何关于自己的信息

7.6. 黑盒技术在系统外部运行,通过外部观察到的事物检查进程

7.6.1. 可以在系统发布后实施,通常由运维人员完成

7.6.2. 易用的日志抓取系统(如Splunk)就是黑盒技术的例子

7.7. 白盒技术在系统内部运行,通常这种技术看起来像是由特定语言库提供的代理

7.7.1. 在开发过程中,白盒技术和进程必须要集成到一起

7.7.2. 白盒技术与编程语言和开发框架之间的耦合更为紧密

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

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

相关文章

el-breadcrumb面包屑详解

el-breadcrumb面包屑详解 封装面包屑组件 <template><div class"crumb"><el-breadcrumb separator"/"><template v-for"(item,index) in levelList"><el-breadcrumb-item :key"item_ index">{{item.na…

SQL Server 2012数据库允许远程连接设置

1、打开 SQL Server Management Studio 2、打开 Security 按照如下设置&#xff0c;然后点确定 3、打开SQL Server Configuration ManagerMent 4、如下图都设置为Enabled 6、sql server重启

寻找最佳同步云盘:如何选择适合您的高效、可靠的云端存储方案?

同步云盘是集备份、同步、共享于一体的软件&#xff0c;备受用户青睐。在这个信息化的时代&#xff0c;我们经常需要在不同的设备之间共享文件&#xff0c;而同步云盘正可以帮助我们在多台设备之间同步文件。不过目前市面上同步云盘众多&#xff0c;我们该如何选择同步云盘呢&a…

JMeter常用业务知识和组件(5)

这里写目录标题 一、信息头管理器1案例、测试开发平台登录接口2案例、测试平台获取测试用例接口 二、HTTP请求默认值案例1&#xff1a;实现登录接口测试 三、Cookie管理器&#xff08;有问题&#xff09;案例1&#xff1a;开源项目TPshop商城登录案例案例2&#xff1a;(有问题)…

双向复制粘贴半监督医学图像分割

文章目录 Bidirectional Copy-Paste for Semi-Supervised Medical Image Segmentation摘要本文方法实验结果 Bidirectional Copy-Paste for Semi-Supervised Medical Image Segmentation 摘要 在半监督医学图像分割中&#xff0c;存在标记数据与未标记数据分布不匹配的问题。…

Python基础 —— 变量

〇、概述 变量&#xff0c;正如其字面意思所言&#xff0c;即 *“变化的量*”&#xff0c;通过变量&#xff0c;可以将数据临时存储。 这就好像图书馆的书架&#xff0c;存放着一本本包含着很多知识的书。为了方便查找&#xff0c;图书馆里的每本书都有编号&#xff0c;书架也…

#VCS# 关于VCS 编译选项:+vcs+initreg+random的理解(3)回头是岸

前段时间,有时间整理了一下关于+vcs+initreg+random 编译和仿真选项的心得,草草写了两篇笔记。自觉得对该选项已经掌握了,后来实际应用中再次触及到了该知识点,不想又卡壳了。今天,继续追加一篇,希望对大家能有所帮助!不正之处,请指正。 对于上述规则rule#2和 rule#3,…

DM数据库迁移,从DM到DM

1、打开DM数据迁移工具 2、新建工程 3、新建迁移 4、下一步 如果连接不上可能需要指定驱动

ChatGPT Prompting开发实战(一)

第7章 ChatGPT Prompting开发实战 7.1 Prompting在LangChain框架中的应用 本节跟大家讲提示工程(Prompt Engineering),主要基于工业级的源码以及具体的项目,无论是工程人员,还是不具有技术背景的人员,大家多少都听说过提示词,或者频繁使用过,简单而言,当我们使用OpenA…

品牌低价监测要注意哪些方面

对于所有销售渠道的价格&#xff0c;品牌一般都会有相应的标准&#xff0c;比如会设置建议零售价&#xff0c;这也是为了渠道间的合理发展&#xff0c;让品牌能够长期更好的生存&#xff0c;所以设置了相应价格线的产品&#xff0c;品牌当然不想出现低价产品链接。所以针对价格…

关于旋转向量和罗德里格斯旋转公式

使用cv2.Rodrigues函数即可实现 import cv2 import numpy as np # 相机标定 ret, rvec, tvec, idx, std_dev cv2.calibrateCamera(...) # 将rvec转换为旋转矩阵 R cv2.Rodrigues(rvec) # 将旋转矩阵转换为欧拉角 roll, pitch, yaw cv2.decomposeHomographyMat(R…

利用picard构建参考基因组的dict索引文件

最近&#xff0c;自己在利用gatk中的Haplotypecaller进行calling-snp时&#xff0c;出现报错&#xff1a; Runtime.totalMemory()2304245760 ***********************************************************************A USER ERROR has occurred: Fasta dict file file:///da…

C# WPF通过反射及Ioc容器加载并显示其它项目界面(精品)

概述 这节主要通过发射Caliburn.Micro自带的ioc容器实现加载并显示其它项目中的界面.实现效果如下&#xff1a; 具体实现 -. ①首先在引导程序页面通过发射加载类库&#xff0c;并将视图注入ioc容器&#xff0c;这里为了实现解耦合注入了ICommonBasePage接口类型&#xff1a; …

手把手教你安装Zookeeper 及可视化插件ZooInspector、ZKUI

手把手教你安装Zookeeper 一、下载Zookeeper二、配置并启动1. 服务端配置2. 启动服务端3. 客户端验证 三、图形化管理工具1. ZooInspector2. ZKUI 一、下载Zookeeper 环境预备&#xff1a;请确保JDK正确安装 我们先进入 官网发布页面 根据推荐&#xff0c;推荐直接使用最近…

Web漏洞-敏感信息泄露-后台地址爆破

实验目的 通过爬虫去爬取网站目录&#xff0c;然后将爬取到目录进行展现&#xff0c;同时也可以匹配关键目录&#xff0c;如&#xff1a;admin,manger等。 实验环境 实验环境&#xff1a;kali 实验工具&#xff1a;Dirb 实验原理 默认情况下后台地址是不应被搜索引擎爬取到…

回归预测 | MATLAB实现WOA-DNN鲸鱼算法优化深度神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现WOA-DNN鲸鱼算法优化深度神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-DNN鲸鱼算法优化深度神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现WOA-DNN鲸鱼算法优化深度…

window11系统基于 wsl2 安装Linux发行版ubuntu,并安装docker及vscode

前景介绍&#xff1a; WSL是“Windows Subsystem for Linux”的缩写&#xff0c;顾名思义&#xff0c;WSL就是Windows系统的Linux子系统&#xff0c;其作为Windows组件搭载在Windows10周年更新&#xff08;1607&#xff09;后的Windows系统中。 既然WSL是“子系统”&#xff…

数据库视图与索引经典题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 视图与索引视图&#xff1a;定义视图创建视图删除视图查询视图视图的作用 索引索引的概念索引的类型设计索引 视图与索引 视图&#xff1a; 视图是从一个或几个基…

RabbitMQ系列(20)--RabbitMQ备份交换机

前言&#xff1a;上一篇文章我们提到当交换机确认消息失败或者交换机发送消息到队列失败&#xff0c;都可以通过回调方法让生产者重新发送消息&#xff0c;除此之外另一种方法就是通过备份交换机的方式保证消息的不丢失&#xff0c;当生产者无法把消息投递给交换机&#xff0c;…

剑指 Offer 67: 把字符串转换成整数

这道题使用的办法是先判断是否有符号&#xff0c;把空格消除&#xff0c;然后用一个标志位判断是否为负数。当遇到这种问题记得调用Integer中的MIN_VALUE和MAX_VALUE这样最方便。 class Solution {public int strToInt(String str) {//去前后空格char[] chars str.trim().toCh…