Web服务器群集:LVS+Keepalived高可用群集

news/2024/4/28 22:38:59/文章来源:https://blog.csdn.net/cronaldo91/article/details/131521308

目录

一、理论

1.Keepalived

2.VRRP协议(虚拟路由冗余协议)

3.部署LVS+Keepalived 高可用群集

二、实验

1.LVS+Keepalived 高可用群集

三、问题

1.备服务器网卡启动报错

四、总结


一、理论

1.Keepalived

(1)简介

Keepalived是一款专为LVS和HA设计的一款健康检查工具;支持故障自动切换、支持节点健康状态检查。

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群中各个服务节点的状态,后来又加入了可实现高可用VRRP功能。因此,Keepalived除了能够管理LVS集群外,还可以为其他服务(例如:Nginx、Haproxy、MySQL等)实现高可用。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRP出现的目的就是为了解决静态路由单点故障的问题,它能够保证当个别节点宕机时,整个网络可以不间断的运行
Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用。
 

(2)工作原理

Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
两台主机同时安装好Keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备;当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务;而当角色为Master的主机故障修复后,又会自动接管回它原来处理的工作,角色为Backup的主机则同时释放Master主机失效时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始角色及工作状态。

(3)功能

① 管理LVS负载均衡软件
Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置及控制服务的启动,停止功能

② 支持故障自动切换(Failover)
Keepalived可以实现任意两台主机之间,例如Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡,Nginx反向代理这样的服务器

③ 实现LVS集群中节点的健康检查(Health Checking)
Keepalived可以通过在自身的Keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证用户的访问不受影响;当故障的阶段服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务。

④ 实现LVS负载调度器、节点服务器地高可用性(HA)
一般企业集群需要满足的三个特点:负载均衡、健康检查、故障切换、使用LVS+Keepalived完全可以满足需求

(4)Keepalived体系主要模块
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

表1 Keepalived体系模块

模块功能
core模块为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
vrrp模块是来实现VRRP协议的。
check模块负责健康检查,常见的方式有端口检查及URL检查。

2.VRRP协议(虚拟路由冗余协议)

Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能。

(1)VRRP简介

       VRRP(Virtual Router Redundancy Protocol),为虚拟路由器冗余协议,是一种用于提高网络可靠性的容错协议。通过VRRP,实现在主机的下一跳设备出现故障时,将业务切换到备份设备,保障整个网络通信的连续性和可靠性。
      VRRP是针对路由器的一种备份解决方案,由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务,每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

(2) VRRP工作过程
      选取Master,比较优先级,高的为Master,若优先级相同无Master时,比较接口IP地址,大的为Master,Master设备发送ARP报文,承担报文转发工作;状态维持,Master设备周期发送通告报文,公布配置信息和工作状态;
       Backup设备根据收到的通告报文判断Master设备是否工作正常,如果Master设备主动放弃Master地位时,会发送优先级为0的通告报文,Backup设备收到后会快速切换成Master设备或者定时器超时后Backup设备认为Master设备无法正常工作,会切换状态为Master。

(3)功能

         ① 主备备份

         ② 负载分担

(4)三种状态

         ① 初始状态(Initialize)

         ② 主状态(Master)

         ③ 备份状态(Backup)

 

3.部署LVS+Keepalived 高可用群集

(1)环境准备

主DR 服务器:192.168.204.70
备DR 服务器: 192.168.204.100
Web 服务器1:192.168.204.80
Web 服务器2:192.168.204.90
客户端:192.168.204.250
vip(虚拟回环):192.168.204.23

(2)配置负载调度器(主keepalived服务器:192.168.204.70)

① #关闭防火墙
systemctl stop firewalld.service
setenforce 0② #安装服务
yum install ipvsadm keepalived -y ③ #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02router_id LVS_01
}vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUPstate MASTER
--21行--修改,指定承载vip地址的物理接口interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99priority 100advert_int 1					#通告间隔秒数(心跳频率)authentication {				#定义认证信息,每个热备组保持一致auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致auth_pass 123123}virtual_ipaddress {				#指定群集vip地址192.168.79.25}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.204.23 80 {delay_loop 6					#健康检查的间隔时间(秒)lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 50			#连接保持时间(秒)protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口real_server 192.168.204.80 80 {weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		TCP_CHECK {connect_port 80			#添加检查的目标端口connect_timeout 3		#添加连接超时(秒)nb_get_retry 3			#添加重试次数delay_before_retry 3	#添加重试间隔}}real_server 192.168.204.90 80 {		#添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
##删除后面多余的配置##④ #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	⑤ #调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0⑥ #刷新一下
sysctl -p############################# 配置ipvsadm #################################⑦ #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service⑧ #清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.204.23:80 -s rr
ipvsadm -a -t 192.168.204.23:80 -r 192.168.204.80:80 -g
ipvsadm -a -t 192.168.204.23:80 -r 192.168.204.90:80 -g⑨ #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

