HA高可用

article/2025/10/12 17:07:17

什么事应用程序的高可用

高可用性(high availability)通常用来描述一个系统经过专门的设计,从而减少停工的时间,而保持其服务的高度可用性


高可用程序的类型

主从方式(冷备)
两个相同的应用程序,一个对外提供服务,成为主程序,另一个平时不运行为备程序,就是一个主程序的备份,一旦主程序出现问题,备份提供恢复操作
双主互备(热备)
两个相同的应用程序,同时对外提供服务(两个程序相互为对方备份的存在,双主热备),当启动一个出现问题时,另一个可以对外提供服务,不会造成服务器宕机

总结:

hadoop1.x版本:
SecondaryNameNode他不是HA,他只是用来阶段性合并edits和fsimage以及缩短集群启动是啊金所使用,默认是1小时进行一次整合,当NN失效的时候,SNN并无法立即提供服务,SNN是无法保证数据完整性
hadoop2.x
提供了QJM系统来解决当前NameNode的单点故障问题
1.QJM的基本原理是基于2N+1每次需要对数据进行操作需要完成一个过半机制会返回成功,数据不会丢失
2.在HA框架中SNN这个冷备已经不存在了,为了保持standbyNN实时的和ActiveNN的数据保持一致,他们会开启一个进程
实时监控JN(JournalNode)
3,任何更改操作在ActiveNN上执行,JN进程同时记录并会修改log
这是StandbyNN检测JN终有数据同步log发生变化,就会同步当前数据
4,当发生故障的时候,ActiveNN挂了,StandbyNN会提升成为新的ActiveNN
读取会签JN里面修改的日志,这样就提供了可靠性
5.OJM技术
5.1不需要配置额外的高共享存储,减少复杂度和成本
5,2系统健壮性得到了增强
5.3JN不会疑问启动一台延迟而影响整体,亦不会因为JN增多而影响性能

Zookeeper

Zookeeper是一个分布式开源的应用协调程序,是谷歌的一个开源项目,是HBase好Hadoop的重要组件,呀是一个为分布式应用所提供一致性服务的软件,主要提供:配置的维护,域名服务,分布式同步…

集群角色

在Zookeeper中,没有主从关系,二是引入了新的概念: Leader(头),Flower(随从),Observer(观察者)三种角色
Zookeeper集群中所有的机器同一个Leader进行管理, Leader通过"选举机制"产生, Leader服务器对客户端进行服务,除了Leader外,其他机器包括Flower和Observer, Flower和Observer都能提供读取服务,区别在Observer机制不参与Leader的选举,Zookeeper中也一样有"过半机制"

在这里插入图片描述
在这里插入图片描述
ps:服务器的个数必须是技术(3,5,7,9…)

会话(session)

Session是指客户端会话,在Zookeeper中,一个客户端连接服务器之间会建立一个TCP长连接,Zookeeper对外的服务
器端口号2181,客户端启动是后,首先户先和服务器创建连接,从第一次连接开始的时候客户端会话的声明周期就开始
了,通过这个连接,客户端能够心跳检测和服务器保持有效的会话,也能够向Zookeeper服务器发送请求和接收相应,同
时还用过还该连接收来之服务器的watch事件通知,Session会使用SessionTimeOut的值来设置一个客户端会话超时
的时间,当由于服务器压力太大,或网络故障或是客户端注定断开连接等因素所导致的客户端断开,只要在
sessionTimeOut规定的时间内能够重新连接到集群上任意一台服务器,那么之前创建的会话仍然有效

Zookeeper的数据结构特点

在分布式中我们通常说”节点”是指组成集群中的每一个台机器,然而在Zookeeper中”节点”分为两类

  1. 同样指的是集群中的机器–>机器节点
  2. 是指数据模型中的数据单元 —.>Znode在这里插入图片描述
    每个 子目录项如 app1 都被称作为 znode,这个 znode 是被它所在的路径唯一标识,如 p1这个 znode 的标识为
    /app1/p1
    znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL(ephemeral/ə’fɛmərəl/)类型的目录
    节点不能有子节点目录
    znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
    znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,
    Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为
    session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
    znode 的目录名可以自动编号,如 app1 已经存在,再创建的话,将会自动命名为 app2
    znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的
    客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的,后面在典型的应用场
    景中会有实例介绍

和传统文件系统区别

共同点:树形文件系统,都可以存储数据
不同点:传统的文件系统专门用于存储大量数据,zk的存储少量数据
传统的文件系统目录和文件分明,zk即使文件也是文件目录
每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点)
客户端应用可以在节点上设置监视器

