mysql数据库备份方式,跳槽大厂必看!

NO1:说说zookeeper是什么?

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 。

Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据,简单示例图如下:

Zookeeper面试常见的11个连环炮

NO2:了解Zookeeper的系统架构吗?

ZooKeeper 的架构图中我们需要了解和掌握的主要有:

(1)ZooKeeper分为服务器端(Server) 和客户端(Client),客户端可以连接到整个 ZooKeeper服务的任意服务器上(除非 leaderServes 参数被显式设置, leader 不允许接受客户端连接)。

(2)客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送信息。如果这个 TCP 连接中断,客户端将自动尝试连接到另外的 ZooKeeper服务器。客户端第一次连接到 ZooKeeper服务时,可以接受这个连接的 ZooKeeper服务器会为这个客户端建立一个会话。当这个客户端连接到另外的服务器时,这个会话会被新的服务器重新建立。

(3)上图中每一个Server代表一个安装Zookeeper服务的机器,即是整个提供Zookeeper服务的集群(或者是由伪集群组成);

(4)组成ZooKeeper服务的服务器必须彼此了解。它们维护一个内存中的状态图像,以及持久存储中的事务日志和快照, 只要大多数服务器可用,ZooKeeper服务就可用;

(5)ZooKeeper 启动时,将从实例中选举一个 leader,Leader 负责处理数据更新等操作,一个更新操作成功的标志是当且仅当大多数Server在内存中成功修改数据。每个Server 在内存中存储了一份数据。

(6)Zookeeper是可以集群复制的,集群间通过Zab协议(Zookeeper Atomic Broadcast)来保持数据的一致性;

(7)Zab协议包含两个阶段:leader election阶段和Atomic Brodcast阶段。

  • a) 集群中将选举出一个leader,其他的机器则称为follower,所有的写操作都被传送给leader,并通过brodcast将所有的更新告诉给follower。
  • b) 当leader崩溃或者leader失去大多数的follower时,需要重新选举出一个新的leader,让所有的服务器都恢复到一个正确的状态。
  • c) 当leader被选举出来,且大多数服务器完成了 和leader的状态同步后,leadder election 的过程就结束了,就将会进入到Atomic brodcast的过程。
  • d) Atomic Brodcast同步leader和follower之间的信息,保证leader和follower具有形同的系统状态。

NO3:能说说Zookeeper的工作原理?

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。

Zab协议有两种模式,它们 分别是恢复模式(选主)和广播模式(同步)。

Zab协议 的全称是 Zookeeper Atomic Broadcast** (Zookeeper原子广播)。Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。Zab协议要求每个 Leader 都要经历三个阶段:发现,同步,广播。

当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。

为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加 上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一 个新的epoch,标识当前属于那个leader的统治时期。第32位用于递增计数。

epoch:可以理解为皇帝的年号,当新的皇帝leader产生后,将有一个新的epoch年号。

每个Server在工作过程中有三种状态:

  • LOOKING:当前Server不知道leader是谁,正在搜寻。
  • LEADING:当前Server即为选举出来的leader。
  • FOLLOWING:leader已经选举出来,当前Server与之同步。

NO4:Zookeeper为什么要这么设计?

ZooKeeper设计的目的是提供高性能、高可用、顺序一致性的分布式协调服务、保证数据最终一致性。

高性能(简单的数据模型)

  1. 采用树形结构组织数据节点;
  2. 全量数据节点,都存储在内存中;
  3. Follower 和 Observer 直接处理非事务请求;

高可用(构建集群)

  1. 半数以上机器存活,服务就能正常运行
  2. 自动进行 Leader 选举

顺序一致性(事务操作的顺序)

  1. 每个事务请求,都会转发给 Leader 处理
  2. 每个事务,会分配全局唯一的递增id(zxid,64位:epoch + 自增 id)

最终一致性

  1. 通过提议投票方式,保证事务提交的可靠性
  2. 提议投票方式,只能保证 Client 收到事务提交成功后,半数以上节点能够看到最新数据

