SpringBoot 变装 SpringCloud 大佬

如何计划拆分成 springboot cloud 微服务的初步设计计划。

图解有利于各位在学习中进行参考和理解!

SPringCloud 的核心主件的流程图,希望可以帮助到大家。

整个调用流程:

1.首先每个服务启动的时候都需要往注册中心进行注册。

2.用户先对网关发起下单请求,网关收到请求后发现呃,是下单操作,要到订单系统,然后把请求路由到订单系统。

3.订单系统啪啦啪啦一顿操作,然后通过Feign去调用库存系统减库存,通知仓储服务发货,调用积分系统加积分。

4.在发起调用之前,订单系统还得通过Ribbon去注册中心去拉取各系统的注册表信息,并且挑一台机器给Feign来发起网络调用。

Spring Cloud 是一个全家桶式的技术栈,包含了很多组件。先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是 Eureka、Ribbon、Feign、Hystrix、Zuul 这几个组件

Eureka/Consul/Zookeeper:服务发现 (根据情况选择一个,eureka 已经宣布闭源)

Hystrix:断路器

Zuul:智能路由

Ribbon/Feign:客户端负载均衡 (Feign 用的更多)

Turbine&hystrix-dashboard:集群监控 Springcloud-config:远程获取配置文件

如果使用Spring Cloud来实现,需要哪些组件?

Eureka:

首先,我们需要一个注册中心Eureka,主要负责每个服务的注册和发现。

每个微服务中都有一个Euraka client组件,专门负责将这个服务的服务id(serviceId)、ip、端口等信息注册到Eureka server中。

Euraka Server是一个注册中心,该组件内部维护了一个注册表,保存了各个服务所在的机器ip和端口号等信息。

Feign:

其次每个服务还需要一个远程服务调用的组件Feign,他主要负责与其他服务建立连接,构造请求,然后发起请求来调用其他服务来获取数据。

Ribbon:

然后我们一个服务可能会部署很多台机器,那么我们使用Feign去调用这个服务的时候,到底把请求发送到哪台机器上去呢?此时我们就需要一个组件来根据一定的策略来选择一台机器。不管怎么选的,总之得选一台机器给Feign去调用就好了。

这个组件就是Ribbon,Ribbon主要负责就是负载均衡。Ribbon会定期去从Eureka注册中心拉取注册中心,缓存到本地,每次发起远程调用的时候,Ribbon就会从Eureka注册表拉取下来的数据中挑选一个机器让Feign来发起远程调用。

Zuul:

我们这么多的微服务,如果一个服务一个IP,使用方都需要进行调用的话,是不是得知道每一个服务的IP地址才行呢?那得记住多少才行呀,多不好管理。

Spring Cloud也给我们提供了一个组件,那就是Zuul,他是一个网关,就是负责网络的路由的。每个请求都经过这个网关,我们还可以做统一鉴权等等很多事情SSDN@写程序的小王叔叔

Hystrix:

还有一个东西也得说一下,就是Hystrix,它是一个隔离、熔断以及降级的一个框架。

在微服务的相互调用过程中,可能会出现被调用服务错误或者超时的情况,从而导致整个系统崩溃不可用,也就是我们常说的服务雪崩问题,Hystrix的存在就是为了解决这种问题的。

异常:eureka No mapping for GET /eureka/js/wro.js

网上的方法都是:

给 config 增加了/config 访问前缀

spring.resources.add-mappings=true

最后我的解决方法是:

spring.resources.add-mappings=true

经验分享 程序员 微信小程序 职场和发展