前言

正值金九银十面试旺季,现在的面试官一天少说得看几百份简历,你投出去的简历如果没有特别吸引人的点和新颖突出,毫无疑问你的简历不是在垃圾桶就是在回收站里边待着了,那么什么样的简历才能吸引到面试官的眼球呢?今天我就把阿里面试官筛选简历的规则告诉你,让你从简历开始就先人一步!
为什么说简历很重要?
一份好的简历可以在整个申请面试以及面试过程中起到非常好的作用。 在不夸海口的情况下,写出一份好的简历也是一项很棒的能力。

主备同步的实现原理

我们先来了解一下主备同步的原理,下面以一个update语句来介绍主库与备库间是如何进行同步的。

上图是一个update语句在节点A执行,然后同步到节点B的完整流程图,具体步骤有:

  1. 主库接受到客户端发送的一条update语句,执行内部事务逻辑,同时写binlog。
  2. 备库通过 change master 命令,设置主库的IP、端口、用户名和密码,以及要从哪个位置开始请求 binlog。这个位置包含文件名和偏移量。
  3. 在备库上执行start slave命令,启动两个线程 io_thread 和 sql_thread,其中 io_thread 负责与主机进行连接。
  4. 主库校验完用户名和密码,按照接收到的位置去读取binlog,发给备库。
  5. 备库接收到binlog后,写到本地文件(relay log,中转文件)。
  6. 备库读取中转文件,解析出命令,然后执行。

主备同步的工作原理其实就是一个完全备份加上二进制日志备份的还原。不同的是这个二进制日志的还原操作基本上是实时的。

备库通过两个线程来实现同步:

  • 一个是 I/O 线程,负责读取主库的二进制日志,并将其保存为中继日志。
  • 一个是 SQL 线程,负责执行中继日志。

从上面的流程可以看出,主备同步的关键是binlog。

常见的两种主备切换流程

M-S结构

M-S结构,两个节点,一个当主库、一个当备库,不允许两个节点互换角色。

在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。

当需要切换的时候,就切成状态2。这时候客户端读写访问的都是节点B,而节点A是B的备库。

双M结构

双M结构,两个节点,一个当主库,一个当备库,允许两个节点互换角色。

对比前面的M-S结构图,可以发现,双M结构和M-S结构,其实区别只是多了一条线,即节点A和B之间总是互为主备关系。这样在切换的时候就不用再修改主备关系。

双M结构的循环复制问题

在实际生产使用中,多数情况是使用双M结构的。但是,双M结构还有一个问题需要解决。

业务逻辑在节点A执行更新,会生成binlog并同步到节点B。节点B同步完成后,也会生成binlog。(log_slave_updates设置为on,表示备库也会生成binlog)。

当节点A同时也是节点B的备库时,节点B的binlog也会发送给节点A,造成循环复制。

解决办法:

  • 设置节点的server-id,必须不同,不然不允许设置为主备结构
  • 备库在接到binlog后重放时,会记录原记录相同的server-id,即谁产生即为谁的。
  • 每个节点在接受binlog时,会判断server-id,如果是自己的就丢掉。

解决后的流程:

  1. 业务逻辑在节点A执行更新,会生成带有节点A的server-id的binlog。
  2. 节点B接受到节点A发过来的binlog,并执行完成后,会生成带有节点A的server-id的binlog。
  3. 节点A接受到binlog后,发现是自己的,就丢掉。死循环就在这里断掉了。

最后

每年转战互联网行业的人很多,说白了也是冲着高薪去的,不管你是即将步入这个行业还是想转行,学习是必不可少的。作为一个Java开发,学习成了日常生活的一部分,不学习你就会被这个行业淘汰,这也是这个行业残酷的现实。

如果你对Java感兴趣,想要转行改变自己,那就要趁着机遇行动起来。或许,这份限量版的Java零基础宝典能够对你有所帮助。

领取这份Java零基础宝典只需要点击这里即可免费下载

cs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**

[外链图片转存中…(img-lFgzzYx0-1620711083064)]

