分布式系统概念和设计——命名服务设计和落地经验

news2024/12/24 21:55:25

分布式系统概念和设计

通过命名服务,客户进程可以根据名字获取资源或对象的地址等属性。
被命名的实体可以是多种类型,并且可由不同的服务管理。

命名服务

命名是一个分布式系统中的非常基础的问题,名字在分布式系统中代表了广泛的资源,名字方便了通信与资源共享。
在计算机系统需对资源进行访问的情况下就需要名字。

  • 名字,地址和其它属性

    • 任何请求一个资源的进程必须拥有该资源的名字或标识,例如文件名/etc/passwd
    • 选择标识的一个重要指标是软件存储与查询标识的效率
    • 与名字完全相反的是对象的地址,改值识别了对象的位置而不是对象本身,地址通常可以访问对象,但是对象有时候会被重定位,地址并不足以作为标识的方法
    • 当一个名字被翻译成被命名的资源或对象数据,称一个名字被解析,解析名字的目的通常是为了在对象上调用的一个动作。
    • 名称和对象之间的关系称为绑定
  • 在这里插入图片描述

  • 名字与服务

    • 分布式系统使用的许多名字专用于特定的服务,客户使用名字请求特定服务在被命名的对象或资源上执行某个操作
    • 例如:删除一个文件,需要将文件名传送给文件服务;如果需要向特定进程发送信号,该进程的标识会被传送到进程管理服务
    • 在基于对象的中间件中,名字指向提供了服务或应用的远程对象,考虑到全球范围内对命名服务的需求,因为命名服务必须是能够理解的
  • 统一资源标识符

    识别web资源的主要方法,主要特性是对无限的web资源具有可伸缩性,是资源访问的高效句柄。不足之处是如果一个web资源被移动或者删除,会发生404,悬挂链接,也就是资源未找到

    URL (Uniform Resource Locator) 和 URI (Uniform Resource Identifier) 都是用于标识互联网上某个资源的字符串。它们的主要区别在于范围和含义。

    URI 是一个字符序列,用于唯一地标识某个抽象或物理资源。URI 有两种形式:URL 和 URN (Uniform Resource Name)。URL 是 URI 的子集,它指定了资源的位置和访问方式。例如:https://www.example.com/index.html 就是一个 URL,其中 https 表示协议,www.example.com 是主机名,index.html 是文件名。

    相比之下,URI 是更通用的概念,因为它可以标识任何类型的资源,包括但不限于互联网上的资源。比如,一个 urn:isbn:978-1-491-90005-6 就是一个 URN,它标识了一本书的国际标准书号(ISBN)。

    因此,URL 是一个特殊的 URI,用于定位互联网上的资源,并且包含标识该资源所需的信息。而 URI 则是更广泛的概念,用于标识各种类型的资源,包括但不限于互联网上的资源。

命名服务和域名系统

  • 一个命名服务存储了一个或多个命名上下文——有关用户,计算机,服务以及远程对象等对象的文本名字与属性之间的绑定的集合
  • 命名服务支持的主要操作是名字解析——根据一个给定的名字查询相应的属性
  • 其他操作如生成新的绑定,删除绑定,列表绑定的名字以及增删上下文
名字管理从其他服务中分离出来的主要原因在于分布式系统的开放性:
  • 一致性:不同服务管理的资源使用相同的命名机制带来的方便,URL是一个很好的例子。
  • 集成性:在分布式系统中并不总能预测共享的范围。如果在不同管理域中创建的资源,如果没有一个公共的命名服务,管理域会使用完全不同的命名约定
通用命名服务的需求
  • 最初设计的简单用来满足名字与单个管理域中的地址绑定的需求,而单个管理域对应于单个LAN/WAN,然而国际互联和分布式系统的不断扩展带来了一个更大的映射问题
  • Grapevine
    • 处理任意数量的名字,为任意数量的管理组织提供服务:系统尤其需要能处理全世界计算机用户的电子邮件地址
    • 长生命周期:在生命周期中,名字集组织,实现服务的组件都会发生变化
    • 高可用性:很多系统依赖命名服务,命名服务一旦崩溃,系统无法工作
    • 故障隔离:局部故障不会带来整个服务的崩溃
    • 不信任零容忍:一个大的开放系统很难拥有被系统中所有客户都信任的组件
  • Globe命名服务和handle系统都将目标集中于命名服务在大规模对象情况下的可伸缩性
    • 提供服务能力需要极大的依赖于名字数据的复制与缓存
