Eureka组件

Eureka是Netfilx开源的服务发现组件,本身是一个基于rest的服务,它包含client和server两部分。
Spirng Cloud将它集成在子项目Spirng Cloud Netfilx中,从而实现服务的注册和发现

1.eureka中的server和client的介绍及特点

Eureka Server:提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息例如(IP,端口
号,服务名称等),Eureka会存储这些信息
Eureka Client:是一个java的客户端用来简化Eureka Server的交互
微服务启动后会周期性的(默认30秒)向Eureka Server发送心跳,如果Eureka在规定的时间没有收到心跳,
则会注销该实例(默认90秒)
Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势首先可以降低Eureka Server的压力,其次
当所有的Eureka Server宕机服务调用方依然可以完成调用

2.服务注册与服务发现

服务注册:当微服务client启动时,向Eureka Server发起注册,并上报该节点的相关信息
服务发现:client从Eureka Server获取注册信息,然后发起调用

3.Eureka Server开发

1.引入springcloud的相关依赖
主项目引入

 <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

Eureka Server pom

  <!--eureka server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

2.入口类的开发

//@EnableDiscoveryClient //不仅支持Eureka作为注册中心还支持zookeeper
@EnableEurekaServer //只支持Eureka
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}}

3.配置文件

# 应用名称
spring.application.name=eureka-server
#端口号
server.port=8761
#开启IP优先
eureka.instance.prefer-ip-address=true
#设置eureka server 的交互地址,之后的服务获取和服务注册都需要依赖于这个地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
#表示是否将自己注册到eureka上
eureka.client.register-with-eureka=false
#表示是否从eureka server上获取注册信息
eureka.client.fetch-registry=false

4.Eureka Client 服务消费者

1.pom

 <!--eureka-client--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

2.入口类

@EnableEurekaClient
@SpringBootApplication
public class EurekaConsumerApplication {public static void main(String[] args) {SpringApplication.run(EurekaConsumerApplication.class, args);}}

3.配置文件

# 应用名称
spring.application.name=eureka-consumer
# 应用服务 WEB 访问端口
server.port=8762
#开启IP优先
eureka.instance.prefer-ip-address=true
#开启注册
eureka.client.register-with-eureka=true
#开启抓取
eureka.client.fetch-registry=true
#注册地址
#注册中心的地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

5.Eureka Client 提供者

eureka-producter-client1
1.pom

<!--eureka-client--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

2.入口类

@SpringBootApplication
@EnableEurekaClient
public class EurekaProducterClient1Application {public static void main(String[] args) {SpringApplication.run(EurekaProducterClient1Application.class, args);}}

3.配置文件

eureka.client.service-url.defaultZone=http://localhost:8761/eureka
spring.application.name=eureka-producter
server.port=8763

创建服务提供者2eureka-producter-client2 port改为8764

6.Eureka的健康监测

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
management.endpoint.health.show-details=always

访问 http://localhost:8762/actuator/health

7.openfeign远程调用

1.pom

  <!--openfeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--netflix-hystrix--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>

2.入口类

@EnableEurekaClient
@EnableFeignClients
@EnableHystrix
@SpringBootApplication
public class EurekaConsumerApplication {public static void main(String[] args) {SpringApplication.run(EurekaConsumerApplication.class, args);}}

3.配置文件

#日志
logging.level.com.example.eurekaconsumer.feign.TestFeign=debug
#为feign开启断路器
feign.hystrix.enabled=true

4.openfeign服务类

@Component
@FeignClient(value = "EUREKA-PRODUCTER",fallback = FeignClientFallBack.class)
public interface TestFeign {@RequestMapping("/feign/test")String testFeign(@RequestParam("name") String name);
}

5.服务降级

@Component
public class FeignClientFallBack implements TestFeign{@Overridepublic String testFeign(String name) {return "Fallback相当于是降级操作 服务降级处理是在客户端实现完成的!"+name;}
}

6.服务提供类接口
eureka-producter-client1

@RestController
@RequestMapping("feign")
public class FeignController {@RequestMapping("test")public String test(String name){System.out.println("===================");return "hello client 8763:"+name;}
}

eureka-producter-client2

@RestController
@RequestMapping("feign")
public class FeignController {@RequestMapping("test")public String test(String name){return "hello client 8764:"+name;}
}

7Ribbon负载均衡

Ribbon 的负载均衡策略

