在之前文章spring clound负载均衡之Ribbon(二)- 自动装配 中,介绍了ribbon自动装配的原理,这篇文章中将主要介绍在ribbon启动过程中,涉及到的重要类型。这些类型在ribbon中充当比较重要的作用。下面我们就一起来看看吧。 RibbonClientSpecification 该类作为ribbon配置类型存在,主要由spring-cloud提供,我们看下该类型的源码: /** * Specification with name and configuration. */ public int…

9月 25, 2021 0条评论 809点热度 0人点赞 阅读全文

在微服务实现中,比较重要的一个组建就是负载均衡,主要是同一个服务又多实例时,为了能够将请求分发到不同的实例节点上, 负载均衡是一个比不可少的组件。在spring cloud eureka的实现中,默认使用了ribbon作为服务均衡的实现, 本篇文章主要是以demo的方式优先了解ribbon的一个具体的使用,然后才能更好的从源码角度分析ribbon的工作原理。 微服务准备 在该demo种,将会创建两个简单的服务,提供相同的接口,名称为spring-cloud-eureka-client-a 与spring-cloud…

9月 16, 2021 0条评论 597点热度 0人点赞 阅读全文

在之前章节中介绍了Eureka Server的启动流程,  该篇文章主要实现一个eureka server的简单demo, 便于在本地做调试。 创建项目 在本地中,创建一个maven项目, 具体的pom.xml配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan…

9月 15, 2021 0条评论 480点热度 0人点赞 阅读全文

在之前章节spring cloud 服务发现之Eureka Client(三)—DiscoveryClient 中介绍了Eureka 客户端在启动过程中的流程,在DiscoveryClient启动过程中,会有两个重要的定时任务: 发送心跳信息 从EurekaServer同步注册实例节点 这篇文章就主要介绍这两个定时任务的执行逻辑以及从源码角度分析代码实现,能够更好的理解和使用Eureka。 心跳任务 之前章节中介绍了在DiscoveryClient实例化过程中,心跳任务TimedSupervisorTask开始执行…

9月 10, 2021 0条评论 643点热度 0人点赞 阅读全文

在上篇文章spring cloud 服务发现之Eureka Client(二)—自动装配中,介绍了Eureka Client自动装配的过程,其中设计到几个比较重要的类,包括ServiceRegistry, EurekaClient, EurekaDiscoveryClient类型。这些类型在Eureka Client整个生命周期中充当这比较重要的角色,在今天这章节中,将主要介绍DiscoveryClient对象,该对象主要包括了一下几个步骤: 注册当前实例 从eureka server中获取实例列表 心跳启动 类结…

9月 7, 2021 0条评论 647点热度 0人点赞 阅读全文

在spring cloud 服务发现之Eureka Client(一)—客户端配置DEMO章节中介绍了如何快速的启动一个Eureka Client, 并将当前服务信息注册到Eureka Server中。在这篇文章中,将主要介绍在Eureka Client自动状态的过程中,需要执行那些过程,那些类是在启动过程中比不可少了。 这篇文章中,主要介绍通用的使用过程,其他的装配过程基本类似。 EnableDiscoveryClient 该类作为通用的服务发现客户端的启用类,可以用作不同的服务发现组件。该类源码如下: @Tar…

9月 6, 2021 0条评论 583点热度 0人点赞 阅读全文

这篇文章主要通过DEMO的方式启动一个微服务,并将服务注册到Eureka Server. Eureka Server为本地启动的服务信息,可以通过之前的文章查看启动过程,以及启动原理。 POM配置 pom配置主要配置了启动需要的依赖包信息, 具体代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200…

9月 4, 2021 0条评论 492点热度 0人点赞 阅读全文

Eureka Server本身在做服务注册时,客户端是否下线,是通过客户端向服务端发送心跳信息, 服务端一次来保证客户端处于UP状态。同时当客户端心跳发送失败时,这是服务端将通过自身的剔除策略,将处于DOWN状态下的服务从Registry中进行移除,保证服务可用性。 策略如何启用? 前面章节中,服务的启动过程中详细阐述了EurekaServer的启用过程, 其中有介绍到, 当EurekaServerBootstrap在执行initilize方法时,会启动evict定时任务,执行服务剔除操作,具体代码如下: prot…

8月 21, 2021 0条评论 418点热度 0人点赞 阅读全文

通过前面章节的介绍, 可以明确知道在InstanceRegistry初始化的时候, 会初始化ResponseCacheImpl的类,而这个类就是对于三级缓存的重要实现. 这章节主要介绍三级缓存的工作原理,以代码的形式明确三级缓存的实现。 三级缓存工作模式 缓存初始化 缓存对象初始化中, 对缓存初始化,具体源码如下: ResponseCacheImpl(EurekaServerConfig serverConfig, ServerCodecs serverCodecs, AbstractInstanceRegistr…

8月 18, 2021 0条评论 475点热度 0人点赞 阅读全文

在前面的文章中,介绍了Eureka Server的启动流程,以及启动过程中执行的操作信息。本章将会介绍服务注册相关的实现。服务注册中主要介绍Instance信息通过register的方式保存到Registry的业务逻辑,以及如何实现数据同步。 数据初始化 在spring cloud 服务注册之Eureka Server(二) – 启动过程章节中,介绍到Eureka Server启动过程中, 会从其他的Peer Nodes上同步Applications列表,并保存到当前的服务Registry服务中, 具体代码如下: …

8月 16, 2021 0条评论 462点热度 0人点赞 阅读全文

在Eureka Server自动装配文章中,介绍了Eureka相关的启动组件,这篇文章主要介绍在启动过程中,各组件都是如何工作的。 InstanceRegistry 从类型命名可以知道,该类型主要用于Instance信息注册实现,用于保存Eureka Client注册上来的基本信息。我们可以查看下InstanceRegistry的实现结构. InstanceRegistry中实现了PeerAwareInstanceRegistryImpl的实现,创建实例的源码如下: public InstanceRegistry(…

8月 15, 2021 0条评论 512点热度 0人点赞 阅读全文
12