名字空间

一个名字空间是一个特定服务所能识别的有效名字的集合,所谓的有效就是服务将试图查询之,即使该名字并不对应于任何对象——未绑定

名字空间需要预发定义,需计算机的DNS能够接收可解释的方式

  • 在unix文件系统中,名字有一个内部结构标识它们在层次型名字空间中的位置,层次型名字空间最重要的好处在于名字的每个部分总是相对独立的上下文进行解析,而相同的名字在不同的上下文中有不同的含义。比如(/etc/passwd和/usr/passwd),不同的上下文解析不同的目的
别名

一个方便的名字代替一个更加复杂的名字的设计需求,DNS允许的别名使用方法是,定义一个域名来表示另一个。提供别名的原因是为了提供透明性。

命名域

仅仅通过一个总的管理权威管理有关该域中的名字指派问题的名字空间,该权威机构完全控制哪些名字可以被绑定到域中,也可以将这个任务委托。

  • DNS的域名域名的集合。
    • 语法上,一个域的名字是该域中所有域名的公共后缀,除了公共后缀这个特点,域名很难与其他名字如计算机名区分开。
    • yahoo.com是域yahoo.com中的一台web服务器
    • 域的管理可以被移动到子域中进行管理
组合与定制名字空间
  • DNS提供了一个全局的,同构的名字空间,在DNS上,无论是哪台计算机上的哪个进程查询,同一个名字总是指向同一个实体。
  • 某些命名服务允许不同的名字空间——甚至是异构的名字空间嵌入其中
  • 有些是定制化的,满足用户甚至进程的需要
  • 合并:在unix与nfs中安装文件系统的实践提供了个名字空间的一部分被方便的嵌入到另一个空间的实例,考虑如何合并两个或多个完整的unix文件系统,这两个系统分别在不同的计算机上,每台计算机都有自己的根,具有重叠的文件名。

    • 合并过程最明显的方法是用一个超级根代替原来每台计算机上的根,然后将每台计算机的文件系统安装到该超级根目录下,带来根的兼容性问题
  • 异构性:分布式计算环境(DCE)的名字空间允许嵌入异构名字空间,DCE名字包含结合点,和unix中的安装点类似

    • 在这里插入图片描述
  • 定制:用户偏爱于构造自己的名字空间,另一个动机是同一个名字在不同的计算机上可以指向不同的文件

命名解析

名字解析通常是一个迭代的过程,通过该过程,名字被反复地发送到命名上下文。

一个命名上下文或者直接地将一个给定的名字映射到一组简单属性中。

或者将之映射到一个更深的命名上下文中,同时将一个派生名送到该上下文。

  • 在解析一个名字,该名字首先被送到某个初始命名上下文中,随着更深的命名上下文以及派生名的输出,解析过程不断进行。
  • 解析过程的另一个迭代特性是别名的使用
    • 例如当请求DNS服务器解析,服务器首先将该别名解析到另一个域名,然后这个域名进一步解析到一个IP地址
    • 别名的使用可能会导致名字空间带有循环,这种解析会发生死循环,需要处理阈值放弃解析和管理禁用处理
命名服务器和导航
  • 诸如DNS这样的命名服务,存储一个巨大的数据库,并由众多用户访问,通常不会将所有的名字信息放在单个服务器上
  • 如果只使用一台服务器存放名字信息,那么这台服务器会成为一个瓶颈以及故障的临界点
  • 任何重负载的命名服务都应该使用复制提高可用性,在DNS规定数据库的任何一个子集都必须复制到至少两个不会同时失效的服务器
