springcloud gateway ribbon使用_初识springcloud(上)

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Eureka基本规则

· 服务启动时会生成服务的基本信息对象InstanceInfo,然后在启动时会register到服务治理中心。

· 注册完成后会从服务治理中心拉取所有的服务信息,缓存在本地。

· 之后服务会被30s(可配置)发送一个心跳信息,续约服务。

· 如果服务治理中心在90s内没有收到一个服务的续约,就会认为服务已经挂了,会把服务注册信息删掉。

· 服务停止前,服务会主动发送一个停止请求,服务治理中心会删除这个服务的信息。

· 如果Eureka Server收到的心跳包不足正常值的85%(可配置)就会进入自我保护模式,在这种模式下,Eureka Server不会删除任何服务信息。

配置

1. Eureka Server

(1) 利用spring脚手架

v2-ba0cf88f2cea726501c8101af6628ec1_b.png

创建eureka,选择Spring Cloud Discovery中的Eureka Server

(2) 编写配置文件:application.yml

v2-0fa2a2e56c2cbfe62a7d9f4b6bd1520d_b.jpg

(3) 启动类添加 @EnableEurekaServer

2. Eureka Client

(1) 利用spring脚手架

v2-ba0cf88f2cea726501c8101af6628ec1_b.png

创建eureka,选择Spring Cloud Discovery中的Eureka Discovery Client

(2) 编写配置文件:application.yml

v2-ae47bf5917807b1f07c69c30f84477ad_b.jpg

(3) 启动类添加 @EnableDiscoveryClient

Feign的目标

feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。

使用

l 注册两个微服务:Provider和Consumer

l 实现Consumer对Provider的接口调用

Provider创建服务方法

在provider 中添加UserService类,提供login()方法

Consumer进行调用准备

在consumer中添加Feign依赖

在consumer中创建针对UserServic的调用接口

为接口添加@FeignClient注解并指定name属性值(被调用服务在Eureka Server的名称)

l 在consumer中通过接口调用provider的login()方法

l 在consumer的启动类添加@EnableFeignClients注解

Hystrix的设计原则

l 防止任何单独的依赖耗尽资源(线程)过载立即切断并快速失败,防止排队

l 尽可能提供回退以保护用户免受故障

l 使用隔离技术(例如隔板,泳道和断路器模式)来限制任何一个依赖的影响

l 通过近实时的指标,监控和告警,确保故障被及时发现

l 通过动态修改配置属性,确保故障及时恢复

l 防止整个依赖客户端执行失败,而不仅仅是网络通信

v2-bff709cc402c8b5864a5a1694da93502_b.jpg

使用

l 为Provider中的接口创建容错处理类

n 实现Provider接口(在feign接口基础上进行实现类的编写)

l 为Consumer中的调用接口指定容错处理类

n 通过@FeignClient注解的fallback属性

v2-15e0c605be78b5cd393b02cce82eba30_b.png

l 在Consumer中添加配置开启容错

n feign.hystrix.enabled=true

v2-47a8eb57ee6c51735ac007a69be8f5f8_b.png

Ribbon是什么?

Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后面的所有机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。

使用

l 如果项目中已经添加“spring-cloud-starter-eureka-server”依赖,则已经包含了Ribbon,所以不用再单独引入。

l 否则添加以下依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

l 确保多个相同服务的名称相同,ribbon会自动生效(默认为轮询策略),如:

v2-2cf36f4f351eece4f62020769ff08ee2_b.jpg

负载均衡常用策略

如果默认轮询不足以满足需求则参考以下策略

v2-2bd56b4811d94827e65bd140f5b5fd03_b.jpg

策略设置:

v2-c56bff9870c70f65649ba6b3b757baa3_b.png

其他负载均衡策略均定义在com.netflix.loadbalancer包中,可以根据需要选择合适的策略

什么是Zuul

Zuul是Spring Cloud全家桶中的微服务API网关。

所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:

l 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。

l 性能监测 在服务边界追踪并统计数据,提供精确的生产视图。

l 动态路由 根据需要将请求动态路由到后端集群。

l 压力测试 逐渐增加对集群的流量以了解其性能。

l 负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。

l 静态资源处理 直接在边界返回某些响应。

使用

l 创建项目

l 添加Zuul依赖

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka</artifactId>

<version>1.3.5.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-zuul</artifactId>

<version>1.3.5.RELEASE</version>

</dependency>

l 修改配置application.yml指定服务端口、Eureka Server地址等信息

spring:

application:

name: dm-gateway-zuul

server:

port: 7600

eureka:

client:

service-url:

defaultZone: http://root:123456@localhost:7776/eureka/

l 启动类添加注解

@EnableZuulProxy

l 配置路由

微服务名: 映射路径

zuul:

routes:

dm-user-consumer: /user/**

dm-item-consumer: /item/**

dm-order-consumer: /order/**

dm-base-consumer: /base/**

dm-pay-consumer: /pay/**

dm-scheduler-consumer: /scheduler/**

dm-file-consumer: /file/**

dm-item-search: /search/**

strip-prefix: false

l 测试

通过浏览器(或postman等)访问网关:如localhost:7600/user/login

�޿��-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值