NO5:你知道Zookeeper中有哪些角色?

系统模型:

领导者(leader)

Leader服务器为客户端提供读服务和写服务。负责进行投票的发起和决议,更新系统状态。

学习者(learner)

  • 跟随者(follower) Follower服务器为客户端提供读服务,参与Leader选举过程,参与写操作“过半写成功”策略。
  • 观察者(observer) Observer服务器为客户端提供读服务,不参与Leader选举过程,不参与写操作“过半写成功”策略。用于在不影响写性能的前提下提升集群的读性能。

客户端(client):服务请求发起方。

NO6:你熟悉Zookeeper节点ZNode和相关属性吗?

节点有哪些类型?

Znode两种类型:

持久的(persistent):客户端和服务器端断开连接后,创建的节点不删除(默认)。

短暂的(ephemeral):客户端和服务器端断开连接后,创建的节点自己删除。

Znode有四种形式:

  • 持久化目录节点(PERSISTENT):客户端与Zookeeper断开连接后,该节点依旧存在持久化顺序编号目录节点(PERSISTENT_SEQUENTIAL)
  • 客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号:临时目录节点(EPHEMERAL)
  • 客户端与Zookeeper断开连接后,该节点被删除:临时顺序编号目录节点(EPHEMERAL_SEQUENTIAL)
  • 客户端与Zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

「注意」:创建ZNode时设置顺序标识,ZNode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护。

总结

面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

一份还热乎的蚂蚁金服面经(已拿Offer)面试流程4轮技术面+1轮HR

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

[外链图片转存中…(img-W1Wmc7Ea-1624341234085)]

如何获取面试参考资料?戳这里免费领取

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

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

相关文章

mysql数据库安装教程32位,看这一篇就够了!

字节跳动 ⾯试前⼀⾯⼆⾯⼩结 ⾯试前 头条的⾯试是三家⾥最专业的,每次⾯试前有专⻔的HR和你约时间,确定OK后再进⾏⾯试。每次都是通过视频⾯试,因为都是之前都是电话⾯或现场⾯,所以视频⾯试还是有点不⾃然。也有⼈觉得视频⾯试…

java cron工具类_Java工具类之:包装类

我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工具类,你会发现它能很大…

mysql数据库安装,真香!

Spring Security观后感——手绘思维脑(供参考) 手绘的思维导图,是我自己根据自身的情况读完这套阿里出品的Spring Security王者晋级文档之后所绘的,相当于是一个知识的总结与梳理,我将其分为“核心组件”与“工作原理/认证流程”。 Spring Se…

mysql数据库实用教程答案

前言 数据库相关的面试题早已成为了一线互联网大厂面试的家常菜,如果你对数据库不太熟悉,我劝你不要轻易面试大厂。那么,为什么数据库成了大厂面试的家常菜呢?主要原因当然还是海量数据。 无论对于刚入行的小白还是有几年Java开…

在idea中新建的text文件_开发属于自己的第一款 IDEA 插件!

往期热门文章:1、《往期精选优秀博文都在这里了!》2、又一个程序员跑路删库跑路被抓了,导致服务器瘫痪 36 个小时!3、恕我直言,有了这款 IDEA 插件,你可能只需要写 30% 的代码。。。4、Java8 的 Stream API 的确牛X&am…

mysql数据库开发的36条军规

前言 一般的小项目,比如几百人左右访问的项目,访问量几万的项目,如果想用缓存,单机实例完全够用。小黄图就是用的阿里云256MB配置的Redis缓存,日几千的访问量是妥妥够用的了。Redis号称可以支撑10wqps,当然…

mysql数据库引擎怎么看,值得收藏!

什么是Service Mesh 作为Service Mesh技术探索和实践的先行者,全球第一个真正的Service Mesh项目Linkerd负责人、Buoyant公司创始人兼CEO William Morgan第一次完整地阐述了Service Mesh。按照William Morgan的定义,Service Mesh是一个致力于解决服务间…

mysql数据库文件位置