缓存
  • 在DNS以及其它命名服务中,客户端的名字解析软件以及服务器维护了一个以往名字解析结果的缓存
  • 当客户发出一个名字查询请求时,客户的名字解析软件就查询它的缓存,最近访问原则。
  • 缓存也是命名服务的性能关键,即时在命名服务器崩溃的时候,缓存也可以帮助维护命名服务网的可用性。
  • 作用非常清晰:即通过约定与命名服务器的通信时间提高响应速度。
  • 也有可能在缓存中的数据解析得到的数据是过时的数据,这个需要单独处理缓存最新数据一致性的问题,back write.
  • 回写:回写机制设计的主要目的是确保缓存中的数据与主存中的数据保持一致性。当缓存中的数据被修改后,这些数据并不会立即写回到主存中,而是在缓存中暂时保存。为了确保数据的一致性,缓存需要根据一定的策略将修改过的数据周期性地或在特定条件下回写到主存中,从而保证缓存中的数据与主存中的数据的一致性。
域名系统

在这里插入图片描述

目录服务和发现服务

目录服务

存储了一组名字和属性的绑定,条目的查询基于属性规范。

有时也是基于属性的命名服务

发现服务

发现服务是一种目录服务,注册了自发网络环境下提供的服务。

在自发网络中,设备倾向于在不发出警告,未做管理预备工作的情况下接入网络。

自发网络的目标是客户于服务的集合可以动态改变,并且无需用户干预即可集成。

在这里插入图片描述

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

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

相关文章

C语言:指针求解鸡兔同笼问题

题目:鸡兔同笼问题 要求:使用自定义函数void calc(int h, int f,int *c,int *r) 求解鸡兔同笼问题。 h 表示总的头数,f 表示总的脚数。 例子: 输入: 5 16 输出: 2 3 分析: 在该代码中&a…

05-Docker安装Mysql、Redis、Tomcat

Docker 安装 Mysql 以安装 Mysql 5.7为例: docker pull mysql:5.7Mysql 单机 Mysql 5.7安装 启动 Mysql 容器,并配置容器卷映射: docker run -d -p 3306:3306 \--privilegedtrue \-v /app/mysql/log:/var/log/mysql \-v /app/mysql/data:…

ASP.NET Core MVC 从入门到精通之文件上传

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

VMware NSX-T Data Center 3.2.2.1 - 数据中心网络全栈虚拟化

请访问原文链接:https://sysin.org/blog/vmware-nsx-t-3/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VMware NSX-T Data Center 3.2.2.1 | 30 MAR 2023 | Build 21487560 VMware NSX-T Data Center 3.2.2 | 08 …

NOA上车「清一色」自主品牌,哪些供应商正在突围前线

