Eureka服务注册与发现

文章详细介绍了如何使用Eureka进行服务注册与发现。首先,配置EurekaServer作为服务注册中心,然后在服务提供者和消费者端引入依赖并配置yaml文件以注册到服务中心。接着,通过修改host文件和yaml配置实现服务注册中心的集群。最后,客户端配置负载均衡,并通过服务名而非URL调用服务。
摘要由CSDN通过智能技术生成

看图做题
架构图

1. 思路

Eureka Server : 服务注册中心
Eureka Client : 服务提供者/消费者

2. 实现步骤

2.1 服务注册中心

  1. pom 引入依赖

    <dependencies>
    	<dependency>
    		<groupId>org.springframework.cloud</groupId>
    		<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    	</dependency>
    </dependenciey>
    
  2. yaml 配置文件

    server:
    	port: 7001
    eureka: 
    	instance: 
    		#eureka服务端的实例名称
    		hostname: localhost
    	client: 
    		#false 表示不向注册中心注册自己
    		register-with-eureka: false
    		#false 表示自己就是注册中心,职责就是维护服务实例,并不需要去检索服务
    		feth-registry: false
    		service-url:
    			#设置与 eureka server 交互的地址,查询服务和注册服务都需要以来这个地址
    			defaultZone: http://{eureka.instance.hostname}:${server.port}/eureka
    
  3. 主启动类添加注解: @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001
{
	public static void main(String[] args)
	{
		SpringApplication.run(EurekaMain7001.class, args);
	}
}

2.2 注册Client端,【服务提供端、服务消费端】

  1. pom 引入依赖

    <dependencies>
    	<dependency>
    		<groupId>org.springframework.cloud</groupId>
    		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    	</dependency>
    </dependenciey>
    
  2. yaml 配置文件

    server:
    	application:
    		#Eureka服务中心,显示并使用的名称
    		name: cloud-service-name
    server:
    	port: 8001
    eureka: 
    	client: 
    		#表示向注册中心EurekaServer注册自己 默认为ture 
    		register-with-eureka: true
    		#向EurekaServer注册中心,抓取已注册信息,默认为true
    		feth-registry: true
    		service-url:
    			#注册中心的地址,集群模式下,多个地址用英文逗号','分开
    			defaultZone: http://{eureka.instance.hostname}:${server.port}/eureka
    	instance:
    		# 实例id
    		instance-id: payment8001
    		# 访问路径显示IP地址
    		prefer-ip-address: true
    
  3. 主启动类添加注解: :@EnableEurekaClient

    @SpringBootApplication
    @EnableEurekaClient
    public class EurekaMain8001
    {
    	public static void main(String[] args)
    	{
    		SpringApplication.run(EurekaMain8001.class, args);
    	}
    }
    

2.3 集群配置

1. 服务注册中心(集群)

1.1 修改host文件配置(在一台主机模拟三台服务器)

windows 目录:C:\Windows\System32\drivers\etc\hosts,在末尾处添加如下映射配置。

127.0.0.1 eureka7001
127.0.0.1 eureka7002
1.2 修改yaml文件(服务注册中心相互注册)

1.2.1 服务注册中心:7001

server:
		port: 7001
	eureka: 
		instance: 
			#eureka服务端的实例名称
			hostname: eureka7001
		client: 
			#false 表示不向注册中心注册自己
			register-with-eureka: false
			#false 表示自己就是注册中心,职责就是维护服务实例,并不需要去检索服务
			feth-registry: false
			service-url:
				#将自己注册到另外的服务注册中心实例中
				defaultZone: http://eureka7002:7002/eureka

1.2.2 服务注册中心:7002

server:
		port: 7002
	eureka: 
		instance: 
			#eureka服务端的实例名称
			hostname: eureka7001
		client: 
			#false 表示不向注册中心注册自己
			register-with-eureka: false
			#false 表示自己就是注册中心,职责就是维护服务实例,并不需要去检索服务
			feth-registry: false
			service-url:
				#将自己注册到另外的服务注册中心实例中
				defaultZone: http://eureka7001:7001/eureka

2. Eureka Client客户端(集群)

2.1 yaml配置

相同服务间的服务名称保持一致 server.application.name ,端口号不同。
客户端:8001

server:
	application:
		#Eureka服务中心,显示并使用的名称
		name: cloud-service-name
server:
	port: 8001
eureka: 
	client: 
		#表示向注册中心EurekaServer注册自己 默认为ture 
		register-with-eureka: true
		#向EurekaServer注册中心,抓取已注册信息,默认为true
		feth-registry: true
		service-url:
			#注册中心的地址,集群模式下,多个地址用英文逗号','分开
			defaultZone: http://eureka7001:7001/eureka,http://eureka7002:7002/eureka
	instance:
		# 实例id
		instance-id: payment8001
		# 访问路径显示IP地址
		prefer-ip-address: true

客户端:8002

server:
	application:
		#Eureka服务中心,显示并使用的名称
		name: cloud-service-name
server:
	port: 8002
eureka: 
	client: 
		#表示向注册中心EurekaServer注册自己 默认为ture 
		register-with-eureka: true
		#向EurekaServer注册中心,抓取已注册信息,默认为true
		feth-registry: true
		service-url:
			#注册中心的地址,集群模式下,多个地址用英文逗号','分开
			defaultZone: http://eureka7001:7001/eureka,http://eureka7002:7002/eureka
	instance:
		# 实例id
		instance-id: payment8002
		# 访问路径显示IP地址
		prefer-ip-address: true
2.2 消费端 URL地址改调用服务名
public class TestController
{
	//private static final String SERVER_URL="http://127.0.0.1:7744";
	private static final String SERVER_URL="http://CLOUD-SERVICE-NAME";
	@Autowired
	private RestTemplate restTemplate;
	
	public String create(Entity entity)
	{
		return restTemplate.PostForObject(SERVER_URL+"/payment/get"+id, String.class)
	}
}
2.3 添加负载均衡注解

在注入RestTemplate的地方,添加@LoadBalanced注解,赋予负载均衡的能力

@Configuration
public class ApplicationContextCOnfig
{
	@Bean
	@LoadBalanced
	public RestTemplate getRestTemplate()
	{
		return new RestTemplate();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值