ZooKeeper注册中心;MySQL表锁了,强制释放锁;生产者发送消息和消息者接受消息

简介: ZooKeeper注册中心

ZooKeeper注册中心

/**
 * ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、
 * 分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于
 * 诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。
 */
public void tesG() throws Exception {
    ZooKeeper zooKeeper = ZKUtils.getZooKeeper();
    for (int i = 0; i < 5; i ++) {
        String threadName = "LockThread-" + i;
        new Thread(() -> {
            ZKLockUtils lockUtils = new ZKLockUtils();
            lockUtils.setZooKeeper(zooKeeper);
            lockUtils.setThreadName(threadName);
            lockUtils.lock();
            System.out.println(Thread.currentThread().getName() + "making task");
            //making task ...
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                log.error("e:", e);
            } finally {
                lockUtils.unlock();
            }
        }, threadName).start();
    }
}

MySQL表锁了,强制释放锁

1、查看当前进程

mysql> show processlist;

2、查看当前运行的事务

mysql> SELECT * FROM information_schema.INNODB_TRX;


3、当前出现的锁


mysql> SELECT * FROM information_schema.INNODB_LOCKs;


4、kill掉对应进程


kill id


快速解决

遇到mysql执行sql后锁住的情况可以这样快速的解锁,生产环境慎用


一旦杀错线程会导致本来该执行的sql执行失败

select * from information_schema.INNODB_TRX;


kill trx_mysql_thread_id


生产者发送消息和消息者接受消息

基本消息队列的消息发送流程:

1、建立connection

2、创建channel

3、利用channel声明队列

4、利用channel向队列发送消息


基本消息队列的消息接收流程:

1、建立connection

2、创建channel

3、利用channel声明队列

4、定义consumer的消费行为handleDelivery()

5、利用channel将消费者与队列绑定


=============

我们写的时候不用那么复杂

比如rabbitmq

1、引入包

springamop包含了rabbitmq

spring-boot-starter-amqp

2、在publisher服务中编写application.yml,添加mq连接信息

spring:

rabbitmq:

host:

port:

virtual-host: #虚拟主机,在rabbitmq连接管理后台

username:

password:

3、应用到业务中 如下单成功需要发送消息

@Autowired

private RabbitTemplate rabbitTemplate;


@Test
public void testSimpleQueue() {
String queueName = “simple–>queue”;
String message = “hello”;
rabbitTemplate.convertAndSend(queueName, message);
}


相关文章
|
7月前
|
SQL AliSQL 关系型数据库
MYSQL的全局锁和表锁
本文介绍了MySQL中的锁机制,包括全局锁、表级锁及其应用场景。全局锁通过`Flush tables with read lock (FTWRL)`实现,主要用于全库逻辑备份,但会阻塞更新和结构变更操作。表级锁分为显式表锁(`lock tables`)和元数据锁(MDL),前者用于控制并发访问,后者自动加锁以确保读写正确性。文章还探讨了如何安全地为小表添加字段,建议通过设置DDL等待时间或使用MariaDB/AliSQL的NOWAIT/WAIT功能避免业务阻塞。这些方法有助于在高并发场景下优化数据库性能与安全性。
193 0
|
7月前
|
SQL 存储 关系型数据库
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
|
11月前
|
负载均衡 Kubernetes 网络协议
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,继续探讨注册中心的原理及选型。文章详细介绍了Eureka、Nacos的工作机制与特点,并对比了Eureka、Nacos、Consul和Zookeeper在一致性协议、健康检查、负载均衡等方面的差异。最后根据不同的应用场景给出了注册中心的选型建议,帮助读者理解如何选择最适合的注册中心。
929 100
|
SQL 关系型数据库 MySQL
MySQL 锁
MySQL里常见的几种锁
228 3
|
11月前
|
存储 缓存 负载均衡
如何设计一个注册中心?以Zookeeper为例
本文介绍了分布式系统中注册中心的设计与工作原理,重点讲解了Zookeeper作为注册中心的实现。注册中心需具备服务注册、注销、心跳检测、服务查询等功能,确保高可用性。Zookeeper通过层次命名空间和znode存储数据,支持服务注册与发现,并采用发布-订阅模式通知消费者服务变更。然而,Zookeeper存在选举期间不可用的问题,不太适合作为注册中心,因其CP模型优先保证一致性而非可用性。
573 78
|
10月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
410 25
|
11月前
|
存储 关系型数据库 MySQL
MySQL进阶突击系列(06)MySQL有几种锁?| 别背答案,现场演示一下
本文详细解析了MySQL InnoDB存储引擎的锁机制,涵盖读锁、写锁、意向锁、记录锁、间隙锁和临键锁等8种锁类型。重点探讨了不同锁类型的加锁与释放方式,以及事务并发场景下的实战验证。通过具体示例,展示了在不同情况下锁的行为及其对事务的影响。文章还特别强调了锁的作用范围主要是索引,并解释了锁如何影响数据的读写操作。最后总结了并发事务中加锁规则,帮助读者深入理解MySQL的锁机制。
|
存储 运维 NoSQL
分布式读写锁的奥义:上古世代 ZooKeeper 的进击
本文作者将介绍女娲对社区 ZooKeeper 在分布式读写锁实践细节上的思考,希望帮助大家理解分布式读写锁背后的原理。
326 11
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
185 4
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
725 1

推荐镜像

更多