Zookeeper——分布式锁的概念理解 & 应用举例 文章目录:1.前言2.原生Zookeeper实现分布式锁3.Curator框架实现分布式锁案例4.Zookeeper常见面试题1.前言什么叫做分布式锁呢? 比如说"进程 1"在使用该资源的时候,会先去获得锁,"进程 1"获得锁以后会对该资源保持独占,这样其他进程就无法访问该资源,"进程 1"用完该资源以后就将锁释放掉,让其他进程来获得锁,那么通过这个锁机制,我们就能保证了分布式系统中多个进程能够有序的访问该临界资源。那么我们把这个分布式环境下的这个锁叫作分布式锁。.
Zookeeper——服务器动态上下线、客户端动态监听 文章目录:1.前言2.实操步骤2.1 服务端代码2.2 客户端代码2.3 测试1.前言某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线。2.实操步骤首先,我这里还是像前几篇zookeeper的文章一样,考虑到电脑的8G内存以及性能,我这里就不显示zk集群了,还是以zk单机版来演示。先到zk客户端的根节点下,创建一个 servers 节点。[zk: localhost:2181(CONNECTED) 1
Zookeeper——客户端API的相关方法操作 文章目录:1.前言2.实操步骤2.1 创建zk客户端,完成与服务端的连接2.2 创建节点信息2.3 获取子结点并监听节点变化2.4 判断节点是否存在3.浅谈写数据原理3.1 写流程之写入请求直接发送给Leader节点3.2写流程之写入请求直接发送给Follower节点1.前言首先,在上一篇博客中,主要是对zookeeper集群的相关操作,那么由于我的笔记本是 8G 内存的,所以开三台Linux还是可以的,但是再开个IDEA了话就炸了,所以我这里针对zookee.
Zookeeper——客户端命令行的相关指令操作 文章目录:1.命令行指令语法2.指令实操2.1 ls查看节点信息2.2 create创建永久节点(不带序号)2.3 get获取节点的值2.4 create -s创建永久节点(带序号)2.5create -e -s创建短暂节点(带序号、不带序号)2.6 set设置修改节点的值2.7 监听器原理、ls -w监听子节点 (路径变化)、get -w监听节点的值2.8 delete删除节点、deleteall递归删除节点1.命令行指令语法2.指令实操首..
Zookeeper——集群搭建 & 选举机制 文章目录:1.前言2.步骤详解3.选举机制3.1 第一次启动3.2非第一次启动1.前言继上一篇文章中,我学过了Zookeeper的一些概念、配置文件以及Linux下本地启动。那么这篇文章来讲讲关于Zookeeper集群的相关操作步骤。2.步骤详解首先我们需要准备三台机器,这里就对我原有的Linux进行链接克隆,再克隆两台,一共三台就可以了。克隆完之后,我们首先需要对克隆的这两台机器的ip、主机名做一下修改。修改 ip 命令如下:👇👇👇 我这里的三台机器分别是 .
Zookeeper——简介 & 下载 & Linux下配置安装启动 & 解读相关配置参数 文章目录:1.什么是Zookeeper?1.1 Zookeeper工作机制1.2 Zookeeper特点1.3 Zookeeper数据结构1.4 Zookeeper应用场景1.4.1 统一命名服务1.4.2 统一配置管理1.4.3 统一集群管理1.4.4 服务器动态上下线1.4.5 软负载均衡2.Zookeeper下载3.Linux下配置安装启动4.Zookeeper配置文件的相关参数1.什么是Zookeeper?课件相关资料全部来自 尚硅谷!!
SpringBoot整合Dubbo的第三种方式——XML配置 + @ImportResource 1.文档参照dubbo配置官方文档2.三个工程2.1 公共接口工程参考这篇文章:SpringBoot整合Dubbo的第一种方式2.2 服务提供者首先我们注释掉配置文件中的相关内容,只留下应用名(不留也可以)。spring.application.name=boot-user-service-provider#dubbo.application.name=boot-user-service-provider##dubbo.scan.base-packages=c
SpringBoot整合Dubbo的第二种方式——API(自定义Configuration配置类) 1.文档参照dubbo配置官方文档2.三个工程2.1 公共接口工程参考这篇文章:SpringBoot整合Dubbo的第一种方式2.2 服务提供者首先我们注释掉配置文件中的相关内容,只留下应用名(不留也可以)。spring.application.name=boot-user-service-provider#dubbo.application.name=boot-user-service-provider##dubbo.scan.base-packages=c
SpringBoot整合Dubbo的第一种方式——application.properties + @DubboService + @DubboReference 1.文档参照dubbo配置官方文档2.三个工程2.1 公共接口工程这个工程中存放的是一些公共的Java Bean、相关接口信息。其中UserService接口是针对服务提供者的,OrderService接口是针对服务消费者的。<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> &l
MySQL高级篇——锁的概述与案例应用 文章目录:1.锁的概述2.MySQL并发事务访问相同记录2.1 读-读情况2.2 写-写情况2.3 读-写或写-读情况2.4 并发问题的解决方案3.锁的不同角度分类3.1 从数据操作的类型划分:读锁、写锁3.2 从数据操作的粒度划分:表级锁、页级锁、行锁3.2.1 表锁——读锁、写锁3.2.2表锁——意向锁3.2.3行锁——记录锁3.2.4行锁——间隙锁3.2.5行锁——临键锁3.2.6行锁——插入意向锁3.2.7页锁3.3 从...
MySQL高级篇——事务的隔离级别与简单应用 1.数据并发所存在的问题针对事务的隔离性和并发性,我们怎么做取舍呢?先看一下访问相同数据的事务在 不保证串行执行 (也就是执行完一个再执行另一个)的情况下可能会出现哪些问题: 1.1 脏写对于两个事务 Session A、Session B,如果事务Session A 修改了 另一个 未提交 事务Session B 修改过 的数据,那就意味着发生了 脏写。1.2 脏读对于两个事务 Session A、Session B,Session A 读取 了已经被 Session B 更
MySQL高级篇——事务的概述与简单应用 文章目录:1.事务概述2.事务的ACID特性3.如何使用事务?3.1 显式事务3.2 隐式事务4.实操案例1.事务概述首先,我们可以查看一下各种存储引擎对事务的支持情况。 仅有INNODB是支持事务的。事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理的原则:保证所有事务都作为 一个工作单元 来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交( commit ),那么这些修改就 永久
MySQL高级篇——索引解决查询相关的优化问题 文章目录:1.数据准备2.内外连接优化2.1 外连接优化2.2 内连接优化3.子查询优化4.ORDER BY排序优化5.GROUP BY分组优化6.LIMIT分页查询优化7.优先考虑覆盖索引8.其它查询优化策略8.1 EXISTS和IN的区分8.2COUNT(*)与COUNT(具体字段)效率8.3关于SELECT(*)8.4LIMIT 1 对优化的影响8.5多使用COMMIT1.数据准备准备两张表:type、book,每张表中各添...
MySQL高级篇——索引失效案例 文章目录:1.案例分析1.1 数据准备1.2 全值匹配1.3 最左前缀法则1.4计算、函数、类型转换(自动或手动)导致索引失效1.5范围条件右边的列索引失效1.6不等于(!= 或者<>)索引失效1.7is null可以使用索引,is not null无法使用索引1.8like以通配符%开头索引失效1.9OR前后存在非索引的列,索引失效1.10数据库和表的字符集统一使用utf8mb42.结束语1.案例分析1.1 数据准备这...
MySQL高级篇——EXPLAIN分析查询语句 文章目录:1.关于EXPLAIN2.数据准备3.EXPLAIN中各列的作用3.1 table3.2 id3.3 select_type3.4partition(略):匹配的分区信息3.5type3.6possible_keys和key3.7 key_len3.8 ref3.9 rows3.10filtered3.11 Extra1.关于EXPLAIN官网介绍 https://dev.mysql.com/doc/refman/5...
MySQL高级篇——聊聊MySQL的慢查询日志 文章目录:1.数据库服务器的优化步骤2.查看系统性能参数3.定位执行慢的 SQL:慢查询日志4.查看 SQL 执行成本:SHOW PROFILE1.数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。 整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。2.查看系统性能
MySQL高级篇——索引的创建与设计原则 文章目录:1.索引的分类2.创建索引的三种方式2.1 方式一:CREATE TABLE2.1.1 小例子2.1.2 普通索引2.1.3 唯一性索引2.1.4 主键索引2.1.5 单列索引2.1.6 联合索引2.1.7 全文索引2.2 方式二:ALTER TABLE ... ADD INDEX ...2.3 方式三:CREATE INDEX ... ON ...3.删除索引的两种方式3.1 使用ALTER TABLE删除索引3.2 使用DROP IN