自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 分布式事务Seata

在分布式架构系统中,服务不止一个,一个完整的业务链路肯定也不止调用一个服务,此时每个服务都有自己的数据库增删改查,而每一个写操作对应一个本地事务。如果想要确保全部的业务状态一致,也就意味着需要所有的本地事务状态一致,这在我们之前的学习中肯定是不具备的,如何做到跨服务、跨数据源的事务一致性将是本章节的重点学习内容。

2024-08-02 01:08:06 330

原创 Redis集群伸缩,转移插槽失败

其中这个state后面的参数,标识当前slot的ID,因此我们要取这个作为接下来的命令执行参数。注意:每个人对应的ID可能不一样,这里就需要调整。

2024-08-02 00:57:18 332

原创 Redis集群部署指南

分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下。这里我们为了演示方便,使用方式二(在/tmp目录执行下列命令)。虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下(要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。

2024-08-02 00:56:45 458

原创 分布式缓存Redis

作为分布式系统中,必不可少的非结构化存储中间件,Redis在小型、中型、大型乃至高并发系统中均有自己发挥的场合,除了基础数据结构(String/Hash/Set/ZSet/List)的增删改查操作,在真正的生产环境中我们如何避免数据的丢失?如何避免单点的性能瓶颈?如何搭建合适的集群架构?本节笔者将从数据的持久化、多种集群结构搭建去解决不同的应用场景,以满足读者朋友们生产环境下的种种问题,最终实现Redis技术中间件的优雅落地。

2024-08-02 00:56:11 594

原创 RabbitMQ部署指南

如果有集群总数大于count+1,并且包含镜像的节点出现故障,则将在另一个节点上创建一个新的镜像。如果指定的节点在集群中存在,但是暂时不可用,会创建节点到当前客户端连接到的节点。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。注意:下面的发消息,需要点击图示:+1 ,查看对应的从节点是哪个再去操作,这里我的是mq2。而镜像模式下,创建队列的节点被称为该队列的。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。

2024-08-02 00:55:36 1432

原创 消息中间件RabbitMQ

Slf4j@Override// 获取RabbitTemplate// 设置ReturnCallback// 投递失败,记录日志log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",// 如果有业务需要,可以重发消息});ConfirmCallback可以在发送消息时指定,因为每个业务处理confirm成功或失败的逻辑不一定相同。// 1.消息体// 2.全局唯一的消息ID,需要封装到CorrelationData中。

2024-08-02 00:55:13 1648

原创 Zookeeper - 选举机制理解描述

前面学习了Zookeeper相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举。Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。(1) 服务器初始化启动。(2) 服务器运行期间无法和Leader保持连接。下面就两种情况进行分析讲解。

2024-08-01 18:18:31 387

原创 Zookeeper - 选举机制源码分析

对于Leader选举,其总体框架图如下图所示说明:选举的父接口为Election,其定义了lookForLeader和shutdown两个方法,lookForLeader表示寻找Leader,shutdown则表示关闭,如关闭服务端之间的连接。AuthFastLeaderElection,同FastLeaderElection算法基本一致,只是在消息中加入了认证信息,其在3.4.0之后的版本中已经不建议使用。

2024-08-01 18:17:44 391

原创 Zookeeper - Watcher机制(三)之ZooKeeper

前面已经分析了Watcher机制中的大多数类,本篇对于ZKWatchManager的外部类Zookeeper进行分析。本篇博文分析了Watcher机制的ZooKeeper类,该类包括了对服务器的很多事务性操作,并且包含了同步和异步两个版本,但是相对来说,较为简单。

2024-08-01 18:17:11 217

原创 Zookeeper - Watcher机制(二)WatchManager

前面已经分析了Watcher机制中的第一部分,即在org.apache.zookeeper下的相关类,接着来分析org.apache.zookeeper.server下的WatchManager类。WatchManager类用作管理watcher、其对应的路径以及触发器,其方法都是针对两个映射的操作。

2024-08-01 18:16:33 255

原创 Zookeeper - Watcher机制(一)

前面已经分析了Zookeeper持久话相关的类,下面接着分析Zookeeper中的Watcher机制所涉及到的类。事件的变化,状态的定义依赖于Event内部类的两组枚举值上下游调用关系图需记忆一下,为加强记忆,再最后再贴一下。

2024-08-01 18:16:00 261

原创 Zookeeper - 持久化FileTxnSnapLog

前面分析了FileSnap,接着继续分析FileTxnSnapLog源码,其封装了TxnLog和SnapShot,其在持久化过程中是一个帮助类。封装了TxnLog和SnapLog来进行相应的处理提供了从snapshot文件和log文件中恢复内存数据库的接口其对于事务的维护,或说事务的存储结构是一个个DataTree,代码层面看到的是DataNode,其增删都是追加/删除父子节点,类似于树状操作。

2024-08-01 18:14:12 1341

原创 Zookeeper-持久化FileTxnLog

前一篇已经分析了序列化,这篇接着分析Zookeeper的持久化过程源码,持久化对于数据的存储至关重要,下面进行详细分析。append函数实现日志追加,记录通过事务的crcValue验证,决定是否更新通过getLogFiles获取全部日志文件并排序通过getLastLoggedZxid找到最大的zxid,保证后续函数决定下一个日志文件id通过commit提交,真正生成日志文件通过trancate清空指定事务日志。

2024-08-01 18:10:44 289

原创 Zookeeper-序列化

在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信、数据存储中都用到了序列化,下面开始分析。这里只需要知道序列化涉及的类存放在:org.zookeeper.jute包下常用的类有:IndexRecord。

2024-08-01 18:09:00 292

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除