从零开始 Spring Cloud 2Eureka 注册心
从零开始 Spring Cloud 2:Eureka 注册中心
图源:laiketui.com
Eureka 常被用作 Spring Cloud 的注册中心,用于注册微服务的接口提供方。
本文将学习如何在项目中添加 Eureka 注册中心,以及将接口注册到 Eureka。
添加 Eureka 服务端
依赖
在子模块 eureka-server 中添加 eureka 服务端的依赖:
<dependencies>
<!--eureka服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
启动类
添加一个根包 org.example.shopping.eureka,并添加启动类:
package org.example.shopping.eureka;
// ...
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
不要忘记添加
@EnableEurekaServer
,否则 Eureka 不能正常启动,会报错。
配置文件
添加配置文件 application.yml :
server:
port: 8090
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://localhost:8090/eureka
这里的配置项 eureka.client.service-url.defaultZone 用于将当前应用注册到指定的 eureka,在eureka-server 这个子模块中,意味着将自己注册到自己。这样设计是有意义的,eureka 本身也可以做集群,如果那样,可以通过这种方式将 eureka 注册到所在的集群服务器。
控制面板
现在访问 http://localhost:8090/ 就能看到 Eureka 的控制面板:
其中的 Instances currently registered with Eureka 显示的是当前注册到 Eureka 上的微服务实例。之所以说是“实例”,是因为同一个微服务应用可以部署多个实例,作为集群使用,此时接口调用时就可以用负载均衡的方式选取其中一个调用。
注册服务
下面将子模块 shopping-user 注册到 Eureka,这样子模块 shopping-order 就可以通过 Eureka 获取接口地址并调用接口,不用再将接口硬编码了。
依赖
在在模块 shopping-user 的 POM 中添加 Eureka 客户端的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
如果 Maven 不能正常下载依赖,可以选取一个指定版本的依赖,我这里使用了
3.1.3
(服务端也使用了这个版本):
配置文件
修改配置文件,添加应用名和 Eureka 服务端地址:
spring:
application:
name: shopping-user
eureka:
client:
service-url:
defaultZone: http://localhost:8090/eureka
测试
现在启动子模块 shopping-user 和 eureka-server,打开 eureka 的控制面板:
可以看到两个注册的服务,Status 列也可以看到服务地址。
启动多个实例
在 Service 面板中右键 Copy Configuration:
如果没有 Service 窗口,可以通过菜单 view->tool windows->services 开启。
为另一个运行实例起一个名字,并添加启动参数 -Dserver.port=8082:
现在 Not Started 菜单下会出现刚添加的启动配置。
右键 run 启动。
现在在 Eureka 的控制面板就能看到启动了两个 shopping-user 实例。
使用服务
依赖
子模块 shopping-order 要使用 Eureka 获取服务地址,同样需要添加 Eureka 客户端依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.1.3</version>
</dependency>
配置文件
修改配置文件,添加 Eureka 服务地址:
spring:
application:
name: shopping-order
eureka:
client:
service-url:
defaultZone: http://localhost:8090/eureka
负载均衡
启用负载均衡,这里只需要为RestTemplate
的 bean 方法添加@LoadBalanced
注解:
@Configuration
public class WebConfig {
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
服务调用
修改OrderService
,将硬编码的接口地址修改为使用 Eureka 上注册的服务名:
@Service
public class OrderService {
// ...
public Order findOrderById(Long orderId) {
Order order = orderMapper.findById(orderId);
String url = String.format("http://shopping-user/user/%d", order.getUserId());
Result<?> result = restTemplate.getForObject(url, Result.class);
// ...
}
}
现在再尝试访问接口 http://localhost:8080/order/101,可以通过 IDEA 的 services 窗口查看到 shopping-user 的其中一个实例响应了接口调用。
The End,谢谢阅读。
本文的完整示例代码可以从这里获取。
参考资料
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiaihjf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22