博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二十六)java版spring cloud+spring boot 社交电子商务平台-Eureka介绍
阅读量:5788 次
发布时间:2019-06-18

本文共 2222 字,大约阅读时间需要 7 分钟。

电子商务平台源码请加企鹅求求:一零三八七七四六二六。社交电商平台源码请加企鹅求求:一零三八七七四六二六。 什么是Eureka ?

Eureka是一种用于服务注册和发现的组件,和zookeeper功能类似。Eureka最开始主要用在亚马逊的云计算平台AWS上。Eureka分为服务注册中心Eureka Server和客户端Eureka Client。

为什么选择Eureka

在springcloud中,可以选择Consul、zookeeper和Eureka作为服务注册和发现的组件,为什么选择了Eureka。主要有以下几个原因

Eureka是完全开源的,经过Netflix公司的几年实际使用,功能和性能都很稳定,可以放心使用

Eureka是springcloud首选推荐的服务注册与发现组件,和springcloud的其他组件可以很好地对接。Eureka和其他组件例如负载均衡组件Ribbon、熔断器组件Hystrix、熔断器监控组件Hystrix Dashboard组件、熔断器聚合监控Turbine组件,以及网关Zuul组件相互配合,容易实现服务注册、负载均衡、熔断和智能路由。这些组件被整合成springcloud Netflix组件,它是springcloud构建微服务的基础的组件。

Eureka的基本架构

主要有三种角色:

Register Service:服务注册中心,提供服务的注册和发现功能

Provider Service:服务提供者

Consumer Service:服务消费者

服务消费的基本过程如下:首先需要一个服务注册中心Eureka Server,服务提供者Eureka Client向服务注册中心Eureka Server注册,把自己的信息(例如服务的名称和服务和IP地址)通过REST API提交给服务注册中心Eureka Server。服务消费者Eureka CLient也向服务注册中心注册,同时服务消费者获取一份服务注册列表的信息,这个列表中包含了所有向注册中心注册的服务信息。获取服务注册列表之后,服务消费者就知道服务提供者的IP地址,可以通过Http远程调度来使用服务提供者的服务。

部分源码分析

在eureka-client模块下,com.netflix.discovery包下面,有DiscoveryClient实体类,它包含了一些方法负责eureka client向eurekaserver注册。EurekaClient继承了Lookupservice接口,DiscoveryClient实现了EurekaClient接口,.在DiscoveryClient中有个服务注册的方法,通过HTTP请求向Eureka server注册。

boolean register() throws Throwable {       logger.info(PREFIX + appPathIdentifier + ": registering service...");       EurekaHttpResponse
httpResponse; try { httpResponse = eurekaTransport.registrationClient.register(instanceInfo); } catch (Exception e) { logger.warn("{} - registration failed {}", PREFIX + appPathIdentifier, e.getMessage(), e); throw e; } if (logger.isInfoEnabled()) { logger.info("{} - registration status: {}", PREFIX + appPathIdentifier, httpResponse.getStatusCode()); } return httpResponse.getStatusCode() == 204; }复制代码

EurekaServer的功能实现在eureka-core模块中, EurekaBootstrap类在程序启动的时候最先被初始化。在EurekaBootstrap类中,调用PeerAwareInstanceRegistryImpl类,这个类中register()方法,完成服务注册,并且把服务注册后的信息同步到其他Eureka Server上 。

Renew服务续约:

服务注册和服务续约很相似,Eureka Client程序启动之后,服务注册开启,同时开启服务续约的定时任务。Eureka client每隔30秒向eureka Server发送一个心跳,续约服务,如果没有正常续约服务,Eureka Server就认为这个客户端不可用,默认情况下90秒之后,就从Eureka server的服务注册类表中把这个客户端删除。

服务续约功能也是在eureka-core这个模块里面实现的。

转载于:https://juejin.im/post/5cf0d4065188252d18205c63

你可能感兴趣的文章
springmvc+swagger2
查看>>
软件评测-信息安全-应用安全-资源控制-用户登录限制(上)
查看>>
我的友情链接
查看>>
Java Web Application 自架构 一 注解化配置
查看>>
如何 debug Proxy.pac文件
查看>>
Python 学习笔记 - 面向对象(特殊成员)
查看>>
Kubernetes 1.11 手动安装并启用ipvs
查看>>
Puppet 配置管理工具安装
查看>>
Bug多,也别乱来,别被Bug主导了开发
查看>>
sed 替换基础使用
查看>>
高性能的MySQL(5)创建高性能的索引一B-Tree索引
查看>>
oracle备份与恢复--rman
查看>>
图片变形的抗锯齿处理方法
查看>>
Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联
查看>>
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>