节点类型

Znode有两种类型:
短暂(ephemeral)(断开连接自己删除)
持久(persistent)(断开连接不删除)
Znode有四种形式的目录节点(默认是persistent )
PERSISTENT 持久类型
PERSISTENT_SEQUENTIAL(持久序列类型/test0000000019 )sequential
EPHEMERAL 短暂类型
EPHEMERAL_SEQUENTIAL 短暂序列类型
创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护
在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

Zookeeper设计目的

1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。第一个
clinet上传了数据 其他client在访问得到的是同一个数据 2.可靠性:具有简单、健壮、良好的性能,如果消息被到
一台服务器接受,那么它将被所有的服务器接受。 3.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得
服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到
刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。 4.等待无关(wait-free):慢的或者失效
的client不得干预快速的client的请求,使得每个client都能有效的等待。 5.原子性:更新只能成功或者失败,没有
中间状态。
6.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上
消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

HA:Zookeeper部分

总结:
1.Hadoop中提供了ZKFailoverController交涉,部署在每个namenode所在的基点上,做一个进程进行监控简称ZKFC
ZKFailoverController主要包含三个组件
1.HealthMonitor:监控当前namenode时候出健康(活着)或不健康(死亡)状态,通过当前RPC来调用NN相应的方法来
完成
2.ActiveStandbyElector:管理和监控自己的zk中的状态
3.ZKFailoverController监听HealthMonitor和ActiveStandbyElector的时间来管理NN的状态
ZKFailoverController的主要职责:
1.健康测试:周期性的向它监控的NN发送健康探测命令,从而来确定某个NN是否处于健康的状态,若机器宕机,心跳失
败,那么zkfc就会标记当前出一个不健康的状态集群/节点配置 NN NN DN ZK ZKFC JN
hadoop01 有 有 有
hadoop02 有 有 有 有 有
hadoop03 有 有 有
hadoop04 有 有
2.会话管理:如果NN是健康的,zkfc会和zk保持一个打开的会话状态,如果NN同时还是Active状态,那么zkfc还会在zk中
创建一个类型为短暂类型的znode,当这个NN挂掉,这个znode就会被删除,然后备用的NN将得到这个锁,升级为主
NN,同时被标记为Acitve
3.当宕机的NN重新启动的时候,他会再次注册zk,发现已经有znode锁了,它会自动变为standby状态
循环往复,就可以保证高可用的可靠性
4.zk中的leader是用过选举机制得到的


http://chatgpt.dhexx.cn/article/eHLxw6Rf.shtml

相关文章

harbor高可用部署

harbor高可用简介 harbor目前有两种主流的高可用方案: 双主复制,harbor自带的镜像复制功能多harbor实例共享后端存储 双主复制架构在遇到大镜像时有同步延迟,并且一个实例故障后需要手动重新开启复制策略才能再次同步,下面以阿里…

HADOOP 高可用搭建

首先先说一下大概的步骤,就用四台为例,简单适合新手操作。 流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zook…

高可用详细概念及三种决策方式分析

文章目录 1.基本概念1.计算高可用2.存储高可用高可用状态决策1.独裁式2.协商式3.民主式 1.基本概念 这个定义的关键在于“无中断”,但恰好难点也在“无中断”上面,因为无论是单个硬件还是单 个软件,都不可能做到无中断,硬件会出故…

Nacos实现高可用

由于Nacos暂不支持Arm架构芯片的Mac集群搭建,本小节用Linxu云主机(Nacos比较吃内存,2个Nacos服务器集群,至少2G内存)环境演示。 通过前面的学习,我们已经了解了如何使用Nacos以及Nacos的功能等,…

浅谈高可用测试

前言 现今的互联网产品越来越注重可靠性,尤其是在生产环境中使用的系统,对高可用性都有一定的要求。而作为产品的提供方,在交付产品之前,也会对高可用进行验收测试。近期跟进过两个产品曾有高可用测试的需求,在此简单…

nginx高可用

Nginx高可用 为什么要使用nginx的高可用:因为nginx作为反向代理服务器时,有可能出现宕机的情况,而由于其反向代理的特性,就会导致其他服务器(tomcat等)无法被访问,这样项目就停止工作了。但是使…

RabbitMQ高可用

RabbitMQ高可用 各种消息队列对比使用推荐 RabbitMQ 高可用普通集群模式镜像集群模式保证消息队列的幂等性(消息不被重复消费)消息队列的可靠性传输生产者丢失数据RabbitMQ丢失数据消费者丢失数据 保证消息的顺序性消息积压问题 各种消息队列对比 特性ActiveMQRabbitMQRocketM…

