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

news2025/1/10 2:07:58

 

1. 术语的定义

1.1. 服务

1.1.1. 指共同协作、以单元的形式对外提供功能的跨机器进程集合

1.1.2. 一个服务可以由多种可执行文件组成

1.1.3. 一个服务可能包含来自多个可执行文件的多个进程

1.1.4. 可能对外呈现单个IP地址,并在后台进行负载均衡

1.1.5. 可能有多个IP地址,且每个都使用相同的DNS名称

1.2. 实例

1.2.1. 指单台机器(容器、虚拟机或物理机)上的一个安装文件集,位于运行相同可执行文件的负载均衡阵列中

1.2.2. 一组实例指的是运行相同可执行文件的多个进程,这些实例在不同的机器上运行

1.3. 可执行文件

1.3.1. 指由构建过程所创建的制品,机器可以将其作为进程来启动

1.3.2. 在编译型语言中,是一个可执行的二进制文件

1.3.3. 对于解释型语言则是源文件

1.3.4. 还包括在执行之前需要安装的共享库

1.4. 进程

1.4.1. 指在系统中正在运行的一个应用程序,也是可执行文件的运行时镜像

1.5. 安装文件集

1.5.1. 指可执行文件、所有衍生目录、配置文件以及机器上的其他资源

1.6. 部署

1.6.1. 在一台机器上创建安装文件集的行为

1.6.2. 部署是自动化的过程,其定义在源代码控制系统中保存

2. 构建代码

2.1. 保证用户准确地知道实例中添加的代码

2.2. 建立从开发人员到生产环境实例的强大的“监管链”至关重要

2.3. 必须确保任何未经授权的一方,都无法在用户系统中添加代码

2.4. “监管链”从开发人员的工位开始,开发人员应该在版本控制系统中管理代码

2.4.1. 只有代码才能进入版本控制系统

2.4.2. 版本控制并不擅长处理第三方库或依赖库

2.5. 构建工具必须能将依赖库从某处下载到开发人员的计算机中

2.6. 从互联网下载依赖库虽然方便但不安全

2.6.1. 中间人攻击或上游库的操纵,从互联网下载的某个依赖库能轻易地被悄悄替换掉

2.6.2. 从网上下载依赖库,也应该尽快将其转移到私有库中

2.6.3. 只有当依赖库的数字签名与来自上游提供商已公布的信息匹配时,才能将该依赖库存入私有库中

2.7. 开发人员不应该最先在自己的机器上创建生产版本

2.7.1. 开发人员的计算机已经被彻底污染了

2.7.2. 浏览器也安装了“惹人嫌”的工具栏和冒牌的“搜索增强器”

2.8. 只能在CI服务器上创建生产版本,并将其二进制文件存在其他人无法写入的安全的部署包库中

3. 不可变、易处理的基础设施

3.1. 通过脚本描述的机器运行状态

 

3.1.1. “一层层抹泥”的方法更新机器的状态有两大挑战

3.1.1.1. 这样做容易产生副作用,脚本无法描述机器状态

3.1.1.2. 只能部分工作的受损的机器或脚本,它们会使机器处于未定义的状态

3.2. 创建新镜像

 

3.2.1. 不可变基础设施

3.2.1.1. 机器一旦部署就不再变更

3.2.2. 始终从已知的基础镜像开始,在其上施加一组固定的更改,之后不再对该机器进行修补或更新,这样做会更可靠

3.2.3. 当需要变更计算机时,再次从基础镜像开始,创建一个新的镜像

3.2.4. 容器的“文件系统”是部署包库中的二进制镜像,包含能在实例上运行的代码,当需要部署新代码时,我们不会再修补容器,而是构建并启动一个新容器,放弃旧容器

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

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

相关文章

潇洒郎: bat文件与vbs文件, 执行命令行命令以及执行时无console, reg文件注册表

截图.bat start snippingtool 锁屏.bat rundll32.exe user32.dll,LockWorkStation redis.bat cd %~dp0 redis-server.exe redis.windows.conf vbs Set ws CreateObject("Wscript.Shell") ws.run "cmd /c C:/Python27/Scripts/ride.bat",vbhide 在上…

记录好项目D23

记录好项目 你好呀,这里是我专门记录一下从某些地方收集起来的项目,对项目修改,进行添砖加瓦,变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个基于Springboot教务管理系统 一、系统介绍 这个项目是一个简单的教…

Slowhttptest----DoS攻击工具

Slowhttptest----DoS攻击工具 文章目录 slowhttptestcentos下安装slowhttptestUbuntu 20.04 LTS下安装slowhttptest使用 slowhttptest SlowHTTPTest 是依赖 HTTP 协议的慢速攻击 DoS 攻击工具。 工具的设计基本原理是服务器在请求完全接收后才会进行处理。 如果客户端的 HTT…

香港银行开个人账户应该选择哪个银行,附详细指南

香港现在陆续通关,开户是越来越方便,目前已经很多有账户需求的都过去开户了,那现在个人在香港银行开户的话可以开哪些银行呢?我列举了几个,可以参考下 汇丰个人户,当场开好拿卡使用 恒生个人户&#xff0…

