微服务-Netflix
文章平均质量分 52
关于springcloud中Netflix的一套微服务
Denial_learn
个人博客,以个人实例或技术为主!如有不喜,请勿喷。
展开
-
Zuul 的异常处理和熔断降级
Zuul 的异常处理Spring Cloud Zuul 对异常的处理是非常方便的,但是由于 Spring Cloud 处于迅速发展中,各个版本之间有所差异,本案例是以 Finchley.RELEASE 版本为例, 来说明 Spring Cloud Zuul 中的异常处理问题。首先我们来看一张官方给出的 Zuul 请求的生命周期图:正常情况下所有的请求都是按照 pre、route、post 的顺序来执行,然后由 post 返回 response在 pre 阶段,如果有自定义的过滤器则执行自定义的过原创 2021-08-30 18:09:08 · 950 阅读 · 0 评论 -
Zuul过滤器
限流、权限验证、记录日志过滤器 (filter) 是zuul的核心组件,zuul大部分功能都是通过过滤器来实现的。 zuul中定义了4种标准过滤器类型,这些过滤器类型对应于请求的典型生命周期。 PRE:这种过滤器在请求被路由之前调用。可利用这种过滤器实现身份验证、在 集群中选择请求的微服务、记录调试信息等。 ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服 务的请求,并使用 Apache HttpClient或Netfilx Ribbon请求微服务 POST:这种过滤器原创 2021-08-30 17:56:26 · 748 阅读 · 0 评论 -
Zuul路由、实现过程和测试
Zuul的概念和作用:Zuul包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,过滤功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础;Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的信息,也即以后的访问微服务都是通过Zuul跳转后获得。路由实现过程:第一步: 项目加入依赖:<!--spring-cloud-starter-n原创 2021-08-30 17:45:45 · 336 阅读 · 0 评论 -
feign整合hystrix
feign 默认是支持hystrix的,但是在Spring cloud Dalston 版本之后就默认关闭了, 因为业务需求不一定要使用;所以现在要使用首先得打开他,在yml文件加上如下配置:feign.hystrix.enabled=true加上配置之后降级方法怎么写呢?@FeignClient(value="34-SPRINGCLOUD-SERVICE-GOODS", fallback = GoodsRemoteClientFallBack.class)public interface Go原创 2021-08-24 16:17:52 · 676 阅读 · 0 评论 -
Hystrix的异常处理和限流
Hystrix的异常处理我们在调用服务提供者时,服务提供者可能抛出异常,我们自己也可能抛异常,默认情况下方法抛了异常会自动进行服务降级,交给服务降级中的方法去处理;当我们自己发生异常后,只需要在服务降级方法中添加一个 Throwable 类型的 参数就能够获取到抛出的异常的类型,如下:public ResultObject fallback(Throwable throwable) { System.out.println(throwable.getMessage()); return原创 2021-08-24 16:01:42 · 1243 阅读 · 0 评论 -
Hystrix的实现
第一步: 添加依赖<!-- spring-cloud-starter-netflix-hystrix --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>第二步: 在入口类中使用 @E原创 2021-08-24 15:39:58 · 187 阅读 · 0 评论 -
Hystrix熔断器
Hystrix是什么?Hystrix被称为熔断器,它是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多服务之间通过远程调用实现信息交互,调用时不可避免会出现调用失败,比如超时、异常等原因导致调用失败,Hystrix能够保证在一个服务出问题的情况下,不会导致整体服务失败,避免级联故障(服务雪崩),以提高分布式系统的弹性;熔断器也有叫断路器,他们表示同一个意思,最早来源于微服务之父 Martin Fowler 的论文 CircuitBreaker 一文。“熔断器”本身是一种开关装置,用于在电原创 2021-08-24 15:03:34 · 660 阅读 · 0 评论 -
Feign的实现
使用 Feign 实现消费者第一步:创建普通 Spring Boot 工程把接口放在通用的接口层、常量类、model的项目中第二步:添加依赖 :要添加的依赖主要是 spring-cloud-starter-netflix-eureka-client 和 spring-cloud-starter-feign,如下:<!-- spring-cloud-starter-openfeign --><dependency> <groupId>org.springfr原创 2021-08-24 14:39:07 · 1085 阅读 · 0 评论 -
Feign的概念和作用
Feign 是什么?Feign 是 Netflix 公司开发的一个声明式的 REST 调用客户端; (调用远程的restful风格的http接口 的一个组件)调用组件其实很多,比如:Httpclient(apache)Httpurlconnection (jdk)restTemplate(spring)OkHttp(android)Feign (Netflix) --> 实现非常优雅Spring Cloud Feign 对 Ribbon负载均衡进行了简化,在其基础上进行了进一步的封原创 2021-08-24 11:09:10 · 6131 阅读 · 0 评论 -
Ribbon负载均衡策略以及重写
Ribbon 负载均衡策略Ribbon 的负载均衡策略是由 IRule 接口定义, 该接口由如下实现:在jar包:com.netflix.ribbon#ribbon-loadbalancer中;要使用ribbon实现负载均衡,在Spring 的配置类里面把对应的负载均衡接口实现类作为一个Bean配置一下就行了;负载均衡的入口:ILoadBalancer接口如果要切换负载均衡策略:@Beanpublic IRule iRule(){ return new RoundRobinRule()原创 2021-08-18 22:20:47 · 507 阅读 · 0 评论 -
Ribbon负载均衡的使用和调用
采用Ribbon实现服务调用第一步:首先加入ribbon的依赖,但是eureka已经依赖了ribbon,所以这里不需要再引用ribbon的依赖;第二步:要使用ribbon,只需要一个注解:@Bean@LoadBalancedpublic RestTemplate restTemplate(){ RestTemplate restTemplate = new RestTemplate(); return restTemplate;}在RestTemplate上面加入 @Lo原创 2021-08-18 22:11:09 · 111 阅读 · 0 评论 -
Ribbon负载均衡
Ribbon是什么?(Spring Cloud Netflix) -->大量使用了Netflix公司的开源项目(Spring Cloud Alibaba)–>大量使用了Alibaba公司的开源项目Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡器;我们通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行,负 载均和分为硬件负载均衡和软件负载均衡: 硬件负载均衡:比如 F5、深信服、Array 等; 软件负载均衡:比如原创 2021-08-18 22:05:20 · 176 阅读 · 0 评论 -
Eureka的注册中心自我保护机制和常见配置
自我保护机制是 Eureka 注册中心的重要特性,当 Eureka 注册中心进入自我保护模式时,在 Eureka Server 首页会输出如下警告信息:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE原创 2021-08-18 21:41:07 · 518 阅读 · 0 评论 -
Eureka 与 Zookeeper 的较量
著名的 CAP 理论指出,一个分布式系统不可能同时满足 C(一致性)、A(可用性) 和 P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在 A 和 C 之间进行权衡,在此 Zookeeper 保证的是 CP, 而 Eureka 则是 AP。p 全称:Partition tolerance (分区容忍)主要是指网络问题, 比如:A 、B、C 三台机器之间相互ping不通、网络不通,这种情况在分布式系统里面是允许的,也是很有可能发生的,我们要容忍这种情况的出现,在这种情况出现的时候原创 2021-08-11 22:34:35 · 86 阅读 · 0 评论 -
Eureka的运用(服务、注册和发现)
1. 搭建与配置 Eureka 服务注册中心第一步: 创建SpringBoot项目,并且添加相关依赖第二步: 添加eureka的依赖<!--Spring Cloud 的 eureka-server 起步依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server&原创 2021-08-11 22:23:00 · 487 阅读 · 0 评论 -
Eureka服务注册
Spring Cloud 支持得最好的是Eureka,其次是Consul,再次是Zookeeper。1. 什么是服务注册?注册服务:将服务所在主机、端口、版本号、通信协议等信息登记到注册中心上。2. 什么是服务发现服务发现:服务消费者想注册中心请求已经登记的服务列表,然后得到某个服务的主机、端口、版本号、通信协议等信息,从而实现对具体服务的调用。3. Eureka是什么?Eureka 是 Netflix 的子模块之一,也是一个核心的模块,Eureka 采用C-S(客户端/服务端)的设计架构,也就原创 2021-08-11 21:30:53 · 188 阅读 · 0 评论 -
Spring Cloud 与 Spring Boot 的兼容版本
Spring Cloud 版本Spring Boot 版本Hoxton2.2xGreenwich2.1xFinchley2.0xEdgware1.5xDalston1.5xCamden1.4x 或 1.5xBrixton1.3x 或 1.4xAngel1.2x原创 2021-08-10 22:31:19 · 98 阅读 · 0 评论 -
Spring Cloud 概要(What,特性,版本)
1. What is Spring Cloud?出自官方:官网入口Spring Cloud为开发人员提供了一些工具用来快速构建分布式系统中的一些常见模式和解决一些常见问题(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态)。分布式系统的协调导致了很多样板式的代码(很多固定套路的代码),使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地运行,包括开发人员自己的笔记本电脑、裸机数据中心和原创 2021-08-10 22:19:09 · 148 阅读 · 0 评论 -
论述微服务和分布式
集中式框架、分布式框架和微服务概要:在系统架构与设计的实践中,从宏观上可以总结为三个阶段: 集中式架构:就是把所有的功能、模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务(单体架构、单体服务、单体应用);直白一点:就是只有一个项目,只有一个war; 分布式架构:就是把所有的功能、模块拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作共同对外提供服务。 微服务:微服务是系统架构上的一种设计风格,主旨是将一个原本独立的系统拆分成对各小型的服务,这些小型服务都可以独自在进程中原创 2021-08-10 21:56:45 · 584 阅读 · 0 评论