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

news2024/11/14 17:12:54

 

1. 控制层囊括所有在后台运行的成功处理生产负载的软件和服务

1.1. 处理用户生产数据的那些软件,就是生产软件

1.2. 主要工作是管理其他软件的软件,就是控制层

1.3. 工具和问题之间存在着重叠和空白,并不是每个工具组合都能协同工作,不存在能解决所有问题的万能软件包

1.4. 在集成工具时要耗费巨大的精力,进行大量的实验,经历无数的错误

2. 适合的控制层工具

2.1. 当考虑控制层时,请记住其中的每一部分都是可选的

2.1.1. 有了日志记录和监控这些控制层选项,就有助于开展事后分析、事故恢复和缺陷发现等工作

2.1.2. 没有这些选项,上述工作将花费更长的时间,甚至根本没有办法完成

2.2. 控制层越先进,其实现和运维的成本就越高

2.3. 控制层中的每个工具都有持续的运维成本

2.3.1. 将持续的运维成本看作权衡固定成本与可变成本

2.3.1.1. 专职运维人员的固定成本

2.3.1.2. 部署加速、事故恢复和服务整备等可变成本

2.4. 2007年

2.4.1. 记录日志和监控几乎是一个商业化的市场

2.5. 如今

2.5.1. 这个市场几乎是开源的

2.5.2. 最困难的问题变成了如何从所有精良的开源软件中选择一个自己满意的工具

2.6. 不要误以为必须安装所有工具

2.6.1. 控制层工具的发展日新月异,要持续评估不同解决方案的开销和难度

3. 机械效益

3.1. 机械效益指人类可以依靠简单机器增强自身力量

3.1.1. 阿基米德说过:“给我一个支点,我能撬动地球。”

3.2. 既能帮大忙,也能帮倒忙

3.2.1. 强大的杠杆作用使人花很少的力量就能做出巨大的改变

3.3. 运行得太快也有问题

3.3.1. 无论怎样,一旦关闭的实例数量超过了总服务器容量的50%,自动化工具就应该停下来,从而使人们能够确认移除容量确实是正确的行为

4. 平台和生态系统

4.1. 监控团队应该能够帮助相关人员响应应用程序告警

4.2. 监控团队不会进行监控,而会帮助其他人实现自行监控

4.3. 一种从占有某个领域向为客户提供服务的思维转变。

4.4. 监控团队提供了一个开发团队可以使用的接口,并负责编写接口的实现细节,而且在持续支持其接口协议的过程中,可以随时改变实现细节

4.5. 监控团队只负责实现相关工具,让其客户通过这些工具实现自身的监控器

4.6. 平台团队的数据库管理员主要负责保持数据库健康运行,数据库管理员要确保数据库具有足够的容量

4.6.1. 数据库管理员应该关注创建高性能和高稳定的平台

4.7. 数据模型的设计工作则由应用程序团队负责

4.7.1. 一个应用程序能很轻易地做出有害的模式变更,从而影响其他数据库消费者

4.7.2. 使用基于SQL的RDBMS要求我们为每个服务分配一个单独的物理数据库

4.8. 平台团队的目标是为客户赋能

5. 开发环境就是生产环境

5.1. 如果你的开发服务器镜像是一个带有已知配置的全新虚拟机,那就太棒了

5.2. 如果QA环境和生产环境能由同一个自动化工具创建,并且QA环境存有经过匿名化处理的一周以来的生产环境用户数据样本,那么你就继续保持吧

5.3. 开发人员完成工作所需的工具、服务和环境,应该以生产级别的SLA对待

5.4. 开发平台就是创造软件这项工作的生产环境

6. 整个系统的明晰性

6.1. 当网络规模较大时,“部分系统故障”也是正常的运维状态

6.2. 即使是网络规模较小的场景,在一切都没有运行的情况下,系统也应该能够继续“存活”一段时间

6.3. 真实用户监控

6.3.1. real-user monitoring,也可称其为RUM

6.3.2. 判断用户体验的最佳方式是直接测量

6.4. New Relic或Datadog等服务

6.5. AppDynamics或CA公司的APM

6.6. 3个优势

6.6.1. 能快速启动,无须构建基础设施或配置监控软件,很有可能在一小时内就开始收集数据了

6.6.2. 能为各种技术提供代理软件和连接器,这使所有监控集成到一处更加容易

6.6.3. 仪表盘和可视化界面往往比开源替代方案设计得更精美

6.6.4. 商业服务,需要支付订阅费

6.7. 开源工具

6.7.1. 要投入人力和基础设施等相对隐性的成本

6.8. 经济价值高于技术价值

6.8.1. 大多数软件则是为了创造经济价值而存在