商标注册 | 美国商标注册资料、流程、时间、方式一文详解

中国对外贸易市场中,美国是当仁不让的重要出口市场,这成为众多国内企业产品出海的先选目的地。产品出口也会涉及到一系列知识产权问题,而这个问题之一就是美国商标的注册。 美国的商标保护非常完善,它不仅可以阻止侵权商品进入美…

【ts】变量的类型注解

ts使用类型注解的好处:使用类型注解,可以使代码更加清晰和易于理解,在处理复杂的数据解构的时候,提高代码的可读性和可维护性。 在vue3中,类型注解是可选的,可用可不用,如果不用,vue…

机器学习 day22(ReLU激活函数,激活函数的种类,如何选择激活函数)

ReLU激活函数 当问题的结果是二元的,则a的范围是(0,1)激活函数g(z)可以用sigmoid激活函数。如果问题的结果是多元的,如让a的范围取(0,∞),激活函数g(z)可以选用ReLU激活函数,他在z…

深入理解预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)三者的联系与区别

1. 什么是预训练和微调 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整参数,直到网络的损失越来越小。在训练的过程中,一开始初始化的参数会不断变化。…

prometheus进程监控配置告警及解决grafana监控面板不展示主机名问题

process_exporter进程监控及告警 监控服务器全部或某些进程是否健康,以及进程所占用资源是否异常使用process_exporter监测器进行进程信息的采集与node_exporter监测器相同,需要监测哪台服务器的进程,就将process_exporter监测器部署在哪台 安…

python提取GO信息

1.原始数据: 原始数据链接: http://current.geneontology.org/ontology/go-basic.obo原始数据样式: 2.目标格式: 3.代码: with open("go-basic.obo","r") as file:lib{}for line in file:lin…

小米面试题:Spring Boot 有哪些优点?

大家好,我是你们的小米!今天我们来聊聊在Java开发领域备受瞩目的话题——Spring Boot。作为一款快速构建Java应用程序的框架,Spring Boot凭借其独特的优点和便利性,成为了众多开发者钟爱的选择。那么,让我们一起来看看…

MySQL数据库索引机制

文章目录 一、MySQL缓冲区二、MySQL的page1.认识单个page2.认识多个页3.聚簇索引和非聚簇索引 三、索引的操作1.创建主键索引2.创建唯一索引3.创建普通索引4.查询索引的方法5.删除索引的方法6.索引创建原则 一、MySQL缓冲区 MySQL是一款有客户端和服务端的网络应用&#xff0c…

使用CMD命令如何监听1433端口,windows下对端口的基本监听操作

使用CMD命令如何监听1433端口 开始---->运行---->cmd,或者是windowR组合键,调出命令窗口 netstat -ano |find "1433" 输入 netstat ;设定参数 -ano ;输入分隔符 | ;输入参数 find ;设定要监听的…

Zabbix监控系统及安装部署

Zabbix监控系统系统及安装部署 一、Zabbix的概念二、zabbix 监控原理三、zabbix的综合对比四、Zabbix 6.0 新特性Ⅰ、Zabbix server高可用防止硬件故障或计划维护期的停机:Ⅱ、Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集…

走进人工智能|机器人技术 人机协作新纪元

前言: 机器人技术为人类提供协助、增强生产力,改善生活质量,并推动科技进步和社会发展。 文章目录 序言背景核心技术支持人机协作新纪元目前形式领跑人困难和挑战 总结 机器人技术作为现代科技领域的重要研究方向,已经在各个领域展…

电脑Tab键有什么功能?6个实用功能总结!

我最近对电脑的键盘很有兴趣,想了解一下各个键有什么特殊的用法。今天正好看到Tab键,想问下大家知道电脑的Tab键有什么比较好用的功能吗? 在电脑键盘上,Tab键是一个常见的键,它具有多种功能和用途。无论是在文本处理、…

BOSHIDA DC电源模块如何选择定制代加工

BOSHIDA DC电源模块如何选择定制代加工 选择定制代加工DC电源模块需要考虑以下几个方面: 1. 电源模块的性能和规格:需要根据实际应用场景,确定所需的输出电压、输出电流等参数,并选择合适的电源模块类型,如开关电源模…

神经网络的量化

tinyML 的主要挑战是如何采用相对较大的神经网络(有时约为数百兆字节),并使其适合并在资源受限的微控制器上运行,同时保持最小的功耗预算。 为此,最有效的技术称为量化(quantization)。 推荐&am…

1.5 为x64dbg编写插件

任何一个成熟的软件都会具有可扩展性,可扩展性是现代软件的一个重要特征,因为它使软件更易于维护和适应变化的需求,x64dbg也不例外其可通过开发插件的方式扩展其自身功能,x64dbg提供了多种插件接口,包括脚本插件、DLL插…

基于深度学习的高精度鸡蛋检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度鸡蛋检测识别系统可用于日常生活中或野外来检测与定位鸡蛋目标,利用深度学习算法可实现图片、视频、摄像头等方式的鸡蛋目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…