实现Eureka服务注册和服务发现,你学会了吗?

开发 前端
同样的,orderService项目中有一个接口是根据order表的ID查询order信息,在一条信息中包含了单价,数量,总价和用户的ID。

分布式

在大型开发项目中通常使用分布式服务来根据项目中不同的功能划分为几个不通的模块。

比如在一个商城系统中,通常会把用户服务、下单服务、商品推荐服务分散到几个模块中,如果在下单服务中需要获取用户的信息,这时候就在代码内部调用用户服务的接口即可。这样一个过程就是分布式的基本概念。

Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

--以上内容来自百度百科。

图片图片

来自官网列举的主要项目

所以,Spring Cloud是一款主流的分布式服务框架,提供了服务注册与调用,统一配置管理,统一网关路由,服务链路监控等功能。并且在远程调用是支持Feign(HTTP)协议。

服务远程调用

3.1 创建两个项目

创建两个项目模拟分布式的场景,分别是userService和orderService,这两个服务对应的数据库不在同一个库中,在userService项目中有一个接口是根据user表的ID查询user对象;

同样的,orderService项目中有一个接口是根据order表的ID查询order信息,在一条信息中包含了单价,数量,总价和用户的ID。

这两个个项目布在了同一个大的项目中。现在有一个功能需求是通过使用orderService的接口查询order信息并同时获得这个订单对应的用户信息。

图片图片

3.2 远程调用

首先需要创建一个RestTemplate对象,这个对象功能能简单,就是用来发送HTTP请求,所以可以在项目的配置类中创建这么一个对象,然后在Controller层中注入。

图片图片

图片图片

这样就完成了一次远程调用了。

使用Postman测试一下,理论上是要返回一个response对象,response对象包含了user对象和order对象。

图片图片

Eureka服务搭建

在上面的远程调用的例子中,有许多的不足,比如访问的url信息是写死在代码中的,后期部署的时候要再专门修改这样是不现实的。

Eureka服务发现就相当于是一个专门获取项目中所有接口的程序。所以需要先创建一个Spring boot项目,然后把这个项目当作Eureka的server。

4.1 首先在Eureka_Server的Maven中导入依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

4.2 接着在启动类添加@EnableEurekaServer注解

图片图片

4.3 在配置文件中配置Eureka服务的端口和应用名称

图片图片

验证是否成功只需要在浏览器上输入设置的网址,看能否进入页面即可。

图片图片

Eureka服务注册

5.1 在orderservice和userservice项目中分别引入Eureka依赖信息

注:这里导入的是client依赖。

图片图片

5.2 在userservice和orderservice配置Eureka的配置信息

注:与4.3的样式一致。

图片图片

5.3 访问eureka地址查看这俩个新注册的服务

图片图片

可以发现服务都注册在eureka上了。

Eureka服务发现

6.1 把消费者的调用链接中的ip和端口信息换成注册在Eureka的服务名

图片图片

6.2 在消费者的配置类的RestTemplate上添加@LoadBalanced注解

注:这里的消费者当然是orderservice。

图片图片

6.3 再测试一次程序

图片图片

可见是成功调用了userservice的接口。

责任编辑:武晓燕 来源: IT那活儿
相关推荐

2022-06-17 12:05:25

微服务注册

2019-09-19 09:03:13

Docker负载均衡服务

2024-05-29 09:20:41

2022-06-16 07:50:35

数据结构链表

2024-01-30 18:29:29

微服务架构Ingress

2021-04-20 17:20:59

SpringColud EurekaNetflix开发

2019-09-19 14:57:27

Docker语言技术

2024-01-29 00:41:14

2024-07-29 10:35:44

KubernetesCSI存储

2023-08-01 12:51:18

WebGPT机器学习模型

2024-01-02 12:05:26

Java并发编程

2024-02-04 00:00:00

Effect数据组件

2024-01-19 08:25:38

死锁Java通信

2023-07-26 13:11:21

ChatGPT平台工具

2023-01-10 08:43:15

定义DDD架构

2024-10-08 08:11:39

2023-12-07 12:29:49

Nginx负载均衡策略

2024-03-12 08:37:32

asyncawaitJavaScript

2024-08-12 08:12:38

2019-05-31 08:24:19

Linuxshell命令别名
点赞
收藏

51CTO技术栈公众号