(3)配置负载调度器(备keepalived服务器:192.168.204.100)

 配置与主服务器相似

① #关闭防火墙
systemctl stop firewalld.service
setenforce 0② #安装服务
yum install ipvsadm keepalived -y ③ #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02router_id LVS_02
}vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUPstate BACKUP
--21行--修改,指定承载vip地址的物理接口interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99priority 99advert_int 1					#通告间隔秒数(心跳频率)authentication {				#定义认证信息,每个热备组保持一致auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致auth_pass 123123}virtual_ipaddress {				#指定群集vip地址192.168.204.23}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.204.23 80 {delay_loop 6					#健康检查的间隔时间(秒)lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 50			#连接保持时间(秒)protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口real_server 192.168.204.80 80 {weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		TCP_CHECK {connect_port 80			#添加检查的目标端口connect_timeout 3		#添加连接超时(秒)nb_get_retry 3			#添加重试次数delay_before_retry 3	#添加重试间隔}}real_server 192.168.204.90 80 {		#添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
##删除后面多余的配置##④ #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	⑤ #调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0⑥ #刷新一下
sysctl -p############################# 配置ipvsadm #################################⑦ #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service⑧ #清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.204.23:80 -s rr
ipvsadm -a -t 192.168.204.23:80 -r 192.168.204.80:80 -g
ipvsadm -a -t 192.168.204.23:80 -r 192.168.204.90:80 -g⑨ #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

(4)配置节点服务器(web1服务器:192.168.204.80)

① #关闭防火墙
systemctl stop firewalld
setenforce 0② #安装并开启httpd服务
yum -y install httpd
systemctl start httpd③ #配置站点文件
vim /var/www/html/index.html
this is david web1!④ #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.204.23
NETMASK=255.255.255.255⑤ #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0⑥ #设置路由
route add -host 192.168.204.23 dev lo:0
route -n⑦ #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2⑧ #刷新proc参数
sysctl -p

(5)配置节点服务器(web2服务器:192.168.204.90)

配置与web1相似

① #关闭防火墙
systemctl stop firewalld
setenforce 0② #安装并开启httpd服务
yum -y install httpd
systemctl start httpd③ #配置站点文件
vim /var/www/html/index.html
this is jack web1!④ #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.204.23
NETMASK=255.255.255.255⑤ #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0⑥ #设置路由
route add -host 192.168.204.23 dev lo:0
route -n⑦ #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2⑧ #刷新proc参数
sysctl -p

(6)测试验证

① 在客户机上测试(客户机:192.168.204.250)

curl 192.168.204.23

② 查看主keepalived服务器:192.168.204.80

ip a

③ 备keepalived服务器:192.168.204.90

ip a

④ 断开主keepalived服务器:192.168.204.80

systemctl stop keepalived.service
ip a

⑤ 备keepalived服务器:192.168.204.90

ip a

二、实验

1.LVS+Keepalived 高可用群集

(1)配置负载调度器(主keepalived服务器:192.168.204.70)

① 关闭防火墙

② 安装服务

 ③ 修改配置文件keeplived.conf

 ④ 启动服务、查看虚拟网卡vip

 ⑤ 调整proc响应参数,关闭Linux内核的重定向参数响应

⑥ 刷新一下

 ⑦ 配置负载分配策略,并启动服务

 

⑧ 清空ipvsadm,并做策略

 ⑨ 保存设置

(2)配置负载调度器(备keepalived服务器:192.168.204.100)

① 关闭防火墙

② 安装服务

③ 修改配置文件keeplived.conf

④ 启动服务、查看虚拟网卡vip

⑤ 调整proc响应参数,关闭Linux内核的重定向参数响应