01 前言 辛苦奋斗两个月,秋招终于圆满收官,拿到了头条、字节、菜鸟、腾讯、网易的offer,这要多亏了意外得到的这份资料文档,这么多面试全都靠它了,哈哈~~有好东西还是要分享出来给大家,一起学习呀 Java核心…

mysql数据库连接失败,挑战大厂重燃激情!

一、阿里 (会员中台) 1. Java 重写hashcode()是否需要重写equals(),不重写会有什么后果 2. 并发 自旋锁和阻塞锁的区别公平锁和非公平锁的区别jdk中哪种数据结构或工具可以实现当多个线程到达某个状态时执行一段代码栅栏和闭锁的区别如何…

mysql 链式查询_MySQL的链接查询

内连接 inner join ....on...../join ....on... :将两个表中同时符合on条件的记录查询出来 inner可以省略select *from person inner join card on person.cardidcard.cardid;外连接 分为左连接、右连接,完全连接左连接:left join ....on…

大厂必备!不断提升自己创造溢价的能力

前言: 金九银十过了金三银四还会远嘛,本文后面分享面试题给正准备跳槽,准备找工作的你,这次面试字节跳动也是做了很多的准备,还好顺利拿到了offer,特分享一下这次的4面技术面真题,可能有些记不全了&#x…

MySQL安装板多少钱_MySQL安装板怎么安装

展开全部1首先,你需要个安装包,自个去下0如何在官网下载MySQL 数据库2第一步中,选择32313133353236313431303231363533e58685e5aeb931333365666165I accept license term,然后Next3默认选第一项Developer Default ,然后Next4这一步中&#xf…

大厂必备!阿里、字节跳动、京东、腾讯、小米等名企高频面试

一、前言 k8s全称kubernetes,是目前大热的一个可移植容器的编排管理工具,像AWS、Azure、Google、阿里云、腾讯云等主流的公有云提供的都是基于k8s的容器服务,很多其他厂商也在努力跟进中,所以说“kubernetes”是目前容器行业中最…

大厂架构师经验分享!成功跳槽字节跳动

前言 毫不夸张地说,JVM是现代软件工程最成功的案例之一。因为它自带GC,又有无数可以微调的参数,且运行极其稳定可靠,所以,许多厂商的核心业务系统,才敢放心地用Java编写,运行在JVM之上。 近几…

java停车场管理系统程序设计代码_社区养老服务管理系统,java程序设计

登录界面菜单功能界面1菜单功能界面2菜单功能界面3社区养老服务管理系统设计与实现springspringMVCmybatis框架对象(javaBean,pojo)设计:服务工单javaBean创建语句如下:package project.model;import org.springframework.format.annotation.DateTimeFor…

大厂面试必问!50w字+的Java技术类校招面试题汇总

前言 刚刚过去的双十一,让“高性能”“高可用”“亿级”这3个词变成了技术热点词汇,也让很多人再次萌发成为「架构师」的想法。先问大家一个问题:你觉得把代码熟练、完成需求加上点勤奋,就能成为架构师么?如果你这么认…

c++客户端发送加锁_MySQL语句加锁分析详解

前言建立一个存储三国英雄的hero表:CREATE TABLE hero ( number INT, name VARCHAR(100), country varchar(100), PRIMARY KEY (number), KEY idx_name (name)) EngineInnoDB CHARSETutf8;然后向这个表里插入几条记录:INSERT INTO hero V…

大厂面试必问!如何写出高效率的SQL

前言 Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。有人亲切的称之为:Spring 全家桶。 很多研发人员把spring看作心目中最好的java项目,没有之一。所以这是…

accsess转成mysql语句_轻松教你SQL转ACCESS

SQL数据库转access数据库步骤: 1. 建立access数据库:在access中建立access数据库和表,access字段类型与sql中字段类型的对应关系。 2. 在Access中建表是应注意它的保留关键字:比如Password 如果表中的某个字段使用了关键字&#x…

大厂首发:2021年Java工作或更难找

前言 提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能系统对MySQL相关知识有一个系统的学习,导致不能形成知识体系。为此我撰…