Spring Cloud系列(3):Spring Cloud Eureka

Spring Cloud Eureka 服务注册与发现。

在Spring Cloud体系中,Eureka角色是服务的注册与发现。在里面涉及到三个关键的角色:服务注册中心,服务调用者,服务提供者。

Eureka Server

eureka server 是服务注册中心,所有的服务都应该注册到这里来

我们还是在之前的项目基础上,新建一个module,pom文件中引入

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

这样声明出这个项目是一个eureka server

在启动类上增加@EnableEurekaServer注解。

配置文件application.yml:

server:
  port: 8761

spring:
  application:
    name: acs-eureka-server

eureka:
  instance:
    lease-expiration-duration-in-seconds: 6
    lease-renewal-interval-in-seconds: 2
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false
    fetch-registry: false

其中 eureka.client.register-with-eureka=false表明自己不需要向自己注册,否则eureka会将自己当做一个微服务向自己进行注册。

启动后访问:http://localhost:8761/


Eureka Invoker

服务调用者需要访问服务提供者的资源,我们这里用到Feign

同样的,新建一个nodule项目,pom文件修改为:

        <!--远程调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        
        <dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-hystrix</artifactId>
		</dependency>

配置文件application.yml中指定要注册到那个server

  port: 8086

spring:
  application:
    name: acs-eureka-invoker

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

在启动类上添加@EnableEurekaClient和@EnableFeignClients注解

这个时候,启动就能成功了,但我们这里用到了Feign,远程调用服务提供者的接口,所以我们需要写一个接口

@FeignClient(name = "acs-eureka-provider")
public interface RemoteInterface {
	
	@PostMapping("/hello")
	String hello();
}

这个接口中有一个/hello方法对应着服务提供者的/hello方法。

我们再新建一个Controller类

@RestController
public class HelloController {
	
	@Autowired
	private RemoteInterface remoteInterface;
	
	@RequestMapping("/acs/hello")
	public String hello(){
		return remoteInterface.hello();
	}
}

这样我们的调用者就启动完毕了。启动后我们访问上一步建立的eureka server,发现注册的实例多了一个acs-eureka-invoker,而这个名称就是我们指定的应用名称。


Eureka Provider

服务提供者提供具体的业务或数据库的操作等,这里我们也是新建一个子module,

配置文件applicaiton.xml中配置服务端口,名称,向哪个服务进行注册

server:
  port: 8083
  
spring:
  application:
    name: acs-eureka-provider

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

启动类上添加springboot启动的注释就可以

添加一个controller类。供服务调用者调用

@RestController
public class HelloController {
	
	@RequestMapping("/hello")
	public String hello(){
		return "hello";
	}
}

启动后访问eureka server,可以看到实例处又多了一个acs-eureka-provider


访问:http://localhost:8086/acs/hello


说明acs-eureka-invoker中已经调用到了acs-eureka-provider中的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值