如何化身BAT面试收割机?详细的Java学习指南相关推荐

  1. 大牛手把手教你!如何化身BAT面试收割机?附答案

    一.背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程,也是对我目前负责项目的一次学习总结.既然选择从项目实用性考虑,下面的讲解内容可能并不一定完整,更多的是符合项目目前使用到的一些特 ...

  2. 想学IT的必看!如何化身BAT面试收割机?终局之战

    前言 下面的题目都是大家在面试字节跳动或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享. 参考解析:郭霖.鸿洋 内容特点:条理清晰,含图像化表示更加易懂. 内容概要:包括 Hand ...

  3. 如何化身BAT面试收割机?不愧是大佬

    目录 部分内容展示 深入浅出索引(上) 索引的常见模型 InnoDB 的索引模型 索引维护 小结 深入浅出索引(下) 覆盖索引 最左前缀原则 索引下推 为什么这些SQL语句逻辑相同,性能却差异巨大? ...

  4. 2021金九银十面试季!如何化身BAT面试收割机

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  5. Java开发必须会的技能!如何化身BAT面试收割机

    第1大技能:程序设计和开发 数据结构和算法:常用数据结构,排序,检索等 面向对象编程.设计模式,掌握建模语言和建模工具:UML.MVC编程思想 高质量编码能力:重用性,低耦合,可扩展性,高性能,可维护 ...

  6. 如何化身BAT面试收割机?都是精髓!

    本文框架如下 第一部分,主要是在阅读代码过程中的日志和笔记: 第二部分,主要介绍了 Redis 的主要框架,以及 Redis 是如何提供服务的,从一个最简单的命令开始讲起: 第三部分,主要介绍 Red ...

  7. 如何化身BAT面试收割机?Android篇

    前言 今天来跟大家分享TIM最强保活思路的几种实现方法.这篇文章我将通过ioctl跟binder驱动交互,实现以最快的方式唤醒新的保活服务,最大程度防止保活失败.同时,我也将跟您分享,我是怎么做到在不 ...

  8. 如何化身BAT面试收割机?Android校招面试指南

    没有稳定的工作,只有稳定的能力. 又到了万物复苏的季节,在程序猿这个行当里,作为 Android 开发出生的,在经历了八年的脱发生涯后,有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起,在 R ...

  9. 如何化身BAT面试收割机?看看这篇文章吧!

    前言 前不久,几个朋友聚会,谈到了现在的后辈,我就说起了那个大三就已经拿到网易offer的小学弟. 这个学弟是00后,专升本进入我们学校的.进来后就非常努力,每次上课都是第一个到教室的,每次都是坐第一 ...

最新文章

  1. 3.7Python数据处理篇之Numpy系列(七)---Numpy的统计函数
  2. SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法...
  3. 学习旧岛小程序 (1) flex 布局
  4. 为什么wait、notify、notifyAll方法定义在Object中而不是Thread类中
  5. 扩展中国剩余定理(模板)
  6. 【CASS精品教程】CASS 9.2 for AutoCAD2014启动提示文件加载,怎么处理?
  7. Hive设置参数-指定引擎-队列
  8. MS SQL SERVER 读取数据库中每个表的描述/注释以及表中字段/列的字段名,字段类型,字段描述/注释/说明等信息...
  9. 【iOS】Ambiguous reference to member 'tableView(_:numberOfRowsInSection:)'
  10. Python流程控制的 for、 while、循环和嵌套词汇continue、break、range
  11. python中的fft带通滤波器
  12. 学习【阿里巴巴Java开发手册-嵩山版】
  13. 华为云学院-人人学loT学习笔记- 第四章 物联网关 汇聚回传
  14. [渝粤教育] 中国地质大学 工业卫生技术 复习题
  15. OpenJ_Bailian - 1088:滑雪
  16. 【ZBH选讲·拍照】
  17. 认识和使用热插拔的正确姿势
  18. 全网首发!老大众奥迪碟盒通信协议破解,可以模拟数码碟盒,外接AUX蓝牙U盘等音频设备
  19. 绝妙!不用外部电路检测芯片工作电压!
  20. 用python来打印数字金字塔

热门文章

  1. 利用双栈法实现简易计算器
  2. javav转义字符“\”和文档注释//
  3. Python3 如何实现汉字转换拼音?
  4. 已解决:未找到文件:\product\11.2.0\dbhome_2\owb\external\oc4j_applications\applications\WFMLRSVCApp.ear
  5. 帅气中国小哥出“大招”,程序员跳槽面试刷题必备vscode-leetcode
  6. ## 配置项props
  7. Java提取文本中的超链接添加a标签
  8. 被逼无奈(二)——5G组网+无线资源管理
  9. python找不到解释器_pythram找不到python的解释器
  10. Netty实现服务端客户端长连接通讯及心跳检测