Consul 是 HashiCorp 公司推出的一款用于实现分布式系统的服务发现与配置的工具。下面介绍在不同操作系统下安装和使用 Consul 的步骤。 安装 Consul 1. macOS 系统 在 macOS 上可以使用 Homebrew 进行安装,操作如下: brew install consul 若未安装 Ho […]
Consul 是 HashiCorp 公司推出的一款用于实现分布式系统的服务发现与配置的工具。下面介绍在不同操作系统下安装和使用 Consul 的步骤。 安装 Consul 1. macOS 系统 在 macOS 上可以使用 Homebrew 进行安装,操作如下: brew install consul 若未安装 Ho […]
短链生成的几种方法 业界实现短链的方式大概是有两种。 1. Hash算法 由长url通过 hash 算法,生成短的url,如果hash冲突,需要解决解决hash冲突。那么这个哈希函数该怎么取呢,相信肯定有很多人说用 MD5,SHA 等算法,其实这样做有点杀鸡用牛刀了,而且既然是加密就意味着性能上会有损失,我们其实不关心 […]
区别 实现原理 Redis 分布式锁:主要基于 Redis 的原子操作。常见的是使用 SETNX(SET if Not eXists)命令或者 SET 命令的扩展参数(如 NX、EX)来实现。当一个客户端成功设置锁对应的键值时,就表示获取到了锁;释放锁则是删除对应的键。为了防止死锁,通常会给锁设置一个过期时间。 Zoo […]
Paxos 协议是一种分布式系统中用于达成共识的算法,由莱斯利・兰伯特(Leslie Lamport)在 1990 年提出。该协议旨在解决在一个可能出现故障和消息延迟的分布式环境中,多个节点如何就某个值达成一致的问题。以下从基本概念、运行过程、优缺点等方面详细解释 Paxos 协议: 基本概念 角色 提议者(Propo […]
什么是内存泄漏? 不再用到的内存,没有及时释放,就叫做内存泄漏。 对于持续运行的服务进程,必须及时释放内存,否则内存占用率越来越高,轻则影响系统性能,重则导致进程崩溃。 ThreadLocal是怎么造成内存泄露的呢? 如果发生了下面的情况: 如果ThreadLocal是null了,也就是要被GC回收了, 但是此时我们的 […]
背景 目前常用的实现动态配置日志级别的应该非SpringBoot的spring-boot-starter-actuator莫属了。 不过通过spring-boot-starter-actuator配置的日志级别,服务一旦重启就会恢复原状。且只能通过访问指定的接口来修改单个实例的日志级别(SpringBootAdmin也 […]
LDC(logic data center)是相对于传统的(Internet Data Center-IDC)提出的,逻辑数据中心所表达的中心思想是无论物理结构如何的分布,整个数据中心在逻辑上是协同和统一的。这句话暗含的是强大的体系设计,分布式系统的挑战就在于整体协同工作(可用性,分区容忍性)和统一(一致性)。单元化是 […]
Redis主从同步 数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布 记录。同步对读取操作的可扩展性和数据 […]
Redis不需要Leader这个观点其实有歧义,是不准确的,题目的问题本质其实是涉及数据分片、数据复制一致性。 1、Redis Cluster 架构 在Redis3.0版本开始,Redis引入了一种去中心化的集群架构,采用预分片的模式,一个集群中所有节点总共对应16384个槽位,在对一个key进行写入时,首先对key取 […]
今天开始我们将继续深入 ZK 选举相关的知识 一、选举的基本规则 ZKr~这次我决定一反常态,先不讲故事了~先得聊聊在 ZK 选举中非常重要的一些东西。 1.1 zxid zxid 就是我们之前提到的事务编号,是一个 8 字节的整型数字,但是 ZK 设计的时候把这一个数字拆成了两部分使用,一鱼两吃! 8 个字节的整数一 […]
曾虑多情损梵行,入山又恐别倾城。世间安得双全法,不负如来不负卿。