基于eureka的服务注册发现demo

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/magi1201/article/details/83543817

eureka基本架构

Eureka基本架构如图

其中涉及到3中角色:

服务注册中心:作为eureka的一个server,提供服务注册和发现的功能。

服务提供者:作为eureka的一个客户端组件,可以对外提供服务。

服务消费者:作为eureka的一个客户端组件,用来消费服务。

服务消费的基本过程如下:首先需要一个服务注册中心eureka server,服务提供者eureka client向服务注册中心eureka server注册,将自己的信息通过 rest API的形式提交给服务注册中心eureka server。服务消费者eureka client向服务注册中心eureka server注册,同时服务消费者获取一份服务注册列表的信息,该列表包含了所有向服务注册中心eureka server注册的服务信息。获取服务注册列表信息之后,服务消费者就知道服务提供者的IP地址,可以通过HTTP远程调度来消费服务提供者的服务。服务消费者和服务提供者对于服务注册中心来讲,都是客户端;服务提供者和服务消费者可能互为提供提供与消费关系。

服务注册中心eureka server

服务注册中心主要用于客户端服务的注册功能,下面我们通过一个具体工程来介绍。

pom.xml中主要依赖信息

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<!-- 声明springboot版本  -->
		<version>2.0.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<!-- 声明springcloud的版本  -->
		<spring-cloud.version>Finchley.SR2</spring-cloud.version>
	</properties>

	<dependencies>
		<!-- 使用springMVC注解,引入web依赖包 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- 引入springcloud依赖包 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter</artifactId>
		</dependency>
		<!-- 引入服务注册发现组件 eureka依赖 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>

	</dependencies>

关键部分,springcloud版本声明和eureka依赖的添加两块,springboot1到springboot2,eureka依赖这里有一些变化,这里需要注意下。

application类中,需要增加@EnableEurekaServer注解,标注该类是一个eureka的服务注册中心类

@EnableEurekaServer
@SpringBootApplication
public class EurekaServicecenterApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServicecenterApplication.class, args);
	}
}

application.yml 配置文件可以使用yml和properties两种,这里采用yml格式

server:
  port: 6781 #服务注册中心端口号
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false #是否向服务注册中心注册自己
    fetchRegistry: false #是否检索服务
    serviceUrl: #服务注册中心的配置内容,指定服务注册中心位置
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

配置文件中,主要eureka.client.serviceUrl.defaultZone配置,配置服务注册中心位置,后面其它客户端只要将服务中心地址配置为该地址,都会注册到这里来。

启动springcloud服务,在地址栏 http://localhost:6781/ 可以看到,当前没有实例注册过来。

服务提供者eureka provider

服务提供者对于注册中心来讲,是一个客户端client;对于服务消费者来讲,自己是服务提供者;如果消费其它服务时,自己则化身为服务消费者。

服务提供者eureka provider的pom文件与服务注册中心的相同,这里不再描述。

controller层HelloController.java 

@EnableEurekaClient
@RestController
public class HelloController {

	@ResponseBody
	@RequestMapping("/hello")
	public String hello(String name) {
		return name + ", Welcome to Spring Boot 2";
	}
}

这里,与普通springboot不同的是,在类上面增加了@EnableEurekaClient注解,@EnableEurekaClient注解,标注该类是一个服务注册发现组件中的客户端组件。

application.properties配置

spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://localhost:6781/eureka/
server.port=6782

客户端的配置文件相对简单,配置一个端口号,服务名称和服务注册中心地址

启动springcloud服务后,在服务注册中心地址 http://localhost:6781/ 可以看到,有一个实例注册

该服务便是我们刚注册的服务提供者,服务名称为eureka-server,端口号为6782

我们继续在服务提供者这边测试 http://localhost:6782/hello?name=lisi

可以看到,服务能正常响应,表示服务没有问题。

服务消费者eureka consumer

pom文件与上面相同

controller层ConsumerController.java

@RestController
@EnableEurekaClient
public class ConsumerController {

	@Autowired
	RestTemplate restTemplate;
	
	@LoadBalanced
	@Bean
	public RestTemplate rest() {
		return new RestTemplate();
	}
	
	@RequestMapping("/hi")
	public String hello(String name) {
		return restTemplate.getForObject("http://eureka-server/hello?name=" + name, String.class);
	}
}

controller层中,与服务提供者不同的是,增加了RestTemplate类实例,restTemplate实例,主要用于调用远程服务。这里我们的服务地址,配置上面的服务名。

application.properties

eureka.client.service-url.defaultZone=http://localhost:6781/eureka/
server.port=6783
spring.application.name=eureka-client

内容基本与服务提供者的相似,这里不再细述。

启动springcloud服务后,在服务注册中心可以看到,服务消费者同样注册到了注册中心

测试

我们在地址栏输入 http://localhost:6783/hi?name=wangwu

页面跳转 ,服务消费者成功调用到服务提供者

上面就是本人测试中最简单的服务注册和发现实例,服务可以正常调用起来,关于细节内容没有过多表述,以便于先入门理解。

附工程项目代码下载路径:eureka服务注册发现demo

猜你喜欢

转载自blog.csdn.net/magi1201/article/details/83543817