Spring Cloud注册中心引申及介绍

实际场景

比如用户系统中存在一个接口,底层实际调用的是订单服务的一个远程接口。
在这里插入图片描述

一、原生调用

默认情况下,若是不引用任何其他技术,原生去调用,那么就会直接使用HTTP的restTemplate

什么是RestTemplate?
传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。
详细可点击:什么是RestTemplate
进行阅读

比如代码如下:
在这里插入图片描述

存在的问题

这种是可以调通的,但是呢,存在以下问题
若订单系统服务器设置了多台,那么需要如何调用做到负载均衡呢?
在这里插入图片描述

图上,订单系统有多个实例,这里需要如何调用呢?
如果还是这样写:
在这里插入图片描述
永远只会调到一个机器实例。

那怎么改造可以使得调用不同的服务器呢?,引申出Nginx配置

二、Nginx配置调用

在早些年,微服务架构还流行的时候,一些大型的电商网站对后台服务已经进行了拆分,没有好的微服务架构的支撑,当时就是在服务中间添加了Nginx。

若某个子系统有多个服务器实例,则在Nginx中配置一个大的域名(比如多个订单系统的服务器域名为orde.com),对于这些域名在Nginx中进行负载均衡的转发配置(把订单微服务所有的服务器IP都映射到这个域名下面)。
那么在用户子系统中只需调用对应的域名,就会由Nginx将请求转发到每一台机器。

配置Nginx实际调用如下:
在这里插入图片描述

存在的问题

用Nginx配置解决也存在问题,比如
1)没有错误检测
2)稳定性下降
3)配置繁琐
比如大的电商系统,到了大促的时候(每年双11),需要加很多机器,而且是几倍几倍增加。后端有几十甚至上百个微服务,每个微服务有一二十台机器,那么就意味着需要修改很多个Nginx的配置,而且大促一旦结束之后,马上就需要把多加的机器下线关掉,就有需要修改Nginx的配置,然后重启,是非常麻烦的,运维工作量太大了。

三、Spring Cloud

到这里需要解决的最大的问题,就是负载均衡的问题,包括加服务器或者减服务器Nginx都要改配置重启,非常麻烦。

所以现在几乎没有公司在用Nginx来做后端子系统之间的交互
在没有流行微服务架构的时候,没有办法才使用了Nginx,现在一般来说都不会再用,而是选择微服务架构(比如Spring Cloud)

在微服务架构中,引入了服务注册中心,主要是用来存储各个服务器的信息。
所有服务在启动的时候,会调用服务注册中心的接口,将本身的IP信息写入,在其他微服务需要调用的时候,则会先从注册中心将对应的服务IP列表拿到本地,然后再逐台自己实现负载均衡的逻辑,逐台调用

那么存在以下疑问:
要是再加服务器的话怎么办?
回答:加完服务器之后,肯定是需要启动的,那么在启动的时候,就会把自己的机器信息写到到服务注册中心对应的注册表,只要注册好之后,其他调用的服务会有相应的机制,动态获取服务列表,就可以调用到了。
在这里插入图片描述

服务注册中心简单搭建介绍

服务注册中心也是个web服务,当微服务系统启动时会调用服务注册中心对外提供的接口,把自己的机器信息写到对应的注册表中,所以服务注册中心在启动的时候也要指定Tomcat端口(内嵌的也是Tomcat启动)

重要注解:
@EnableEurekaServer
加了这个注解之后就会调用底层jar包的很多功能。

Eureka这个Spring Cloud注册中心处理配置启动的端口,还有需要配置对外发布服务的根访问地址
在这里插入图片描述

注册中心已经有了,服务子系统在启动的时候怎么把自己的信息传给注册中心呢?
回答:在服务子系统中处理引入SpringBoot的依赖包之外,还需要增加依赖包:spring-cloud-starter-netflix-eureka-client(也就是注册中心对应的客户端)。
在这里插入图片描述
客户端增加服务注册地址
Spring Cloud注册中心引入了Eureka的server端,实际上服务子系统对于server端来说都是注册中心的客户端,所有需要引入客户端。引入之后需要在客户端配置文件中增加注册地址

地址是Eureka的server那边对外提供接口的统一地址,作为客户端最后要把信息传给服务注册中心,要调用到对外的接口,这里就是配置接口地址的地方
在这里插入图片描述

客户端增加服务名称

客户微服务在启动的时候把自己的一些信息传到Eureka的server端,还需要告诉Eureka,当前的这个客户微服务实例对应系统的整个服务的名称。
比如:
在这里插入图片描述
客户端相互调用
在这里插入图片描述
调用的时候参数URL就是调用在配置文件中设置的应用名称。
底层最终调用实际上就是从Eureka注册中心通过应用名称找到对应机器列表的地址,就可以知道要调用的微服务的所有机器列表实例,就可以在本地轮询去调用,每次调用一台机器。
实际的注册表信息如下图
在这里插入图片描述
微服务搭建步骤简要总结
①、引入注册中心
②、所有微服务都加上Eureka客户端的jar包
③、注册信息
④、每个微服务之间使用注册的服务名称相互调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值