RoundRobinRule 轮训策略 按顺序循环选择 Server
RandomRule 随机策略 随机选择 Server
AvailabilityFilteringRule 可用过滤策略 会先过滤由于多次访问故障而处于断路器跳闸状态的服
务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
WeightedResponseTimeRule 响应时间加权策略 根据平均响应的时间计算所有服务的权重,响应时间越
快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息
足够会切换到
RetryRule 重试策略 先按照RoundRobinRule的策略获取服务,如果获取失败则在
制定时间内进行重试,获取可用的服务。
BestAviableRule 最低并发策略 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服
务,然后选择一个并发量最小的服务

默认为轮询策略
1.配置文件

EUREKA-PRODUCTER.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

3.测试
http://localhost:8762/feign/test?name=666

Spirng Cloud Netfilx相关推荐

  1. Spring Cloud NetFilx学习

    Spring Cloud NetFilx 文章目录 Spring Cloud NetFilx 一.学习前言 二..微服务概述 2.1 什么是微服务? 2.2 微服务与微服务架构 2.3 微服务优缺点 ...

  2. Spring Cloud Netfilx Ribbon(负载均衡工具)

    一.介绍 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的 ...

  3. Spring Cloud Netfilx Eureka(服务发现工具)

    一.架构 (1)单体架构 单体架构就是一个项目里面包含这个项目中全部代码.一个应用程序完成全部功能的实现. 优点 部署简单.维护方便.开发成本低. 缺点 当项目规模大.用户访问频率高.并发量大.数据量 ...

  4. Spring Cloud Netfilx Zuul : API网关服务

    Spring Cloud Zuul 是Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的API网关使用,支持动态路由与过滤功能,本文将对其用法进行详细介绍. 1.Z ...

  5. spring cloud netfilx

    Netfilx听起来微服务很高大上,但是做起来时因为有了框架,所以只是简单的注解和类就可以搞定了. 一.Eureka配置需要配公共的访问地址,引入server和client包,server需要禁用自身 ...

  6. Spirng Cloud 中gateway 网关限流和熔断

    分流:原先数据库只放一个服务器,无论多少个都只能访问这个服务器,访问不了就排队(延迟)(如果同一时间也高并发了那就限流) 限流:同一时间限制访问的人数 限流的算法 漏桶算法:把请求放到一个容器中,控制 ...

  7. java feign同时传对象和其他参数_关于Spirng Cloud的Feign传参问题:

    Feign传参注意: 使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意: 1. 当参数比较复杂时, ...

  8. spirng cloud docker部署

    一.docker环境安装 使用 APT 安装 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改.因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书. $ sudo ap ...

  9. 【Java学习路线之JavaWeb】Spring Cloud教程(非常详细)

    文章目录 读者 阅读条件 微服务是什么 微服务,我们可以从字面上去理解,即"微小的服务",下面我们从"服务"和"微小"两个方面进行介绍. 微 ...

最新文章

  1. Java知识点总结(JavaIO-合并流类)
  2. oracle创建自增
  3. python散点图拟合曲线-python 绘制拟合曲线并加指定点标识的实现
  4. maven重新指定仓库存储路径
  5. Linux学习笔记-使用gdb调试
  6. 如何让apache支持3gp下载
  7. svn 提交 working copy is not up-to-date
  8. Openfiler---开源存储管理平台
  9. Ionic开发App中重要的部分
  10. 31.go 函数式编程
  11. 51nod 范德蒙矩阵
  12. 【Python 实战基础】如何绘制关系网格图展示8个节点间的关系
  13. linux驱动程序的测试,Linux驱动学习笔记(4)字符设备驱动测试
  14. HiveException: xx with newer attempt ID 1 is smaller than the file xx with with older attempt ID 0
  15. css 点击事件击穿
  16. Keil 5(MDK 5)中的 Pack Installer下载不了库文件包的解决替代方法(在Keil官网下载Packs库文件)
  17. VB 从零开始编外挂(完整实践版)
  18. 打印机种类与对应的耗材
  19. maven 设置本地仓库
  20. unix常用操作命令

热门文章

  1. Python 数据获取(五)—— 获取客户端渲染方式数据
  2. CANopen2.0-SYNC
  3. 文件的上传和下载(一)
  4. 某简壁纸(ob混淆,js逆向)
  5. Agv、Rgv 车辆控制调度系统开发第二篇
  6. 纯软件程序员向嵌入式系统工程师转型时需注意的问题
  7. 开放api接口签名验证
  8. 国密SM2的证书制作及验证
  9. 多点触控 - MFC
  10. RabbitMQ交换机(扇出模式、直接模式)学习笔记