- 博客(14)
- 收藏
- 关注
原创 分布式事务Seata
在分布式架构系统中,服务不止一个,一个完整的业务链路肯定也不止调用一个服务,此时每个服务都有自己的数据库增删改查,而每一个写操作对应一个本地事务。如果想要确保全部的业务状态一致,也就意味着需要所有的本地事务状态一致,这在我们之前的学习中肯定是不具备的,如何做到跨服务、跨数据源的事务一致性将是本章节的重点学习内容。
2024-08-02 01:08:06
378
原创 Redis集群伸缩,转移插槽失败
其中这个state后面的参数,标识当前slot的ID,因此我们要取这个作为接下来的命令执行参数。注意:每个人对应的ID可能不一样,这里就需要调整。
2024-08-02 00:57:18
413
原创 Redis集群部署指南
分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下。这里我们为了演示方便,使用方式二(在/tmp目录执行下列命令)。虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下(要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。
2024-08-02 00:56:45
563
原创 分布式缓存Redis
作为分布式系统中,必不可少的非结构化存储中间件,Redis在小型、中型、大型乃至高并发系统中均有自己发挥的场合,除了基础数据结构(String/Hash/Set/ZSet/List)的增删改查操作,在真正的生产环境中我们如何避免数据的丢失?如何避免单点的性能瓶颈?如何搭建合适的集群架构?本节笔者将从数据的持久化、多种集群结构搭建去解决不同的应用场景,以满足读者朋友们生产环境下的种种问题,最终实现Redis技术中间件的优雅落地。
2024-08-02 00:56:11
824
原创 RabbitMQ部署指南
如果有集群总数大于count+1,并且包含镜像的节点出现故障,则将在另一个节点上创建一个新的镜像。如果指定的节点在集群中存在,但是暂时不可用,会创建节点到当前客户端连接到的节点。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。注意:下面的发消息,需要点击图示:+1 ,查看对应的从节点是哪个再去操作,这里我的是mq2。而镜像模式下,创建队列的节点被称为该队列的。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。
2024-08-02 00:55:36
1836
原创 消息中间件RabbitMQ
Slf4j@Override// 获取RabbitTemplate// 设置ReturnCallback// 投递失败,记录日志log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",// 如果有业务需要,可以重发消息});ConfirmCallback可以在发送消息时指定,因为每个业务处理confirm成功或失败的逻辑不一定相同。// 1.消息体// 2.全局唯一的消息ID,需要封装到CorrelationData中。
2024-08-02 00:55:13
1681
原创 Zookeeper - 选举机制理解描述
前面学习了Zookeeper相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举。Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。(1) 服务器初始化启动。(2) 服务器运行期间无法和Leader保持连接。下面就两种情况进行分析讲解。
2024-08-01 18:18:31
574
原创 Zookeeper - 选举机制源码分析
对于Leader选举,其总体框架图如下图所示说明:选举的父接口为Election,其定义了lookForLeader和shutdown两个方法,lookForLeader表示寻找Leader,shutdown则表示关闭,如关闭服务端之间的连接。AuthFastLeaderElection,同FastLeaderElection算法基本一致,只是在消息中加入了认证信息,其在3.4.0之后的版本中已经不建议使用。
2024-08-01 18:17:44
439
原创 Zookeeper - Watcher机制(三)之ZooKeeper
前面已经分析了Watcher机制中的大多数类,本篇对于ZKWatchManager的外部类Zookeeper进行分析。本篇博文分析了Watcher机制的ZooKeeper类,该类包括了对服务器的很多事务性操作,并且包含了同步和异步两个版本,但是相对来说,较为简单。
2024-08-01 18:17:11
273
原创 Zookeeper - Watcher机制(二)WatchManager
前面已经分析了Watcher机制中的第一部分,即在org.apache.zookeeper下的相关类,接着来分析org.apache.zookeeper.server下的WatchManager类。WatchManager类用作管理watcher、其对应的路径以及触发器,其方法都是针对两个映射的操作。
2024-08-01 18:16:33
303
原创 Zookeeper - Watcher机制(一)
前面已经分析了Zookeeper持久话相关的类,下面接着分析Zookeeper中的Watcher机制所涉及到的类。事件的变化,状态的定义依赖于Event内部类的两组枚举值上下游调用关系图需记忆一下,为加强记忆,再最后再贴一下。
2024-08-01 18:16:00
332
原创 Zookeeper - 持久化FileTxnSnapLog
前面分析了FileSnap,接着继续分析FileTxnSnapLog源码,其封装了TxnLog和SnapShot,其在持久化过程中是一个帮助类。封装了TxnLog和SnapLog来进行相应的处理提供了从snapshot文件和log文件中恢复内存数据库的接口其对于事务的维护,或说事务的存储结构是一个个DataTree,代码层面看到的是DataNode,其增删都是追加/删除父子节点,类似于树状操作。
2024-08-01 18:14:12
1384
原创 Zookeeper-持久化FileTxnLog
前一篇已经分析了序列化,这篇接着分析Zookeeper的持久化过程源码,持久化对于数据的存储至关重要,下面进行详细分析。append函数实现日志追加,记录通过事务的crcValue验证,决定是否更新通过getLogFiles获取全部日志文件并排序通过getLastLoggedZxid找到最大的zxid,保证后续函数决定下一个日志文件id通过commit提交,真正生成日志文件通过trancate清空指定事务日志。
2024-08-01 18:10:44
355
原创 Zookeeper-序列化
在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信、数据存储中都用到了序列化,下面开始分析。这里只需要知道序列化涉及的类存放在:org.zookeeper.jute包下常用的类有:IndexRecord。
2024-08-01 18:09:00
325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人