分布式基础知识

参考 https://github.com/CyC2018/Interview-Notebook/blob/master/notes/

基本概念

(1)异常:

  • 1. 服务器宕机

  内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。

  服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。

  • 2. 网络异常

  有一种特殊的网络异常称为 网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。

  • 3. 磁盘故障

  磁盘故障是一种发生概率很高的异常。

  使用冗余机制,将数据存储到多台服务器。

(2)超时:
  可以将服务器的操作设计为具有 幂等性 ,即执行多次的结果与执行一次的结果相同。如果使用这种方式,当出现超时的时候,可以不断地重新请求直到成功。

(3)衡量指标

  • 1. 性能

  常见的性能指标有:吞吐量、响应时间。这两个指标往往是矛盾的,追求高吞吐的系统,往往很难做到低响应时间。

  高吞吐意味并发系统,高并发提高 CPU 资源的利用率,但是请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间增高。

  • 2. 可用性:指系统在面对各种异常时可以提供正常服务的能力
  • 3. 一致性:见之前的文章
  • 4. 可扩展性:指系统通过扩展集群服务器规模来提高性能的能力。

---------------------------------------------------------------------------------------------------------------------

数据分布

(1)哈希分布

  将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数据的主键为 key,则将该数据分配的节点序号为:hash(key)%N。

  传统的此类算法存在问题:当节点数量变化时,也就是 N 值变化,那么几乎所有的数据都需要重新分布,将导致大量的数据迁移。

然后提出了一致性哈希

  Distributed Hash Table(DHT):对于哈希空间 0~2n,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。

  一致性哈希的优点是在加入或者删除节点时只会影响到哈希环中相邻的节点。

(2)顺序分布

  哈希分布式破坏了数据的有序性,顺序分布则不会。

  顺序分布的数据划分为多个连续的部分,按一定策略分布到不同节点上。例如下图中,User 表的主键范围为 1 ~ 7000,使用顺序分布可以将其划分成多个子表,对应的主键范围为 1 ~ 1000,1001 ~ 2000,...,6001 ~ 7000。

  引入 Meta 表是为了支持更大的集群规模,它将原来的一层索引结分成两层,Meta 维护着 User 子表所在的节点,从而减轻 Root 节点的负担。

---------------------------------------------------------------------------------------------------------------

负载均衡

  衡量负载的因素很多,如 CPU、内存、磁盘等资源使用情况、读写请求数等。分布式系统应当能够自动负载均衡,当某个节点的负载较高,将它的部分数据迁移到其它节点。

  每个集群都有一个总控节点,其它节点为工作节点,由总控节点根据全局负载信息进行整体调度,工作节点定时发送心跳包(Heartbeat)将节点负载相关的信息发送给总控节点。

  一个新上线的工作节点,由于其负载较低,如果不加控制,总控节点会将大量数据同时迁移到该节点上,造成该节点一段时间内无法工作。因此负载均衡操作需要平滑进行,新加入的节点需要较长的一段时间来达到比较均衡的状态。

--------------------------------------------------------------

复制

  复制是保证分布式系统高可用的基础,让一个数据存储多个副本,当某个副本所在的节点出现故障时,能够自动切换到其它副本上,从而实现故障恢复。

  多个副本通常有一个为主副本,其它为备副本。主副本用来处理写请求,备副本主要用来处理读请求,实现读写分离。主副本将同步操作日志发送给备副本,备副本通过回放操作日志获取最新修改。

  两种:强同步复制协议,一种是异步复制协议。(分别在可用性和一致性有不同的表现,即CA不能共同满足)

---------------------------------------------------------------------------

CAP理论:在之前的文章中有讲过(分区容错需要保证,CA之间权衡)

BASE:基本可用、软状态、最终一致性:由CAP演化而来,在一致性上妥协

即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

  ACID 是传统数据库系统常用的设计理论,追求强一致性模型。BASE 常用于大型分布式系统,只需要保证最终一致性。在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。

-------------------------------------------------------------------

容错:(自动化容错)

故障检测:可以通过租约机制 来对故障进行检测

故障恢复:当某个节点故障时,就将它上面的服务迁移到其它节点。可也有主动恢复机制

--------------------------------------------------------------------

CDN架构

  通过将内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取。不仅可以减轻服务器的负担,也可以提高用户的访问速度。

  从下图可以看出,DNS 在对域名解析时不再向用户返回源服务器的 IP 地址,而是返回边缘节点的 IP 地址,所以用户最终访问的是边缘节点。边缘节点会先从源服务器中获取用户所需的数据,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取。

原文地址:https://www.cnblogs.com/zhang-qc/p/8687663.html

时间: 2024-12-13 14:48:26

分布式基础知识的相关文章

浅谈群集与分布式基础知识

