Spirng Cloud Netfilx
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相关推荐
- Spring Cloud NetFilx学习
Spring Cloud NetFilx 文章目录 Spring Cloud NetFilx 一.学习前言 二..微服务概述 2.1 什么是微服务? 2.2 微服务与微服务架构 2.3 微服务优缺点 ...
- Spring Cloud Netfilx Ribbon(负载均衡工具)
一.介绍 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的 ...
- Spring Cloud Netfilx Eureka(服务发现工具)
一.架构 (1)单体架构 单体架构就是一个项目里面包含这个项目中全部代码.一个应用程序完成全部功能的实现. 优点 部署简单.维护方便.开发成本低. 缺点 当项目规模大.用户访问频率高.并发量大.数据量 ...
- Spring Cloud Netfilx Zuul : API网关服务
Spring Cloud Zuul 是Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的API网关使用,支持动态路由与过滤功能,本文将对其用法进行详细介绍. 1.Z ...
- spring cloud netfilx
Netfilx听起来微服务很高大上,但是做起来时因为有了框架,所以只是简单的注解和类就可以搞定了. 一.Eureka配置需要配公共的访问地址,引入server和client包,server需要禁用自身 ...
- Spirng Cloud 中gateway 网关限流和熔断
分流:原先数据库只放一个服务器,无论多少个都只能访问这个服务器,访问不了就排队(延迟)(如果同一时间也高并发了那就限流) 限流:同一时间限制访问的人数 限流的算法 漏桶算法:把请求放到一个容器中,控制 ...
- java feign同时传对象和其他参数_关于Spirng Cloud的Feign传参问题:
Feign传参注意: 使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意: 1. 当参数比较复杂时, ...
- spirng cloud docker部署
一.docker环境安装 使用 APT 安装 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改.因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书. $ sudo ap ...
- 【Java学习路线之JavaWeb】Spring Cloud教程(非常详细)
文章目录 读者 阅读条件 微服务是什么 微服务,我们可以从字面上去理解,即"微小的服务",下面我们从"服务"和"微小"两个方面进行介绍. 微 ...
最新文章
- Java知识点总结(JavaIO-合并流类)
- oracle创建自增
- python散点图拟合曲线-python 绘制拟合曲线并加指定点标识的实现
- maven重新指定仓库存储路径
- Linux学习笔记-使用gdb调试
- 如何让apache支持3gp下载
- svn 提交 working copy is not up-to-date
- Openfiler---开源存储管理平台
- Ionic开发App中重要的部分
- 31.go 函数式编程
- 51nod 范德蒙矩阵
- 【Python 实战基础】如何绘制关系网格图展示8个节点间的关系
- linux驱动程序的测试,Linux驱动学习笔记(4)字符设备驱动测试
- HiveException: xx with newer attempt ID 1 is smaller than the file xx with with older attempt ID 0
- css 点击事件击穿
- Keil 5(MDK 5)中的 Pack Installer下载不了库文件包的解决替代方法(在Keil官网下载Packs库文件)
- VB 从零开始编外挂(完整实践版)
- 打印机种类与对应的耗材
- maven 设置本地仓库
- unix常用操作命令