Spring Cloud 【微服务】

目录

一:SpringCloud概述

二:SpringCloud(SpringBoot)如何构建微服务项目

三:SpringCloud的服务发现和注册的组件(作用阿里的Nacos) Spring Cloud 的各个组件说明

 四:Ribbon:负载均衡客户端,需要结合RestTemplate(HttpClient)进行服务的调用

五:Feign   Feign默认集成了Ribbon,用它来管理服务(管理controller配置的路径) 

六:Hystrix  熔断限流的组件

七: GateWay 网关组件

八: Ribbon和Feign区别

 Spring Cloud 注意的细节

注意: 配置Feign,以及Rabbion的配置类上, 一定不能被springboot的引导类扫描到.


一:SpringCloud概述


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


二:SpringCloud(SpringBoot)如何构建微服务项目
 

创建一个父级项目:
统一springboot, springcloud的版本
创建一个子级项目:公共类的子级项目
统一维护其它自己项目要用到类
创建一个子级项目: 数据源的子级项目
创建一个网关的子级项目: GateWay
创建一个业务的子级项目: service
比如:
==商品业务的子级项目
==订单业务的子级项目
==秒杀业务的子级项目
创建一个业务接口的子级项目: openFeign
比如:
==商品业务接口的子级项目
==订单业务接口的子级项目
==秒杀业务接口的子级项目
创建一个用户访问入口的子级项目: web
SpringCloud构建的微服务项目之间的调用关系(执行流程)
用户通过客户端访问—>web入口---->GateWay子级项目 ---->openFeign子级项目—>service子级项目—>数据库
 

 

三:SpringCloud的服务发现和注册的组件(作用阿里的Nacos) Spring Cloud 的各个组件说明

1.注册中心 : Eureka server, 负责"保存"的服务(服务指的service子级项目的controller配置路径)
2.生产者: Eureka Client, 负责将服务发送到注册中心,由注册中心负责保存.
3.消费者: Eureka Client, 作用: 用户就是消费者,在客户端输入访问地址(地址服务),如果在注册中心由服务,就去访问,
4.如果在注册中心没有改服务,就报404
总结: 注册中心, 生产者, 消费者 三者之间的关系,以及通过心跳机制来管理服务


 

 四:Ribbon:负载均衡客户端,需要结合RestTemplate(HttpClient)进行服务的调用

默认的负载均衡:轮询
服务器启动时,先从Eureka server获取服务列表,然后在请求微服务时,通过RestTemplate进行http调用
自定义访问策略
实现步骤: 自定义一个类, 实现Rule接口,那么我们自定义的类就是一个策略类(代码里面就是算法,确定访问方式)
方式一: 在定义的类上面加上@Configuration这个注解(注意: 该配置类不能被springboot扫描到)
方式二:在全局配置文件application.yml配置 策略类.
 

五:Feign   Feign默认集成了Ribbon,用它来管理服务(管理controller配置的路径) 

Feign可以通过@FeignClient 注解标识一个接口,通过该接口生成一个代理类来进行远程的微服务调用 

六:Hystrix  熔断限流的组件


为了防止微服务直接调用时,由于某一个微服务宕机导致整个项目无法访问(雪崩现象),这里采用Hystrix来阻断对存在宕机,异常情况的请求,直接本地返回

1)Ribbon集成,首先引入相关的依赖,接着开启@EnableHystrix
接着在调用微服务方法上添加 @HystrixCommand(fallbackMethod = “hiError”)指定服务异常的之后本地执行的方法
2)Feign集成,在微服务绑定的接口@FeignClient(value = “service-hi”,fallback = SchedualServiceHiHystric.class)中指定异常时调用本地接口实现
判定失败:Hystrix会在某个服务连续调用N次不响应的情况下,立即通知调用端调用失败,避免调用端持续等待而影响了整体服务,执行本地业务。
恢复服务:Hystrix间隔时间会再次检查此服务,如果服务恢复将继续提供服务。Hystrix间隔几秒会让其中一个请求去调用远程微服务,如果调用成功,就表示服务正常,后面就重新链接
开路 断路


七: GateWay 网关组件


GateWay (网关):
GateWay的主要功能是路由转发和过滤器。路由功能是微服务的一部分,
比如/api/user转发到到user服务,/api/shop转发到到shop服务。GateWay默认和Ribbon结合实现了负载均衡的功能。
作用:限流处理,认证和授权,单点登录,日志管理等等
GateWay的位置:
客户端发送请求---------所有请求------->GateWay网关: 路由分发----------->openFeign: 远程调用-------->service业务

 

八: Ribbon和Feign区别


Ribbon添加maven依赖 spring-starter-ribbon 使用@RibbonClient(value=“服务名称”) 使用RestTemplate调用远程服务对应的方法

feign添加maven依赖 spring-starter-feign 服务提供方提供对外接口 调用方使用 在接口上使用@FeignClient(“指定服务名”)

Ribbon和Feign的区别: Ribbon和Feign都是用于调用其他服务的,不过方式不同。

启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。
服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。


 Spring Cloud 注意的细节


注意: 配置Feign,以及Rabbion的配置类上, 一定不能被springboot的引导类扫描到.
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值