⑥ 刷新一下

 

⑦ 配置负载分配策略,并启动服务

 ​​​​​​​

⑧ 清空ipvsadm,并做策略

  ⑨ 保存设置

(3)配置节点服务器(web1服务器:192.168.204.80)


① 关闭防火墙

 ② 安装httpd、开启服务

③ 创建一个站点文件

 ④ 添加回环网卡,修改回环网卡名,IP地址,子网掩码

 ⑤ 设置路由

 ⑥ 开机执行命令

⑦ 调整 proc 响应参数

⑧ 刷新配置

 

(4)配置节点服务器(web2服务器:192.168.204.90)

① 关闭防火墙

 ② 安装httpd、开启服务

 ③ 创建一个站点文件

 

④ 添加回环网卡,修改回环网卡名,IP地址,子网掩码

 

 ⑤ 设置路由

⑥ 开机执行命令

 

⑦ 调整 proc 响应参数

 

⑧ 刷新配置

 

(5)测试验证

在客户机上测试(客户机:192.168.204.250)

主keepalived服务器:192.168.204.80

备keepalived服务器:192.168.204.90

断开主keepalived服务器:192.168.204.80

备keepalived服务器:192.168.204.90

三、问题

1.备服务器网卡启动报错

(1)问题:Failed to start LSB: Bring up/down networking

 (2)解决思路:

根据提示信息进行操作,查找错误信息。
在系统日志(/var/log/messages)中查看错误信息
根据错误信息进行问题定位并解决

(3)解决方法

查看日志,提示“未知的名称或服务”

 /etc/sysconfig/network-scripts/目录中,发现多出了一个ifcfg-**文件,(ifcfg文件数量和网卡数量相同),删除该文件,重启网卡,成功。

四、总结

Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能。

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

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

相关文章

Redis高可用群集---搭建(主从、哨兵、Cluster)

目录 Redis 高可用集群Redis 主从复制Redis 哨兵模式Redis 集群模式 Redis 高可用集群 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redi…

MySQL原理探索——22 MySQL有哪些“饮鸩止渴”提高性能的方法

不知道你在实际运维过程中有没有碰到这样的情景:业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内、临时性地提升一些性能。 我做项目的时候,就偶尔会碰上这种场景。用户的开发负责人说,不管…

Spring中bean使用方法

Spring框架是一个非常重要的开发工具,它提供了丰富的功能和模块,其中核心的概念之一就是Spring Bean。Spring Bean是Spring IoC容器中的一个对象,它负责管理一个Java对象的生命周期以及依赖注入。下面我将通过互联网场景下的相关背景内容来阐…

4通道AD采集子卡模块有哪些推荐?

FMC134是一款4通道3.2GSPS(2通道6.4GSPS)采样率12位AD采集FMC子卡模块,该板卡为FMC标准,符合VITA57.4规范,可以作为一个理想的IO模块耦合至FPGA前端,16通道的JESD204B接口通过FMC连接器连接至FPGA的高速串行…

分布式系统监控zabbix安装部署及自定义监控

系列文章目录 文章目录 系列文章目录一、zabbix1.zabbix的基本概述2.zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。3.zabbix 监控原理4.Zabbix 6.0 功能组件5. zabbix的监控对象6.zabbix的常用术语7.zabbix进程详解8.zabbix的监控框…

安装配置云计算模板机

安装虚拟机模板机 一、在VMware上安装Centos虚拟机二、修改虚拟机的ip、网关、DNS三、更换yum源3.1 更换本地yum源3.2 更换国内互联网Yum源 四、 安装net-tools和bash-completion五、 关闭防火墙和SELinux 学习云计算后续需要多个虚拟机,作为云计算集群的节点&#…

【近场社交项目】数据库系统期末设计——需求分析部分

