Spring Cloud——Eureka——架构体系

1、概述

Eureka包括两个端:

  • Eureka Server:注册中心服务端,用于维护和管理注册服务列表。
  • Eureka Client:注册中心客户端,向注册中心注册服务的应用都可以叫做Eureka Client(包括Eureka Server本身)。

在这里插入图片描述

Eureka官方wiki的架构图。

Eureka Server:表示注册中心集群

us-east-xxx:表示集群所在的区域

Application Service:表示服务提供者

Application Client:表示服务消费者

Eureka Client:表示Eureka客户端

如图所示,现在有三个区us-east-1c,us-east-1d,us-east-1e,每个区里都有一个Eureka Server集群,以及不定的Application Service和Application Client。

2、同区域的服务注册与调用过程

us-east-1c区域代表了同区域内的服务注册与调用过程。

  1. Application Service启动后向Eureka Server注册中心注册服务,包括IP、Port、服务名等信息。
  2. Application Client启动后从Eureka Server拉取注册列表。
  3. Application Client发起远程调用的时候优先调用本区域内的Application Service。如果本区内没有可用的Application Service,才会发起对其他区内的Service调用。

3、不同区域的服务注册与调用过程

三个区域us-east-1c,us-east-1d,us-east-1e结合在一起代表了不同区域内的服务注册与调用过程。

  1. us-east-1c内的Application Service启动后,向本区内的Eureka Server注册服务信息。并跟本区内的Eureka Server维持心跳续约。
  2. Eureka Server会将服务信息同步至相邻的us-east-1d的Eureka Server以及us-east-1e的Eureka Server
    us-east-1e内的Application Service启动后,向本区内的Eureka Server注册服务信息。并跟本区内的Eureka Server维持心跳续约。
  3. Eureka Server会将服务信息同步至相邻的us-east-1d的Eureka Server以及us-east-1c的Eureka Server
    us-east-1d内的Application Client启动后,从本区内的Eureka Server拉取注册列表。
  4. us-east-1d内的Application Client发起远程调用时,会先检索本区有没有可用的Application Service,如果没有就会通过某种算法调用us-east-1c或us-east-1e中的Application Service服务。

4、服务续约、下线、剔除

4.1 服务续约

Application Service内的Eureka Client后台启动一个定时任务,跟Eureka Server保持一个心跳续约任务,每隔一段时间(默认30S)向Eureka Server发送一次renew请求,进行续约,告诉Eureka Server我还活着,防止被Eureka Server的Evict任务剔除。

4.2 服务下线

Application Service应用停止后,向Eureka Server发送一个cancel请求,告诉注册中心我已经退出了,Eureka Server接收到之后会将其移出注册列表,后面再有获取注册服务列表的时候就获取不到了,防止消费端消费不可用的服务。

4.3 服务剔除

Eureka Server启动后在后台启动一个Evict任务,对一定时间内没有续约的服务进行剔除。

值得注意的是,注册、续约、下线的请求默认优先选择本区域内的Eureka Server,只有当本区内的Eureka Server都不可用,才会选择其他区的Eureka Server。

4.4 服务通讯方式

服务间使用标准的REST方式通讯,所以Eureka服务注册中心并不仅适用于Java平台,其他平台也可以纳入到服务治理平台里面。只不过其他平台需要根据协议实现不同的客户端。目前已知实现的有net、nodejs、python。

5、拓展

源码解析:
https://blog.csdn.net/neosmith/article/details/53131023

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐.neter常用优秀开源项目系列之二

.net社区有很多优秀的开源项目,我们今天再推荐12个开源项目;1. Domain-Driven-Design-ExampleDDD 示例 挺不错的。github https://github.com/zkavtaskin/Domain-Driven-Design-Example2.SmartStoreNET开源的电商项目github https://github.com/smartsto…

Zookeeper: Zookeeper架构及FastLeaderElection机制

本文转发自技术世界,原文链接 http://www.jasongj.com/zookeeper/fastleaderelection/ 一、Zookeeper是什么 Zookeeper是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。 这一切的基础&am…

与时俱进 | 博客现已运行在 .NET Core 3.0 及 Azure 上

点击上方蓝字关注“汪宇杰博客”导语9月23日,微软正式发布了 .NET Core 3.0,这个版本具有大量新功能和改进。我也在第一时间将自己的博客网站更新到了 .NET Core 3.0,并且仍然跑在微软智慧云 Azure 国际版的应用服务上。本文总结了我在博客迁…

Zookeeper:基于Zookeeper的分布式锁与领导选举

本文转发自技术世界,原文链接 http://www.jasongj.com/zookeeper/distributedlock/ 1、Zookeeper特点 1.1 Zookeeper节点类型 如上文《Zookeeper架构及FastLeaderElection机制》所述,Zookeeper 提供了一个类似于 Linux 文件系统的树形结构。该树形结构…

Asp.Net Core Mvc Razor之RazorPage