6.8.2. 成本也会源自运维工作量

6.8.2.1. 软件越难以运维,人们在运维上所花费的时间就越多

6.8.3. 成本源自平台和运行时系统

6.8.3.1. 有些语言能让程序员快速编程,但需要更多实例处理特定的工作负载(这样就增加了成本)

6.8.4. 监控、日志收集、告警和仪表盘等手段的经济价值,其实是高于其技术价值的

6.9. 日志和统计信息

6.9.1. 日志收集器能以推或拉的模式进行工作

6.9.2. 推模式意味着实例能在网络上推送日志,此时通常使用历史悠久的syslog协议

6.9.3. 推模式对容器非常有用,它们无须额外保存状态,且通常没有本地存储

6.9.4. 使用拉模式,那么收集器就在中央计算机上运行,且能连接所有已知主机进而远程复制日志,服务只将其日志写入本地文件

6.9.5. 仅将所有日志保存在一台主机上,就已经小有成就了

6.9.6. Splunk在当今日志索引领域占据主导地位

6.9.7. 由Elasticsearch、Logstash和Kibana组成的“三驾马车”则是另一组流行的工具

6.9.8. 度量指标

6.9.8.1. 大多数度量指标数据库会对最近的样本进行细粒度的度量

6.9.8.2. 随着样本变老,它们会将样本聚合到越来越大的时间跨度

6.9.8.2.1. 今天的网卡错误率能以秒为单位查阅
6.9.8.2.2. 如果要查阅过去7天的错误率,则最细能以分钟为单位查阅
6.9.8.2.3. 如果要查阅7天之前的,则最细仅能以小时为单位查阅
6.9.8.2.4. 好处
6.9.8.2.4.1. 节省不少磁盘空间
6.9.8.2.4.2. 让长时间跨度的查询成为可能

6.10. 监控点

6.10.1. 流量指示

6.10.1.1. 页面请求量、页面请求总数、事务计数、并发会话数

6.10.2. 每种类型的业务交易

6.10.2.1. 已处理的业务交易数量、被终止的业务交易数量、所创造的业务价值(以元为单位)、事务持续时长、业务转化率、业务完成率

6.10.3. 用户

6.10.3.1. 用户群分析或分类、用户使用技术的偏好、注册用户百分比、用户数量、使用模式、使用中遇到的错误数量、登录成功数量、登录失败数量

6.10.4. 资源池健康状况

6.10.4.1. 是否处于启用状态、总资源数量(适用于连接池、worker线程池和其他所有资源池)、检出资源的数量、高水位线、所创建的资源数量、所销毁的资源数量、资源检出的总次数、等待某资源而被阻塞的线程数量、某线程被阻塞等待的次数

6.10.5. 数据库连接健康状况

6.10.5.1. 抛出的SQLException数量、查询数量、查询的平均响应时间

6.10.6. 数据消费量

6.10.6.1. 用于展示的实体或行的数量、数据在内存和磁盘中的占用量

6.10.7. 集成点健康状况

6.10.7.1. 断路器状态、超时次数、请求数量、平均响应时间、良好响应数量、网络错误数量、协议错误数量、应用程序错误数量、远程端点的实际IP地址、当前并发请求数、并发请求高水位线

6.10.8. 缓存健康状况

6.10.8.1. 缓存项数量、缓存所占内存量、缓存命中率、垃圾收集器刷新的缓存项数量、缓存配置的上限、缓存项创建所用时间

6.10.9. 隐含的时间条件“最近n分钟”或“自上次复位以后”

6.10.10. 要衡量系统连续的度量指标的标称范围,“用某时间段的平均值加上或减去两个标准差”不失为一个实用的经验法则

6.10.11. 不存在适用于所有组织的正确度量时间段

6.10.11.1. 对零售商来说,强烈地关注在“每年最忙一周”里所得到的度量指标

6.10.11.2. 如旅游、花卉和体育,与访问流量最相关的度量往往发生在节假日或重大活动期间

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

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

相关文章

LeetCode 28题:找出字符串中第一个匹配项的下标

题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystac…

2023 8-5

