金志宏的黑洞博客

任何时候 都不算太晚

深入浅出:Redis 分布式锁原理与实现(一)

深入浅出:Redis 分布式锁原理与实现(一)

Redis 分布式锁原理与实现 Java 应用在多线程环境下,我们可以通过 Java 内存模型实现同步,比如 Lock,synchronized 等, 但是在分布式环境下,特别是现在微服务盛行的时代,服务为了高可用会做集群。在这样的情况下每个服务都有自己独立进程,当高并发的情况下,会存在同步问题,本文主要记录自己学习Redis分布式锁的过程。从浅到深一步步通过代码去分析。 1...

Spring Cloud Ribbon 负载均衡源码分析

Spring Cloud Ribbon 负载均衡源码分析

Spring Cloud Ribbon 负载均衡源码分析 Ribbon 可以实现微服务客户端的软负载均衡,说白了就是通过一系列算法,在服务调用时动态获取服务列表并且选择一个节点调用。Ribbon 有多种负载均衡策略,程序员可以自己进行配置。 以下列出几种常用的负载平衡策略,后面源码主要介绍前4种负载均衡策略。 实现类 默认 ...

Spring Cloud Zuul 介绍和使用

Spring Cloud Zuul 介绍和使用

#Spring Cloud Zuul 介绍和使用 1. 前言:路由器和过滤器 Zuul ​ 路由是微服务架构不可或缺的一部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,/api/shop映射到商店服务。Zuul的Netflix基于JVM的路由器和服务器负载均衡器。 ​ 微服务架构我们有很多服务,每个服务拥有不同的IP地址,端口,服务名称。这些服务的调...

Spring Cloud Hystrix 学习和部分原理

Spring Cloud Hystrix 学习和部分原理

#Spring Cloud Hystrix 断路器学习 1. Hystrix 介绍 Netflix创建了一个名为Hystrix的库,用于实现断路器模式。在微服务架构中,通常有多层服务调用,如以下示例所示。 [][https://raw.githubusercontent.com/spring-cloud/spring-cloud-netflix/master/docs/src/main...

Eureka 学习之高可用多节点注册中心 (四)

Eureka 学习之高可用多节点注册中心 (四)

Eureka 学习之高可用多节点注册中心 (四) Eureka Server 注册中心可以实现高可用的多节点配置。具体实现方式是多个Eureka Server互相注册,形成链路,此时Client注册到任何一个节点,Server链路会保证服务被同步到所有的注册中心节点上。从而实现高可用的注册中心。哪怕你配置的注册地址eureka.client.service-url.defaultZone ...

Eureka 学习之 Client软负载均衡(三)

Eureka 学习之 Client软负载均衡(三)

Eureka 学习之 Client软负载均衡(三) 这篇主要介绍 Eureka Client 是怎么实现软负载均衡的(纯demo演示非源码层面),我的个人习惯,先跑一整编Demo 最后再研究源码,源码放到最后边学边记录。 1. Eureka Client 多节点 这里就不记录怎么创建 Server 了,有兴趣的同学可以看我的前2篇 Eureka 学习文章。一般的微服务架构会根据业务进行...

Eureka 学习之 Eureka Client(二)

Eureka 学习之 Eureka Client(二)

#Eureka 学习之 Eureka Client(二) 上一章节学了怎么样快速注册一个 Eureka Server 注册中心,这章主要学习讲怎么把Eureka Client注册到 Eureka Server 注册中心去。Eureka 和 Dubbo 不同, Eureka Client 同时可以是 Provider 和 Consumer。即是服务提供者,又是服务消费者。每个Client都可...

Eureka 学习之服务注册(一)

Eureka 学习之服务注册(一)

Eureka 学习之服务注册(一) 1. 简介 Eureka Server 服务注册中心是Spring Cloud Netflix 中的一个组件Spring Cloud Netflix 通过自动配置为Spring Boot应用程序提供Netflix OOS集成。通过一些简单的注释,可以快速配置和启用应用程序,并用成熟的Netflix组件构建大型分布式系统。其中包括服务发现Eureka,断...

算法-盛最多水的容器

JAVA数组

算法-盛最多水的容器 1. 题目 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 示例: 输入: [1,8,6,2,5,4,8,3,7]...

算法-整数反转

JAVA数字操作

算法-整数反转 1. 题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转...