文章目录
- 前言
- 一、Eureka注册中心基本原理
- 二、Eureka服务注册与发现
-
- 1.引入父工程依赖
- 2.向需要注册的微服务中引入Eureka依赖
- 3.编写配置
- 4. 同一服务配置多个实例
- 5. 服务发现
前言
它来啦~ 它来啦~ 微服务它来啦!
在微服务中 , 服务的拆分与远程调用借助于注册中心实现 ;
Eureka和Nacos则是两种比较主流的注册中心
提示:以下是本篇文章正文内容,下面案例可供参考
一、Eureka注册中心基本原理
在服务做远程调用时 , 如果将服务提供方的地址硬编码到代码中 , 将来业务扩展或地址变更 , 修改地址很不方便 . 因此使用Eureka注册中心 ;
在注册中心会记录服务名称,ip地址以及端口, 服务每隔30S会向eureka发心跳;
- EurekaServer : 注册中心 , 记录服务信息 , 监控心跳;
- EurekaClient : 客户端 , 服务提供方和消防方 , 即具体的微服务 , 这个微服务也可以是eureka自己;
在搭建之前先给出工程目录
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLxkEVOJzaU5UMRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLkNTZkRGZ1IzNlNWO1IzN4YGNkRjZyAjM0YTN0YWYkBzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、Eureka服务注册与发现
1.引入父工程依赖
<dependencyManagement>
<dependencies>
<!-- springCloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--nacos的管理依赖-->
<!--spring-cloud-alibaba依赖全部引入-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
2.向需要注册的微服务中引入Eureka依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3.编写配置
这里的
eureka:
处于yml文件的根目录
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
同时指定服务名称 , 以user-service为例
spring:
application:
name: userservice
在Eureka微服务的启动类上配置一个
@EnableEurekaServer
注解 , 即可开启微服务
这里的2,3点 , 在每个微服务中都要配置一份
打开浏览器 , 地址栏输入
http://localhost:10086/
即可进入Eureka管理界面
4. 同一服务配置多个实例
将目标服务的configuration复制多份 , 然后修改端口号即可
综上所述 , Eureka服务注册分两步 : 1. 引入eureka-client依赖 , 在application.yml中配置eureka地址和指定服务名称
下面讲讲服务的发现 , 也就是 不同微服务之间的相互调用
5. 服务发现
- 引入依赖
- yml配置eureka的地址
- 在启动类上给RestTemplate添加
注解@LoadBalabced
/**
* 创建RestTemplate并注入Spring容器,同时启动负载均衡
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
- 使用服务提供者的服务名称远程调用
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2.利用RestTemplate发起http请求,查询用户
// 2.1.url路径
String url = "http://userservice/user/" + order.getUserId(); //这里会调用所有userserver的服务
// 2.2.发送http请求,实现远程调用
User user = restTemplate.getForObject(url, User.class);
// 3.封装user到Order
order.setUser(user);
// 4.返回
return order;
}