在AspNetCore.Mvc.Razor命名空间中的RazorPage继承RazorPageBase,并定义的属性为:HttpContext Context 表示当前请求执行的HttpContextRazorPageBase定义为抽象类,并继承了接口:IRazorPageIRazorPage接口定义属性如下:…

Spring Cloud——Consul——架构体系

我们知道,Eureka 2.X因遇到问题,已停止研发。Spring Cloud官方建议迁移到Consul或者Zookeeper等其他服务发现中间件。 下面是 Spring Cloud 支持的服务发现软件以及特性对比: 一、Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具&…

ASP.NET Core 3.0 gRPC 双向流

目录ASP.NET Core 3.0 使用gRPCASP.NET Core 3.0 gRPC 双向流ASP.NET Core 3.0 gRPC 认证授权一.前言在前一文 《二. 什么是 gRPC 流gRPC 有四种服务类型,分别是:简单 RPC(Unary RPC)、服务端流式 RPC (Server streami…

开源公司被云厂商“寄生”,咋整?

上周 OSS Capital 召集一些开源公司,组织了一场关于如何面对“云厂商给开源带来的危害”的会议。OSS Capital 是一家风险投资公司,该公司只投开源,其董事会合伙人之一是开源运动的先驱人物 Bruce Perens。网上有一个十分有名的“开源商业化独…

Spring Cloud Config——原理解析

springCloud config项目,用来为分布式的微服务系统中提供集成式外部配置支持,分为客户端和服务端 可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。 spring官方如下介绍: 简而言之: 通过配置服务(Config Server)来为所有的环境和应用提供外部配…

AWS加入.NET Foundation企业赞助商计划

.NET 走向开源,MIT许可协议。 微软为了推动.NET开源社区的发展,2014年联合社区成立了.NET基金会。.NET基金会是一个独立的组织,支持.NET社区和开源,旨在拓宽和加强.NET生态系统和社区。这可以通过多种方式完成,包括项目…

Spring cloud——Hystrix 原理解析

1、背景 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可…

【B】替换 Quartz.net 默认使用的 MySql.Data 为 Mysqlconnector 的学习过程

文章转载授权级别:B无论是 Quartz.net 还是 MySql.Data 都是我们比较熟悉的库了,Quartz.net 如果配置为使用 MySql 数据库做持久化时,默认是硬编码了使用 MySql.Data 来操作 MySql 数据库的。下面是我的一些个人诉求和实践,和大家…

APM(应用性能管理)与Dapper原理介绍

一、APM(应用性能管理) 1.1 什么是APM? APM (Application Performance Management) 即应用性能管理(应用性能监控) APM主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠…

asp.netcore3.0 使用 DbProviderFactories 连接数据库

在.netstandard2.0时 System.Data.Common 这个包里并没有加入DbProviderFactoriesDbProviderFactories类在.netframework中是非常重要的存在,依靠他可以适配各种数据库客户端(sqlserver、mysql、sqllite等)创建数据库连接。现在可以像.netframework中一样…

MIT 6.824 Lab 1 MapReduce

MapReduce 目标 根据论文所说明的,有MASTER和WORKER两类工作节点,以下实现大都按照论文所说的实现,但是在对MASTER的实现上有所改动: MASTER向WORKER发送心跳检测,这里改为了对分配出去的任务进行超时监控。 MASTER…

大家在寻找的高级程序员到底是什么样子的?

你好,我是Z哥。这篇文章主题很简单,就是一个很常见的话题“什么是高级程序员?”。文章稍微长了些,但是很容易阅读。我们的中国文化,对“面子”看的特别重,所以你会发现身边到处都是高级XXX,听着…

优秀的程序员是那种过单行线马路都要往两边看的人

最近一周帮我以前一个同事推荐工作,顺便了解下行情,我这个同事我感觉还行,技术不说有多好,但是往年绝对不至于简历筛选时被刷掉那种,最先开始推给了一个我比较信任的HR手里,她兼职猎头,推给这个…

【为自己相亲】单身小姐姐你在哪里,我是书豪,我在等你

笔者简介Introduction书豪:【人工智能爱好者社区】公众号负责人《R数据科学实战:工具详解与案例分析》书籍作者。 你没看错这是书豪在给自己寻觅良缘如果你有,或者身边的朋友有兴趣请与我联系基本信息 出生日期:1995年5月身高&am…

知道的越多,越感觉自己渺小

作者:猛哥,关注技术和人文发展的程序员,架构师社区合伙人芝诺说:“人的知识就像一个圆,圆圈外是未知的,圆圈内是已知的,你知道的越多,你的圆圈就会越大。圆的周长也就越大&#xff0…

.NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 行为不一致问题及解决办法

行为不一致.NET Core 3.0 新出了个内置的 JSON 库, 全名叫做尼古拉斯 System.Text.Json - 性能更高占用内存更少这都不是事...对我来说, 很多或大或小的项目能少个第三方依赖项, 还能规避多个依赖项的依赖 Newtonsoft.Json 版本不一致的问题, 是件极美的事情.但是, 结果总不是不…