目录:
一、微服务概述 二、spring cloud 技术栈三、springcloud-服务治理四、负载均衡(Ribbon)五、熔断保护(Hystrix)六、 Feign七、服务网关(Zuul) 八、总结回顾
1.1:什么是微服务
为适应企业的业务发展,提高软件研发的生产力,降低软件研发的成本,软件架构也作了升级和优化,将一个独立的系统拆分成若干个小的服务,每个小服务运行在不同的进程中,服务与服务之间采用http轻量协议传输数据,每个服务所拥有的功能具有独立性强、低耦合的特点,这样的设计就实现了单个服务的高内聚,服务与服务之间的低耦合效果,这样一个一个的小服务就是微服务,基于这种设计的系统架构即微服务架构。
1.2:微服务的优点
1.单一职责功能,每个服务都很简单,只关注于一个业务功能
2.每个微服务独立的开发,部署
3.每个单体应用不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。
4.易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务
5.改善故障隔离。一个服务宕机不会影响其他的服务
1.3:微服务的缺点
1.增加运维成本
2.隐式接口(修改一个服务的接口,所有关联的服务都要做调整)
3.增加测试成本
4.重复劳动
5.分布式系统的复杂性
1.4:微服务系统架构图解
二、Spring Cloud技术栈
1:微服务技术栈
2.2:Spring Cloud是什么
2.3:Spring Cloud 技术栈
3.1:什么是服务治理?
3.2:Eureka server 与 Eureka client
3.3:Eureka 服务治理调用过程
1.服务提供方会向Eureka server进行注册,然后每30秒(默认值)会向Eureka server发送一
次心跳告诉Eureka server“我还活着”,而如果Eureka server在90秒(默认值)没有收到
服务提供方发送的心跳则会根据配置对无效的服务进行剔除或保留。
3.4:Eureka server 代码实现
3.4.1:新建一个springboot工程并在 pom 文件中添加依赖
3.4.2:配置 application 文件
3.4.3:在启动类中添加@EnableEurekaServer注解支持
完成这一步之后,一个 eureka 服务治理的服务端就已经搭建完毕了。
eureka-server UI 界面:
3.5:Eureka Client 代码实现
3.5.1:添加 jar 包依赖
3.5.2:配置 application 文件
3.5.3:在启动类中添加服务发现注解支持
注解使用场景:
@EnableDiscoveryClient:适用多个服务治理组件如:eureka、consul、zookeeper等
@EnableEurekaClient:只能在 eureka 作为服务治理时使用
3.6:多台 Eureka-server 的情况:
需要保持相同的服务名称 并且 eureka-server 之间相互注册,实现高可用。
4.1:Ribbon 介绍
4.2:Ribbon 的执行流程:
4.3:Ribbon 的使用
4.3.1:添加依赖
4.3.2:在启动类中注入 RestTemplate并添加@LoadBalanced注解
4.3.3:将要被调用的服务的方法
第一台服务:
第二台服务:
4.3.4:使用 RestTemplate 进行调用
1.注入 RestTemplate 实例
2.通过 RestTemplate 实例调用相应的 get/post 方法,以服务名的方式进行接口调用
5.1:什么是容错保护
容错保护是指微服务在执行过程中出现错误并从错误中恢复的能力。微服务容错性不好很容易导致雪崩效应。微服务的雪崩效应表现在服务与服务之间调用,当其中一个服务无法提供服务可能导致其他服务也宕掉,比如:登录服务调用用户信息服务查询用户信息,由于用户信息服务无法服务导致登录服务一直等待,导致关联的服务在调用登录服务时都处于一直等待的状态而无法提供服务即是微服务的雪崩效应。
5.2:Spring Cloud Hystrix
5.3:Hystrix 的使用
5.3.1:添加jar包依赖
5.3.2:在启动类中添加@EnableHystrix注解支持
5.3.2:在调用接口的方法上指定容错的处理方法
1.注入RestTemplate实例
2.使用restTemplate时通过服务名的方式进行调用
3.在接口调用的方法上方添加@HystrixCommand并指定容错处理方法,容错处理方法的返回
值必须和原被调用的方法返回值类型保持一致
6.1:Feign 的介绍
Spring Cloud Feign是基于Netflix feignFeign是开发的声明式、模板化的HTTP客户端并且整合了Spring Cloud Ribbon和Spring Cloud Hystrix,Feign可以帮助我们更快捷、优雅地调用HTTP API。
通常在企业中服务与服务之间调用一般都是使用 feign 的方式进行调用的,这样便于管理和维护,也对调用了什么系统的哪些接口一目了然。
6.2:Feign 的应用
6.2.1:引入jar包依赖
6.2.2:开启容错保护支持,设置为false时,调用出错时容错方法不会执行
6.2.3:在启动类上添加@EnableFeignClients注解支持
6.2.4:定义feign接口并指定容错处理的方法
1.注解 @FeignClient 中的value值为调用服务的服务名,fallbackFactory指定容错处理类
3.当服务调用出错时,一般都会打印报错信息
6.2.4:使用定义的feign接口调用
7.1:什么是服务网关
服务网关是在微服务前边设置的一道屏障,请求先到服务网关,网关会对请求进行过滤、
校验、路由等处理。有了服务网关可以提高微服务的安全性,校验不通过的请求将被拒绝访
问。
前面介绍的Ribbon和Feign的负载均衡调用可以不用经过网关,因为这些调用属于微服务
与微服务内部之间的调用,而对于那些对外提供服务的微服务,比如:登录,则必须经过网
关来保证微服务的安全。
7.2:Spring Cloud Zuul 介绍
Spring Cloud Zuul 是整合 Netflix 公司的Zuul开源项目实现的微服务网关,它实现了
请求路由转发(根据不同的请求转发到不同的服务)、负载均衡、校验过滤等功能,Ribbon
属于对内的微服务而Zuul是属于对外提供的微服务。
Zuul网关,不仅提供对外服务访问,微服务也可以通过zuul请求其他微服务。
Zuul 对请求转发图解:
7.3:Spring Cloud Zuul 的使用
7.3.1:引入jar包依赖
7.3.2:配置路由
7.3.3:定义一个filter类继承ZuulFilter,对请求进行检验拦截
1.filterType()方法指定过滤器的生命周期,包括 pre(在请求被路由之前调用)、route
(在请求被路由时调用)、post(在route和error过滤器之后被调用)、error(处理请求发
生错误时被调用)。
2.filterOrder()方法设置执行顺序,数字越大,优先级越低。
3.shouldFilter()方法设置过滤器是否开启
4.在run()方法中编写具体的校验规则,如:校验登录token,对指定请求路径放行等
7.3.3:在启动类中添加@EnableZuulProxy注解支持
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/79283.html