430. 扁平化多级双向链表 前序遍历(递归) 脖子左歪45度,多级链表变成了二叉树,输出先序即可。 前序遍历再将结果存放在双向链表中,通过将链表存入节点来改变原来的节点 /* // Definition for a Node. class Node { public:int val;Node* prev;Node* next;Node* child; }; *…

springboot+maven插件调用mybatis generator自动生成对应的mybatis.xml文件和java类

mybatis最繁琐的事就是sql语句和实体类,sql语句写在java文件里很难看,字段多的表一开始写感觉阻力很大,没有耐心,自动生成便成了最称心的做法。自动生成xml文件,dao接口,实体类,虽一直感觉不太优…

百度秋招攻略,百度网申笔试面试详解

百度秋招简介 作为行业巨头,百度向社会提供的岗位一直都是非常吃香的,每年也都有很多考生密切关注,百度发布的招聘广告,以尽可能的让自己进入这家企业工作,实现自己的人生价值。那么百度每年的秋招时间是多久&#xf…

【ChatGPT 指令大全】怎么利用ChatGPT写报告

目录 选定切入角度 报告开头 大纲生成 草稿撰写 研究报告 提出反对观点 报告总结 研究来源 总结 随着人工智能技术的快速发展,自然语言处理技术在各个领域的应用越来越广泛。其中,ChatGPT作为目前最先进的自然语言处理模型之一,其强…

微信支付官方文档怎么看

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

angular-mat-select 多选 实现按选择顺序排序

mat-select 正常情况下,多选后,已选项是按列表顺序进行排序,如果我想实现按照点击项目的顺序进行排序,我该如何做呢? [参考网址](Angular order of selected option in multiple mat-select - Stack Overflow) sortComparator是Angular Material中mat-select组件的一个属…

springboot第34集:ES 搜索,nginx

#用search after解决深分页性能问题 #第一页 GET /bank/_search {"size": 10,"sort": [{"account_number": {"order": "asc"}}] }#第二页 GET /bank/_search {"size": 10,"sort": [{"account_numb…

中国1km分辨率月最低温度数据集(1901-2021年)介绍

该数据为中国逐月最低温度数据,空间分辨率为0.0083333(约1km),时间为1901.1-2021.12。数据格式为NETCDF,即.nc格式。数据单位为0.1 ℃。该数据集是根据CRU发布的全球0.5气候数据集以及WorldClim发布的全球高分辨率气候…

数据安全治理的关键-数据分类分级工具

强大的资产发现能力 多种资产发现方式的组合应用,能够最大程度地提高资产发现能力。 灵活的敏感数据分类分级规则 内置丰富的敏感数据分类分级规则,支持正则表达式、关键词组、非结构化指纹、结构化指纹、机器聚类等多种匹配方式,并且规则…

vscode插件不能搜索安装

1 现象 vscode搜索自己的插件,报错: Error while fetching extensions. HXR failed2 原因 之前用vscode开发golang语言,设置了proxy代理,所以导致错误,删除即可 重启vscode 3 结果

基于Go编写一个可视化Navicat本地密码解析器

前提 开发小组在测试环境基于docker构建和迁移一个MySQL8.x实例,过程中大意没有记录对应的用户密码,然后发现某开发同事本地Navicat记录了根用户,于是搜索是否能够反解析Navicat中的密码掩码(这里可以基本断定Navicat对密码是采用…

IL汇编语言读取控制台输入和转换为整数

新建一个testcvt.il; .assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 1.entrypointldstr "\n请输入一个数字:"call void [mscorlib]System.Console::Write(string)call st…

二分图笔记

什么是二分图? 二分图一般针对无向图问题 一张图中,如果能够把全部的点分到两个集合中,保证两个集合内部没有任何边 ,图中的边只存在于两个集合之间,即为二分图 判断二分图 1. 染色法 即用两种颜色对于这张图进行染…

Redis内网主从节点搭建

Redis内网主从节点搭建 1、文件上传2、服务安装3、服务启动4、配置主从复制 1、文件上传 内网环境手动上传gcc-c、redis.tar文件 2、服务安装 # 解压 unzip gcc-c.zip unzip gcc_rpm.zip tar -zxvf redis-6.2.13.tar.gz# 安装 cd gcc_rpm/ rpm -ivh *.rpm --nodeps --force…

LIME(可解释性分析方法)

目录 1.什么是LIME 2.思路 3.LIME在不同任务中的范式(待补充) 1.什么是LIME 简单理解: 对于分类任务:如下图所示,LIME可以列出分类结果,所依据特征对应给比重。 对于图像分类任务:如下图所示&a…

Python(六十八)元组的创建方式

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

JVM详情

JVM详情 一、JVM内存划分二、双亲委派模型(重点考察)三、 GC(垃圾回收机制)垃圾的判定算法垃圾回收算法 一、JVM内存划分 堆:存放new出来的对象;(成员变量) 方法区:存放…

【代码源每日一题div2 】简单的异或问题

简单的异或问题 - 题目 - Daimayuan Online Judge 题意: 思路: 首先这有一个结论:0~2^m-1的所有数进行XOR运算后,得到的结果是0。我们来证明一下这个结论: 比如m3时,一共是0 1 2 3 4 5 6 7,八…