【微服务】134:SpringCloud

作者: 刘小爱 | 来源:发表于2020-09-08 16:23 被阅读0次

今天是刘小爱自学Java的第134天。

感谢你的观看,谢谢你。

image

学习内容安排如下:

  • SpringCloud的接触。

  • 利用SpringCloud搭建微服务架构,当然这个估计要3天时间才能完成,今天主要是注册中心Eureka的学习。

一、SpringCloud

微服务是一种系统架构方式,最终肯定需要技术架构去实施,我们使用的就是SpringCloud了,不用多说,看名称都知道又是Spring旗下的一个项目。

所以对于Java开发来说,spring真是个绕不开的坎,哪里都有它。

image

其主要涉及的组件包括,Netflix:

  • Eureka:注册中心

  • Zuul:服务网关

  • Ribbon:负载均衡

  • Feign:服务调用

  • Hystix:熔断器

这几天依次学习这些知识点。

二、Eureka:注册中心

顾名思义,注册中心的作用在于服务的管理,记录服务提供者的信息。

1Eureka服务端

所有的服务都要在Eureka服务端上注册,那如何让一个SpringBoot应用成为Eureka服务端呢?

image

①引入eureka服务端依赖

这个依赖非常长,记2个核心点:

  • starter启动器的意思.

  • erueka-server对应erueka的服务端,有服务端肯定也会有客户端。

②启动类开启eureka服务

@EnableEurekaServer,看这个注解的意思就能知道是开始前eureka服务。

也就是说该SpringBoot引用被作为了euerka服务端,也就是前面说的管理服务的注册中心。

image

③配置注册中心地址

这里就是指它自己,这是什么意思呢?

eureka服务端是专门用来管理服务的,所有的服务都要在它这个注册,而它本身也是一个服务,所以需要自己注册自己。

④给服务命名

这个也好理解,application翻译是应用,在这里也就是一个服务,给它命名为eureka-server。

2Eureka客户端:服务的注册

比如user-service这个服务是用来查询和user相关数据的,将该服务注册,让其它服务都可以直接调用它。

image

①引入eureka客户端依赖

一样的,2个核心点:

  • starter启动器的意思。

  • erueka-client对应erueka的客户端。

②启动类开启eureka客户端

@EnableEurekaClient,同理确实也是有这个注册的,开启eureka客户端。

不过这里使用@EnableDiscoveryClient,它功能要更加地强大。

3Eureka客户端:服务的发现

上述服务注册了,那另外的服务要直接使用它,就称之为服务的发现。

既然是服务,肯定也需要先完成注册,一样的步骤:导入依赖,启动类上添加客户端注解。

image

DiscoverClient:也就是启动类上注解配置的客户端。

RestTemplate:这个昨天详细学习过,通过它可是实现服务之间的调用。

①拉取服务

通过discoverClient的getInstances()方法可以拉取指定的服务。

②负载均衡

利用负载均衡获取其中的一个服务,因为我们这里总共就只有一个服务,所以不需要利用负载均衡。

这个文章结尾会详细讲述到。

③字符串占位符

通过restTemplate的getForObject()方法可以向指定的url发起get请求。

通过String的format()方法实现拼接,将后面的ip,端口和id拼接到%s这个占位符中。

4服务的调用测试

上述配置完成后,就可以通过consumer-demo这个服务,调用user-service这个服务了。

image

根据id去数据库查询对应的用户,我们只在user-service服务中实现了service层和dao层的代码编写。

如果在consumer服务中要用,直接调用user-service服务即可。

三、Eureka详解

Eureka架构中的三个核心角色:

image

①服务注册中心

Eureka的服务端应用,提供服务注册和发现功能,也就是上述的eureka-server。

②服务提供者

提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格服务即可。

也就是上述实现的user-service。

③服务消费者

消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方,也就是我们实现的consumer-demo。

2服务续约

image

lease-renewal-interval-in-seconds

服务续约的间隔,默认为30秒,renewal本身就是续约的意思。

lease-expiration-duration-in-seconds

服务失效时间,默认值90秒,expiration本身就是终结的意思

也就是说,默认情况下每个30秒服务会向注册中心发送一次心跳,证明自己还活着。

如果超过90秒没有发送心跳,EurekaServer就会认为该服务GG了,会从服务列表中移除。

这两个值在生产环境不要修改,默认即可。

3负载均衡Ribbon

在刚才的案例中,我们启动了一个user-service,通过DiscoveryClient来获取服务实例信息,获取ip和端口来访问。

但是实际环境中,往往会开启很多个user-service。

此时我们获取的服务列表中就会有多个,到底该访问哪一个呢?

Eureka中已经帮我们集成了负载均衡组件:Ribbon,简单修改代码即可使用。

image

①开启负载均衡

通过@LoadBanlanced注解即可开启负载均衡。

开启之后,就可以直接使用了。

image

②url编写

开启负载均衡,url中的ip和端口直接使用服务的名称使用即可。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

相关文章

网友评论

    本文标题:【微服务】134:SpringCloud

    本文链接:https://www.haomeiwen.com/subject/vejpsktx.html