什么是服务发现与服务注册

简单的来说就是一个微服务要调用另一个微服务,就必须知道这个微服务的地址及端口信息。采用一张注册表,注册上线可用的微服务及相关信息,微服务则从注册表上查找所需的其它微服务的相关信息。有两种主要的服务发现模式:客户端服务发现(client-side discovery)和服务器端服务发现(server-side discovery)愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三

客户端发现

服务端服务发现

当发送请求到一个service的时候,客户端发送请求到一个router,这个router是在一个已知的地址上运行的。router查询service registry(可能在这个router中实现), 然后把请求发送到可用的service实例。如下所示:

服务发现组件的功能

服务注册表  服务注册表是一个记录当前可用服务实例的网络信息的数据库,是服务发现机制的核心。服务注册表提供查询API和管理API,使用查询API获得可用的服务实例,使用管理API实现注册和注销; 服务注册  服务注册:服务启动时,将服务的网络地址注册到服务注册表中; 健康检查  服务发现组件会通过一些机制定时检测已注册的服务,如果发现某服务无法访问了(可能是某几个心跳周期后),就将该服务从服务注册表中移除。 服务发现组件:Eureka

Eureka是客户端发现类型的服务发现模式 Eureka来自生产环境 Spring Cloud对Eureka支持很好

上图是来自Eureka官方的架构图,大致描述了Eureka集群的工作过程。  Eureka有两个概念,区域(Region)与可用区(Zone),不太理解,先抄过来占个位置。

区域(Region):

AWS云服务在全球不同的地方都有数据中心,比如北美、南美、欧洲和亚洲等。与此对应,根据地理位置我们把某个地区的基础设施服务集合称为一个区域。通过AWS的区域,一方面可以使得AWS云服务在地理位置上更加靠近我们的用户,另一方面使得用户可以选择不同的区域存储他们的数据以满足法规遵循方面的要求。美东(北佛吉尼亚)、美西(俄勒冈)、美西(北加利佛尼亚)、欧洲(爱尔兰)、亚太(新加坡)、亚太(东京)等。每个区域都有自己对应的编码,如:编码对应 可用区(Zone):

AWS的每个区域一般由多个可用区(AZ)组成,而一个可用区一般是由多个数据中心组成。AWS引入可用区设计主要是为了提升用户应用程序的高可用性。因为可用区与可用区之间在设计上是相互独立的,也就是说它们会有独立的供电、独立的网络等,这样假如一个可用区出现问题时也不会影响另外的可用区。在一个区域内,可用区与可用区之间是通过高速网络连接,从而保证有很低的延时。AWS的区域与可用区的关系示意如下图所示:可用区  每次当用户需要使用EC2相关资源的时候,他需要首先选择目标区域,如美东(北佛杰尼亚)us-east-1。然后在创建EC2实例的时候,用户可以选择实例所在的可用区,比如可以是us-east-1a或us-east-1b等。可用区的编码就是区域后面顺序添加不同的英文字母。 Eureka在springcloud中的使用

Eureka包含两个组件:Eureka Server 和 Eureka Client。

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。 Eureka Client是一个Java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。 在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。 Eureka Server之间将会通过复制的方式完成数据的同步。 Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。 综上,Eureka通过心跳检测、健康检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

整体代码结构如下: 资料和源码来源

java B2B2C电子商务平台分析之十五-----EureKa服务注册与发现相关推荐

  1. SpringCloud(五)Eureka服务注册与发现

    Eureka基础知识 什么是服务治理   SpringCloud 封装了 NetFlix公司开发的Eureka模块来实现服务治理   在传统的rpc远程调用框架中, 管理每个服务与服务之间依赖关系比较 ...

  2. java B2B2C电子商务平台分析之十一------配置中心和消息总线

    Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点.这会用在广播状态的变化(例如配置变化)或者其他的消息指令.Spring bus的一个核心思想是通过 ...

  3. java B2B2C电子商务平台分析之八--配置中心svn示例和refresh

    国内很多公司都使用的svn来做代码的版本控制,我们先介绍以下如何使用svn+Spring Cloud Config来做配置中心.愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 svn版本 ...

  4. 《深入理解 Spring Cloud 与微服务构建》第十二章 服务注册和发现 Consul

    <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发现 Consul 文章目录 <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发 ...

  5. java版电子商务spring cloud分布式微服务b2b2c社交电商 (十四)服务注册(consul)

    Springcloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.这篇文章主要介绍 spring cloud consul 组件,它是一个提供服务发现和配置的工具.consul ...

  6. b2b2c 电子商务平台涉及的技术、运营方案

    一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...

  7. SpringCloud+SpringBoot b2b2c 电子商务平台涉及的技术、运营方案

    一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...

  8. springboot微服务 java b2b2c电子商务系统(一)服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  9. java常见面试考点(二十五):CAS是什么

    java常见面试考点 往期文章推荐:   java常见面试考点(二十):Elasticsearch 和 solr 的区别   java常见面试考点(二十一):单点登录   java常见面试考点(二十二 ...

最新文章

  1. merge-two-smerge-two-sorted-listsorted-lists
  2. 第四次作业,孙保平034
  3. 【设计模式:单例模式】使用单例模式加载properties文件
  4. laravel5单元测试
  5. 清远职业技术学院php,清远职业技术学院2020招生录取分数线
  6. 【Java教程系列】JavaSE核心知识点总结
  7. linux上搭载was应用上传中文文件,受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明...
  8. 生成逼真3D人偶,居然不用3D形状建模,还能学会你的舞步 | 三星CVPR Oral
  9. 看清喽别迷糊 英特尔本CPU型号之乱
  10. 元素周期表排列的规律_元素周期表的元素排列规律和元素的性质
  11. JAVA的3DES加密代码转成oc_iOS之DES加密
  12. CSS中 定位position 和 transform 移动元素的比较
  13. 2021 2022年终回顾:山河无恙,烟火寻常
  14. 抓住机会,敢于尝试——第一次讲解ppt
  15. 2022年金属非金属矿山(地下矿山)安全管理人员特种作业证考试题库模拟考试平台操作
  16. 微信小程序快速入门+四个实战小程序(一)——入门准备
  17. 智禾教育:什么是纠纷退款率,对店铺会产生哪些影响
  18. quartus ii 9.0连接驱动程序USB blaster驱动安装
  19. LiveGBS国标GB/T28181国标视频平台报警消息查询配置报警订阅
  20. 大数据从何学起?大数据脑图+学习路线清晰的告诉你!

热门文章

  1. JavaScript变量作用域和内存问题(js高级程序设计总结)
  2. 在JavaScript中使用json.js:访问JSON编码的某个值
  3. TCGA免疫浸润评价数据库,TIMER 2.0 使用指南
  4. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析
  5. java ee 分页_【JavaEE】JavaEE分页实践
  6. 使用Anaconda完全替代官方Python
  7. 遇到tensorflow has no attribute 问题
  8. 开发实践 | 使用Android开发TCP、UDP客户端(代码类)
  9. 学会对mysql的增删改查_Go实现对MySQL的增删改查
  10. 嵌入式系统的知识体系、学习误区及学习建议