SpringCloud 学习总结 学习回顾 1.Maven依赖管理
在微服务项目中,我们一般是先创建一个父项目模块对整个项目的依赖进行版本限定和依赖控制,子模块继承父模块后,不需要再考虑版本和依赖问题,只需要引入相对应的依赖即可。那么在父模块的pom文件中我们可以使用以下标签来对依赖进行管理和版本控制。
<properties></properties> <dependencyManagement></dependencyManagement> 标签用于对部分需要指定版本的依赖进行版本限定。
标签用于引入依赖,并且进行版本控制和引入管理。设置好后,因为Springboot里自带了常用依赖的版本号,所以子模块引入依赖不需要提供版本号,只需关注在依赖引入上。
2.微服务中服务消费者和服务提供者的关系
概念:
服务提供者:被其他微服务的调用的微服务。
服务消费者:调用其他服务的微服务。
服务提供者就是指处理用户需求业务,并且提供数据和反馈的微服务应用。而服务消费者就是接收用户的需求后调用消费者来进行用户的需求。
用户->服务消费者->服务提供者 这样一个流程。
3.服务注册和服务发现 在微服务项目中,我们不再是指定某一个IP地址,某一个端口来进行服务调用,而是通过服务中心,来获取能够提供服务的机器的地址。举个栗子:我们可以拿服务中心比作我们的小区物管,拿微服务应用来比作便利店,假如便利店要进驻小区,那么必须要先向物管注册,然后才能够正常营业。而我们想要找到便利店首先要先问物管,物管告诉你便利店在哪,你就能直接找到。
微服务提供者要先通过服务注册向服务中心注册,然后服务消费者通过服务名向服务中心获取能够提供服务的地址。
服务发现就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。
服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去
4.服务调用 消费者通过注册中心获取服务提供者的信息后调用提供者,那么这种调用就是服务调用。目前常用的服务调用的工具有Ribbon和OpenFeign,Ribbon是一个客户端负载均衡调用的工具。Ribbon默认的负载均衡的算法为轮训算法,我们也能够通过编写自己的算法来替代轮训算法,通过Ribbon,我们可以负载均衡的调用服务中心上已注册的服务提供者。
5.服务降级,熔断 服务降级:系统有限的资源的合理协调
概念:服务降级一般是指在服务器压力剧增的时候,根据实际业务使用情况以及流量,对一些服务和页面有策略的不处理或者用一种简单的方式进行处理,从而释放服务器资源的资源以保证核心业务的正常高效运行。
服务熔断:应对雪崩效应的链路自我保护机制。可看作降级的特殊情况。
概念:应对微服务雪崩效应的一种链路保护机制,类似股市、保险丝
其实服务降级和熔断不是很细分的话,可以看作一个整体,服务熔断是机制,服务降级是手段。
设想一个情况,假如服务A调用B,服务B调用C,那么如果服务C出现异常,那么服务B的请求得不到响应,那么服务B的资源会被消耗殆尽,导致服务A也出现问题,这种就是雪崩效应,由于上游的问题,导致下游压力过大。那么这种时候就需要类似于我们生活中的保险丝一样的功能,当某个服务出现异常或响应慢等情况达到某个阈值,就会触发熔断,那么所有的请求都将不可用,等正常了,再关闭"保险丝",恢复正常的请求调用。
更细看的话,熔断机制能够运行起来,也是因为通过服务降级这个手段。
6.服务网关