长期以来对于做IT的人员来说可能会经常听见一个名词,群集,什么负载均衡群集,高可用群集,双活群集,这对于非相关人员来说根本不明白是什么意思,好像群集很神秘,很高大上,其实群集的概念并没有想象中那么复杂,本文老王会试着用比较简单的语言,来为大家分享我所学习了解的群集知识,尽量让只有简单服务器 网络基础的朋友也可以听懂,如果有说的不对的地方欢迎指正 什么是群集呢,简单来说,群集就是把一堆计算机组合起来做一件事情,把一堆计算机组合起来一起干活,它们就可以叫做群集,通常群集给人的感觉就好像是一个"整体计

分布式基础知识汇集

一.CAP 数据一致性(C),等同于所有节点访问同一份最新的数据副本: 对数据更新具备高可用性(A): 能容忍网络分区(P). 概念: 必须注意的是,P:Partition Tolerance 指的是 The system works well despite physical network partitions. 网络上很多说P指的是数据分区,都他妈是扯淡,实际应该是如果物理网络进行了隔离,能否正常工作. 理解CAP理论的最简单方式是想象两个节点分处分区两侧.允许至少一个节点更新状态会导致数

Python3分布式爬虫(scrap+redis)基础知识和实战详解

背景 随着业务需求的变化,大规模爬虫遇到各种问题.python爬虫具有先天优势,社区资源比较齐全,各种框架也完美支持.爬虫性能也得到极大提升.本次分享从基础知识入手,涉及python 的两大爬虫框架pyspider.scrapy,并基于scrapy.scrapy-redis 做了分布式爬虫的介绍(直接粘贴的ppt截图)会涉及 redis.mongodb等相关知识. 一.前沿 1.1 爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.

hadoop学习笔记——基础知识及安装

1.核心 HDFS  分布式文件系统    主从结构,一个namenoe和多个datanode, 分别对应独立的物理机器 1) NameNode是主服务器,管理文件系统的命名空间和客户端对文件的访问操作.NameNode执行文件系统的命名空间操作,比如打开关闭重命名文件或者目录等,它也负责数据块到具体DataNode的映射 2)集群中的DataNode管理存储的数据.负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建删除和复制工作. 3)NameNode是所有

JDBC 基础知识总结

1.  何谓JDBC  --- Java Database Connectivity. 由Sun 公司提供的访问数据库的一组java类和接口,用来对数据库进行链接.发送SQL语句.处理返回结果,为开发人员提供了统一的访问数据库入口API,使得开发人员可以不用绑定到特定数据库访问API. 2. 应用程序,JDBC API,JDBC 驱动程序,数据库之间的层次关系如下图: 3. 4.  JDBC 有四种驱动: 4.1  JDBC-ODBC 桥链接:   把对JDBC接口的访问翻译成对应的ODBC的访

DNS&BIND——基础知识

DNS & BIND(1) what-DNS& BIND DNS: Domain Name Service 已于C/S架构的协议 53/udp:  域名解析 53/tcp  :  区域传输 BIND: Bekerley Internet Name Domain BIND对DNS协议的开源实现,包含对域名的查询和响应所需的所有软件 BIND是互联网上最广泛使用的一种DNS服务器 传输方式 1)区域传输 的时候使用TCP协议 : 主DNS服务器: 从自己本机的数据文件中读取该区的DNS数据信息

这技术太纯了|5分钟学会OpenStack 基础知识(转)

原文地址:http://mt.sohu.com/20160511/n448800357.shtml ——<从入门到精通云服务器>第六讲 前五期的<从入门到精通云服务器>受到了广泛好评,收到留言,有很多读者对云计算相关的技术非常感兴趣.应观众要求,我们这期要安利一条纯技术内容.准备好瓜子.花生,随小编一起进入OpenStack 基础知识大讲堂吧. 了解OpenStack OpenStack 是最火的开源软件之一,活跃度呈指数级别上升:它是一组开源项目,诞生之初是由两个项目组成,目前十

考试备战系列--软考--02基础知识复习

这部分主要是计算机基础知识的概念介绍,相关系列文章如下所示. 考试备战系列--软考--01基础架构概念 考试备战系列--软考--02基础知识复习 考试备战系列--软考--03综合知识复习 考试备战系列--软考--04考题收集 考试备战系列--软考--05案例收集 考试备战系列--软考--06论文准备 操作系统时计算机系统的核心系统软件,其他软件均建立在其上,其分类包括:单用户操作系统和批处理操作系统.分时操作系统和实时操作系统.网络操作系统和分布式操作系统.嵌入式操作系统.其4大特征为并发性.共

zabbix 的部署及基础知识的讲解

一.Zabbix的介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员 快速定位/解决存在的各种问题,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上. - 安装与配置简单,学习成本低 - 支持多语言(包括中文) - 免费开源 - 自动发现服务器与网络设备 - 分布式监视以及WEB