随着入门级L2进入普及周期,以NOA(高速、城区)为代表的L2/L2赛道,正在成为主机厂、硬件供应商、算法及软件方案商的下一波市场制高点的争夺阵地。 高工智能汽车研究院监测数据显示,2023年1-3月中国市场(不含…

MySQL基础(十六)变量、流程控制与游标

1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为系统变量以及用户自定义变量。 1.1 系统变量 1.1.1 系统变量分类 变量由系统定义&#xff…

【Nacos在derby模式下密码忘记】使用derby的ij工具重置密码/修改密码

【问题描述】 nacos部署未用mysql,直接运行,使用了默认的derby数据库,这时候不一小心修改的密码给忘记了,无法登录 当时是部署在centos上的一个演示环境,没有采用mysql数据库,如果生产上,建议使用mysql。 …

php用户分享信息技术交流大学生论坛系统vue

系统应实现的目标 1. 提供安全、友好的操作环境:避免一些网上的不良言论,创造一个和谐的网络环境。 2. 提供发表帖子功能:注册的用户可以自由发帖,发表符合法律法规的言论。 3. 提供回复帖子功能:户可以自由回复&am…

camunda执行监听器如何使用

在Camunda工作流引擎中,执行监听器是一种机制,用于在业务流程执行期间捕获特定事件并执行相应的操作。它们可以帮助您实现一些重要的任务,例如: 1、记录或更新业务数据:当流程中的任务或事件发生时,您可以…

工程监测无线中继采集发送仪 指示灯功能说明及接口定义

工程监测NLM5无线中继采集发送仪 指示灯功能说明及接口定义 指示灯功能说明 标识 名称 状态 描述说明 备注说明 CHG 正在充电 常亮 正在充电 DON 充电完成 常亮 已充满 POW 电源指示 常亮 外部电源已连接 仅用于指示是否连接了外部电源 熄灭 无外部电源 SIG 空 RUN 运行状态 闪…

“数字社区”诞生 “智慧大脑”助力提升社区综合治理效能

近日,民政局等9部门印发的《关于深入推进智慧社区建设的意见》提出,到2025年,基本构建起网格化管理、精细化服务、信息化支撑、开放共享的智慧社区服务平台,初步打造成智慧共享、和睦共治的新型数字社区。 数字社区建设是智慧城市…

最优化理论-线性规划解的几何特征

目录 一、引言 二、线性规划的定义 三、线性规划的几何特征 1.可行域 2.最优解 3.等价约束 4.对偶问题 四、线性规划的应用 五、结论 一、引言 最优化理论是数学中的一个重要分支,它研究如何在给定的约束条件下,寻找一个最优解。其中&#xff…

【MySql】数据库索引

数据库索引 索引索引的创建索引的查看索引的删除 聚簇索引 & 非聚簇索引聚簇索引非聚簇索引 索引创建原则 索引 可以简单理解为一本书的目录信息,是为了提升查找效率而建立的 索引的创建 1、在创建一个主键、唯一键、外键时候,数据库会自动地针对查…

Express框架的安装和使用

1.Express框架简介 Node.js的web框架发展至今,第一个知名的框架为Connect框架.它类似一个中间件的脚手架.只提供逻辑,不实现具体的处理逻辑.中间件概念的引入Express框架奠定了基础. 2.Express框架的安装 安装分为局部安装和全局安装. 2.1局部安装 1.在D盘创建expressStud…

html实现开心消消乐小游戏

文章目录 1.设计来源1.1 游戏界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/130594511 html实现开心消消乐小游戏源码 《开心消消乐》 是一款三消游戏,游…

站群服务器和普通服务器区别

更有利于提升 站群服务器指的是对于站群系统提升客户开发设计的网络服务器,客户租服务器来置放好几个网站,许多客户以便免费在线上扩大曝出会挑选提升好几个网站。非站群服务器,基础只有置放两三个网站,并且在管理方法时也…

跨模态检索论文泛读:VisualSparta-利用加权的词袋进行大规模的文本到图像的检索

ACL2021 | 利用加权的词袋进行大规模的文本到图像的检索 VisualSparta: An Embarrassingly Simple Approach to Large-scale Text-to-Image Search with Weighted Bag-of-words主打速度! 简介 目前的跨模态检索方法主要分为查询相关和查询无关两种。查询无关的方法…

js实现产品页点击小图在大图区显示

企业网站产品图片可能会比较多&#xff0c;需要在产品页面多放几张展示图片&#xff0c;我们可以使用一张大图几张小图的形式排列&#xff0c;并使用js代码实现点击小图显示大图。效果如下所示 html代码部分&#xff1a; <div class"img_bd"> <img src"…

Windows在外远程桌面控制macOS 【macOS自带VNC远程】

文章目录 前言1.测试局域网内远程控制1.1 macOS打开屏幕共享1.2 测试局域网内VNC远程控制 2. 测试公网远程控制2.1 macOS安装配置cpolar内网穿透2.2 创建tcp隧道&#xff0c;指向5900端口 3. 测试公网远程控制4. 配置公网固定TCP地址4.1 保留固定TCP地址4.2 配置固定TCP端口地址…

在树莓派上搭建WordPress博客网站【内网穿透】

文章目录 概述安装 PHP安装MySQL数据库安装 Wordpress设置您的 WordPress 数据库设置 MySQL/MariaDB创建 WordPress 数据库 WordPress configuration将WordPress站点发布到公网安装相对URL插件修改config.php配置 支持好友链接样式定制主题 转载自cpolar极点云的文章&#xff1…