0


springcloud-Eureka注册中心

如果你要理解这个技术博客博客专栏 请先学习以下基本的知识:

  • 什么是微服务
  • 什么是服务拆分
  • 什么是springcloud

Springcloud为微服务开发提供了一个比较泛用和全面的解决框架,springcloud继承了spring一直以来的风格——不重复造轮子,里面很多的组件都是将其他其他开源组件改造集成进来。
在众多的组件当中 我们先从springcloud修炼——Eureka注册中心开始吧

服务调用

为了照顾新手 我们先重申一个基本的概念 就是服务调用。

在当前流行的软件微服务架构中,一个系统会被拆分成多个小系统 我们称为多个服务,比如外卖系统 我们拆为 前台A 订餐B 付款C 送货D

他们直接相互调用 相互回应,一个服务既可以是服务调用者 也可以是服务提供者

设想一个简单的场景:

A调用B ,

第一A怎么获取B服务的地址? 如果写死在代码里面 比如123.122.13.1:8080 这样会很死板,而且B服务可能有很多个实例服务器
A怎么知道要调哪一个?
还有如果B的一个服务器突然挂掉了 那怎么让A知道 这个服务器不能用?

是不是很头大?

Eureka就是为了解决这些奇葩问题

Eureka

在这里插入图片描述

Eureka是一个服务注册中心,服务注册这个词 之前在各种七七八八的集群架构里面经常听到,它是一个管理者 一个管家。总揽全局。

当你需要调用某个方法获取一些数据,就不是调自己的service方法,而是远程调其他项目的服务。

由此 就有了 服务的调用者 和提供者。 为了方便整洁的管理这些七七八八各样的服务(每个服务可能即使提供者又是消费者,它调用其他的服务,也为其他项目提供服务) 就有了服务注册中心。

简单理解就是 所有的服务都在注册中心 登记造册,这样方便管理 也方便寻找。

回到上一节里面那个A调用B的问题里面

A怎么知道B的地址: 答 B把自己的所有服务的地址注册到Eureka server中 A自己去Eureka中找
B的一个服务器挂了怎么办? 答Eureka会有心跳检测 如果B的一个服务器挂了 就把他下线


实践

在这里插入图片描述
我们创建三个项目 两个相互调用的服务 和一个 eureka服务,对于eureka来说 这两个服务都是它的客户端,
我们先部署启动eureka服务端:

三步走 依赖 启动类 配置文件

<!--eureka服务端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>@EnableEurekaServer@SpringBootApplicationpublicclassEurekaApplication{publicstaticvoidmain(String[] args){SpringApplication.run(EurekaApplication.class, args);}}

server:
  port:10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

启动成功之后:
在这里插入图片描述

现在我们部署两个客户端 以userservice为例 另一个同理:

server:
  port:8081
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

这里两个要点 第一 application.name 就是注册到eureka的名字 让eureka认识你

第二就是 eureka服务器的地址 就是我们刚才本地启动的那个地址

启动成功之后发现 就注册上去了
在这里插入图片描述
。。

ok两个都注册好了 现在关键来了。

正常情况下如果要调用另一个服务userservice 我们用restTemplate要知道具体地址:localhost:8081

// 2.利用RestTemplate发起http请求,查询用户// 2.1.url路径String url ="http://localhost:8081/user/"+ order.getUserId();// 2.2.发送http请求,实现远程调用User user = restTemplate.getForObject(url,User.class);// 3.封装user到Order

现在不需要了 服务的调用方和被调用方已经注册到了eureka,我们只需要用服务名 userservice

// 2.1.url路径String url ="http://userservice/user/"+ order.getUserId();// 2.2.发送http请求,实现远程调用User user = restTemplate.getForObject(url,User.class);

restTemplate内部已经封装了这个过程——根据服务名

  1. 先看看当前服务有没有配置eureka 如果没有那gg
  2. 如果配置好了 就去eureka服务器 去问问 有没有一个叫 userservice的服务在这里注册 我要调用它

这样eureka的作用就体现出来了

当然后面我们的博客中会介绍更多方便的远程调用方式,但是主要的是大家要理解

eureka到底是做什么的 它在微服务中扮演一个什么样的角色 以及你的服务要注册eureka 怎么样配置

标签: eureka java 云原生

本文转载自: https://blog.csdn.net/weixin_43966468/article/details/131903711
版权归原作者 vcaml7717 所有, 如有侵权,请联系我们删除。

“springcloud-Eureka注册中心”的评论:

还没有评论