首页 技术 正文
技术 2022年11月14日
0 收藏 494 点赞 3,035 浏览 4554 个字

eureka-server

eureka服务端,提供服务的注册与发现,类似于zookeeper

新建spring-boot工程,pom依赖:


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 定义springcloud的版本为Dalston版 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

然后是启动类,在启动类上加上注解 @EnableEurekaServer


@EnableEurekaServer
@SpringBootApplication
public class Application {public static void main(String[] args) {
//启动方式区别于springboot
new SpringApplicationBuilder(Application.class).web(true).run(args);
}}

注册中心配置

默认情况下,注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties进行配置,具体配置信息如下:

# 该服务中心名字
spring.application.name=eureka-server
#端口号
server.port=10000eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=falselogging.file=${spring.application.name}.log

接下来,打开浏览器,访问127.0.0.1:10000

显然,注册中心还没有任何服务提供者以及消费者:


eureka-client

我们接下来创建提供服务的客户端,并向服务注册中心注册自己。

新建spring-boot工程,命名为eureka-client,pom依赖:


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency><!-- 定义springcloud的版本为Dalston版 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

然后创建一个接口服务,如下:


@RestController
public class EurekaController { @Autowired
private DiscoveryClient discoveryClient; @GetMapping("/client")
public String client() {
String services = "Services: " + discoveryClient.getServices();
System.out.println(services);
return services;
}}

接下来是启动类,注意在启动类加上@EnableDiscoveryClient注解,具体如下:


@EnableDiscoveryClient
@SpringBootApplication
public class Application {public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}}

application.properties 配置


spring.application.name=eureka-clientserver.port=2000eureka.client.serviceUrl.defaultZone=http://localhost:10000/eureka/

通过spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。

eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。

启动项目,浏览器访问127.0.0.1:10000

如上,证明服务提供方注册成功


eureka-consumer

通过上面两步,我们已经成功地将服务提供者:eureka-client注册到了Eureka服务注册中心了,同时我们也通过DiscoveryClient接口的getServices获取了当前客户端缓存的所有服务清单,那么接下来我们要学习的就是:如何去消费服务提供者的接口

新建spring-boot工程,命名为eureka-consumer,pom依赖:


<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency><!-- 定义springcloud的版本为Dalston版 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

配置application.properties,指定服务注册中心


spring.application.name=eureka-consumerserver.port=2100eureka.client.serviceUrl.defaultZone=http://localhost:10000/eureka/

创建应用主类,注意注解@EnableDiscoveryClient,和之前服务提供者写法一致


@EnableDiscoveryClient
@SpringBootApplication
public class Application{
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}

创建一个接口用来消费eureka-client提供的接口


@RestController
public class ConsumerController{ @Autowired
private LoadBalancerClient loadBalancerClient; @Autowired
RestTemplate restTemplate; @GetMapping("/consumer")
public String consumer() {
ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/client";
System.out.println(url);
return restTemplate.getForObject(url, String.class);
}

可以看到,我们注入了LoadBalancerClient和RestTemplate,并在/consumer接口的实现中,先通过loadBalancerClientchoose函数来负载均衡的选出一个eureka-client的服务实例,这个服务实例的基本信息存储在ServiceInstance中,然后通过这些对象中的信息拼接出访问/client接口的详细地址,最后再利用RestTemplate对象实现对服务提供者接口的调用。


如上,基于eureka的服务注册,发现,消费已经全部完成.

[本文参考:程序员DD教程]

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297