前言

MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。是一个基于Java的持久层框架。

在国内市场来说,Mybatis的使用率比Hibernate更高,也更加流行。个人认为其流行的主要原因在于:国内绝大部分项目都是面向表结构编程的,Mybatis使用起来更加方便。

Alibaba绝对是国内互联网行业的天花板,很多优秀的开源项目都是阿里大佬分享出来的,因此今天就跟大家分享一份连Alibaba内部都在消化的Mybatis学习笔记,内容不算多,但把重点讲的明明白白,下面一起看一下吧!

主备同步的实现原理

我们先来了解一下主备同步的原理,下面以一个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后,发现是自己的,就丢掉。死循环就在这里断掉了。

给大家分享下我的复习的面试资料

这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)

资料获取方式:戳这里前往我的腾讯文档免费下载

  • 第一部分:Java基础-中级-高级

  • 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

  • 第三部分:性能调优(JVM+MySQL+Tomcat)

  • 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

  • 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

  • 第六部分:其他:并发编程+设计模式+数据结构与算法+网络

进阶学习笔记pdf

都已整理好,需免费下载点击这里即可

  • Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)

  • Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)

  • Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))

  • Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)**

[外链图片转存中…(img-7yZns2eT-1624367162325)]

[外链图片转存中…(img-0wPgLwwI-1624367162325)]

来一杯java表情包相关推荐

  1. 来杯java表情包,完整版开放下载

    HUAWEI-Java一面-1H 闲聊偏多,问的技术性问题比较基础 简单说说面向对象的特征以及六大原则 谈谈final.finally.finalize的区别 Java中==.equals与hashC ...

  2. Java面试题库,java表情包图片

    自我管理 谨言慎行 畅销书<影响力>提到,因为影响力的巨大差异,娱乐明星比科学家收入高几万倍.技术经理管理了N个人,影响力就是N倍,如果言行不端,造成的影响是基层人员的N倍.博主有过一个上 ...

  3. JAVA设计表情包制作程序_MSNLite表情包制作生成器(Java实现)

    最近看到一则新闻说小米收购了MSNLite(hada.me)团队,打算开发PC端的米聊客户端,于是对MSNLite产生了兴趣,同时也在自己的机器上安装了MSNLite,乖乖,使用了几天确实感觉她比以前 ...

  4. java打印表情包_表情包生成器

    MemeX/斗图神器(表情包生成器) 项目介绍/Project Introduction/ 一个表情包生成器 输入文字,输出表情图片 用户可以表情包商店在线获取新的表情包, 也可以用本地的图片生成表情 ...

  5. java斗图表情_Java爬取斗图网站的所有表情包

    跟朋友聊天总会用到大量表情包,有些人甚至专门收集各种各样的表情包,看看谁能打败谁.今天我就用java爬取了一个斗图网站上的所有表情包,用来充实自己的表情包库.代码逻辑有可能并不完美,哈哈,也花了我几个 ...

  6. java秃头表情包_最怕空气突然的安静表情包 - 最怕空气突然的安静微信表情包 - 最怕空气突然的安静QQ表情包 - 发表情 fabiaoqing.com...

    最怕空气突然安静最怕大乔突然关心_最怕_大乔_突然_安静_关心表情 突然登场 - 最怕空气突然的安静 ​_突然表情 突然抱紧 - 最怕空气突然的安静 ​_突然表情 突然兴奋 - 最怕空气突然的安静 ​ ...

  7. java借助Robot给微信好友自动发消息(可发送表情包)

    这个其实不光微信,QQ也是可以的,想一下平时如果想刷屏群聊,聊天不爽了想骂回去,惹女朋友生气了想不停的道歉,或者每天定时问候一下,这些如果都要自己手动操作也太麻烦了吧,还不如写一个程序解决了呢.(等等 ...

  8. java开发表情包生成器

    前言:现在表情包越来越火,因此用java开发一个,只是简单的图片加文字生成一张图片,字体可以调大小颜色,当然你也可以尝试更多功能,如gif,文字动态等,图片大小缩放等,能动态生成图片,那自然也能动态生 ...

  9. java实现多线程爬取表情包

    和别人聊天表情包太少怎么办,一直这样 今天就用java爬点表情包 上代码 我是用的springboot项目 引入jar包方便 pom文件 <dependency><groupId&g ...

最新文章

  1. LSTM为何如此有效?
  2. java和C++的区别
  3. 进程间通信(3) 剪贴板
  4. Linux sed 打印模式空间p命令使用案例
  5. wojilu系统的ORM介绍
  6. Linux内核线程kernel thread详解--Linux进程的管理与调度(十)【转】
  7. linux开发板推荐_【新品发布】WiFi开发板XW-01-Kit,超低功耗,冷启快联,智能门锁首选!...
  8. Android_activity的生命周期
  9. Python生成多个浮点数、二维浮点数
  10. bash 脚本_实用的 bash 自定义脚本,快速提效工作流程
  11. 搭建keepalived遇到的问题
  12. jacob 详解 语音_JAVA 实现Jacob语音播报
  13. 【WeNews】三胞债务重组方案出炉 650亿元金融债务如何化解
  14. 神经网络和算法的关系,神经网络的算法有哪些
  15. 微博URL短地址lua生成算法
  16. 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)-----(七)系统时钟的介绍
  17. 现场管理的三大工具(zt)
  18. 国外优秀 Flex 网站源码模板与实例
  19. Unity2019.4.26 | Vuforia9.8.8 实现3d物体识别
  20. Linux系统磁盘分区报: Read-only file system无法写入数据处理

热门文章

  1. 甲骨文中国良心裁员:首批900人,赔偿N+6
  2. 一个菜鸟的Geant4入门之路:alpha粒子轰击金箔的例子
  3. 常见的WebShell管理工具
  4. mac系统的alt+tab(切换程序)键是什么
  5. JAVA如何开发订单通知短信
  6. 民间秘术——可怕的死亡诅咒
  7. 《美通社头条》祝大家国庆节快乐!
  8. c语言服务器制作,C语言写的简易实用的web服务器
  9. [附源码]Java计算机毕业设计SSM房屋租赁系统
  10. 天猫魔盒部分adb shell或telnet下有用命令