系统高可用

系统高可用 1. 什么是高可用?可用性的判断标准是啥?1.1 可用性的判断标准是啥? 2. 哪些情况会导致系统不可用?3. 有哪些提高系统可用性的方法?3.1 注重代码质量,定时Review代码3.2 使用集群,减少…

HBase高可用

一、HBase高可用简介 HBase集群如果只有一个master,一旦master出现故障,将导致整个集群无法使用,所以在实际的生产环境中,需要搭建HBase的高可用,也就是让HMaster高可用,也就是需要再选择一个或多个节点也…

你管这破玩意儿叫高可用

大家好,我是坤哥 今天我们来聊一下互联网三高(高并发、高性能、高可用)中的高可用,看完本文相信能解开你关于高可用设计的大部分困惑 前言 高可用(High availability,即 HA)的主要目的是为了保障…

什么是高可用?高可用介绍:

前言: 高可用(High availability,即 HA)的主要目的是为了保障「业务的连续性」,即在用户眼里,业务永远是正常(或者说基本正常)对外提供服务的。高可用主要是针对架构而言&#xff0c…

HTML Responsive Web Page

注&#xff1a;参考网站 https://www.w3schools.com HTML Responsive Web Page index.html <!DOCTYPE html> <html><head><link rel"stylesheet" href"style.css"><title>Responsive web page</title><meta lan…

响应式布局【Responsive】 与 自适应布局 【adaptive】、单页面【SPA】 和多页面【MPA】

1、响应式布局 是一个网址能兼容多个terminate【终端】&#xff0c;而不是为每个终端做一个特定的版本 优点&#xff1a; 用户体验好节约开发时间、节省设计seo友好可以适用所有设备屏幕 缺点 设计与风格有局限性《自由度太低&#xff0c;局部性较大》灵活性有所欠缺 基于不…

Bootstrap:Responsive Design with Bootstrap(一)

1.Use Responsive Design with Bootstrap Fluid Containers 现在让我们回到我们的Cat Photo应用。这次&#xff0c;我们将用流行的响应式框架Bootstrap来美化它。 Bootstrap将会根据你的屏幕的大小来调整HTML元素的大小 —— 强调 响应式设计的概念。 通过响应式设计&#x…

responsive tables

以上内容原本是整理为ppt格式的&#xff0c;贴过来格式有点乱&#xff0c;请见谅。 其他responsive tables参考&#xff1a; http://gergeo.se/RWD-Table-Patterns/ 3种类型的代码参考 unseen column&#xff1a; http://runjs.cn/code/zrhodpx5 flip scroll&#xff1a; ht…

CSS之responsive image gallery

responsive image gallery 这次实例主要是练习如何讲不同的图片设置为一个栏目&#xff0c;并且能够根据屏幕的大小进行自适应的变换。需要注意的是&#xff0c;本次实例中运用到的重要的关键的内容是&#xff1a;float-left&#xff1b;box-sizing; media screen and (max-wi…

html5 响应式表格插件,响应式表格jQuery插件 – Responsive tables

响应式表格jQuery插件 – Responsive tables 4月 24, 2014 评论 (1) Sponsor 这个Responsive tables jQuery插件依赖于Bootstrap 3使用&#xff0c;比BS自带的自适应多了一些好用的功能&#xff0c;比如筛选显示&#xff0c;Focus选定、Table头滑动固定等&#xff0c;下来看看介…

SAP Fiori 设计准则里的 Responsive 表格概述

Responsive Table 是 SAP Fiori 中的默认表控件。 它包含一组 Line item 并且完全响应(fully responsive)。 根据具体情况&#xff0c;用户还可以从行项目导航到更多详细信息页面。 一个行项目包含多个数据点(data point)&#xff0c;这些数据点被分类到列中。 数据点是指一个…

Responsive Web测试

什么是Responsive Web设计 Ethan Marcotte曾于2010年5月25日在A List Apart发表了文章《Responsive Web Design》&#xff0c;首次提出了RWD(Responsive Web Design)的概念。其理念是&#xff0c;Web页面的设计能够自适应多种设备、平台和浏览器&#xff0c;同时减少缩放、平移…

CSS之Responsive设计的关键三步

下面我们就通过这篇教程&#xff0c;帮助大家从三个步骤来了解和学习“Responsive”设计 第一步&#xff1a;Meta标签 大家都知道&#xff0c;现在智能手机上浏览web页面会让页面适应屏幕的大小&#xff0c;显示在屏幕上。不过我们可以通过“meta”标签对他进行重置&#xff…