【近场社交项目】数据库系统设计——需求分析😎 前言🙌1.需求求分析(用户部分为例)1.2用户数据字典1.2.1用户信息表(数据结构):数据项间的关系和结构定义: 1.2.2.个人资料表(数据结构…

【React组件通讯的三种方式】

React组件通讯的三种方式 父组件传递数据给子组件子组件传递数据给父组件 React组件之间的通讯分为三种: 父组件 →子组件子组件 →父组件兄弟组件 父组件传递数据给子组件 步骤: 父组件提供要传递的state数据给子组件标签添加属性,值为st…

LeetCode·每日一题·445. 两数相加 II·模拟

作者:小迅 链接:https://leetcode.cn/problems/add-two-numbers-ii/solutions/2328613/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-67qx/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权&#xff…

使用家庭宽带和摄像头,实现公网直播

那天去逛商场看到有个营业厅,本想进去问问有没有存话费送话费的活动,结果被忽悠办了一个19.9升千兆宽带加送一个路由器的业务。 网络环境验证 听他们说现在家庭宽带都是有公网IPV6地址的,立马用电脑试了下确实有IPV6地址。 赶紧随便写了几行…

记录使用ffmpeg把mp4转换成m3u8

背景:公司需要上一些视频资源,平均每一个都在600m以上,经过考虑以后采取视频分片以后上传到oss上进行加速播放的流程.这里记录一下使用ffmpeg进行转换视频格式的过程中的一些命令. 准备工作: 下载ffmpeg到本地,以及配置ffmpeg到环境变量中,这里就不多说了. 使用的时候先打开…

Jenkins之pipeline语法——2023.07

文章目录 一、概述二、Pipeline任务1、Pipeline Script 运行任务2、Pipeline script from SCM 通过代码库运行任务3、在 job(任务)中配置Pipeline script from SCM 三、Jenkinsfile 语法1、脚本式语法2、声明式语法1. agent :节点2. tool3. environment2. stages &a…

ATTCK(六)之ATTCK子项目atomicredteam测试环境安装与使用

ATT&CK子项目atomicredteam测试环境安装与使用 Atomicredteam的主站点为https://atomicredteam.io/,是一个攻击测试库,每个安全团队都可以执行这些测试来测试他们的防御控件。测试是有重点的,几乎没有依赖关系,并且以结构化格…

C++动态库使用

个人博客地址: https://cxx001.gitee.io 前言 Windows与Linux下面的动态链接库区别 1. 文件后缀不同 Linux动态库的后缀是 .so 文件,而window则是 .dll 文件。 2. 文件格式不同 (a)Linux下是ELF格式,即Executable and Linkab…

CANDENCE :简单贴装器件封装绘制

紧接candence:常见表贴焊盘绘制举例 简单贴装器件封装绘制 以0603封装电容为例,绘制其封装,这里会用到前面绘制的电容的焊盘。 1、打开PCB editor 软件工具 2、新建一个PACKGE symbol 文件,设置好路径和名称。点击ok确认 3、设置画布尺寸、原点位置、…

Uniapp开发的开源盲盒系统源码

最近比较火的盲盒系统,该项目是基于uniapp开发的盲盒项目,有需要的朋友可以联系我,运营级的项目,本次开源的是uniapp前端模板,选用技术为JAVA,采用框架:spring bootmybatisvue开发。 通过node安…

行为型模式-策略模式(一)

今天就说一说设计模式中的策略模式,从名字来讲,意思就是,对应不同的情况,就有一种解决问题的办法,不同的情况,就有不同的应对方法,这就是策略模式,非常的智能化。 也可以参考菜鸟 …

【Git原理与使用】-- 远程操作

目录​​​​​​​ 理解分布式版本控制系统 远程仓库 新建远程仓库 lssue 与 Pull Request模板文件 知识铺垫 lssue 模板文件 Pull Request模板文件 克隆远程仓库 使用 HTTPS 方式 使用 SSH 方式 第一步:创建SSH Key 向远程仓库推送 过程梳理 实操 …

【SLAM学习】获取IMU和雷达消息并发布

本文主要记录如何将rosbag的消息进行获取并进行发布以及后续处理。 测试数据集: 链接: https://pan.baidu.com/s/1DthWE45V5Zhq7UUrfTt_CQ 提取码: mxvn 查看数据集bag包里面都有那些话题: rosbag info indoor_lab_RS.bag 可以看到包含了两个话题…

『手撕 Mybatis 源码』09 - MyBatis 插件

MyBatis插件 概述 问题:什么是Mybatis插件?有什么作用? Mybatis插件本质上来说就是一个拦截器,它体现了 JDK 动态代理和责任链设计模式的综合运用 Mybatis 中所允许拦截的方法如下 Executor 【SQL执行器】【update&#xff…