spring cloud之eureka注册中心

1,Spring Cloud Eureka 是什么

spring cloud Eureka是netflix服务套件中的一部分。spring cloud基于Netflix Eureka做了封装,包括注册中心的服务端与客户端,方便使用。Eureka是服务治理的核心基础模块,做为注册中心,提供服务实例的自动化注册与发现。

**注册中心:**Eureka服务端是高可用注册中心,服务提供者通过配置,自动化将服务注册到注册中心。Eureka服务端支持集群部署,当集群中个别实例发生故障时,可以继续提供服务注册与发现,当故障恢复后,实例间异步模式复制状态完成状态同步。

**服务发现:**Eureka客户端可以发现服务端注册的所有服务;

2,Eureka 注册中心(集群配置)

1,注册中心pom文件配置:

        <!--eureka-server服务端 注意starter的实际版本在parent中管理 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

2,应用启动类:

@SpringBootApplication
@EnableEurekaServer //服务端注解
public class EurekaServer001
{
    public static void main(String[] args)
    {
        SpringApplication.run(EurekaServer001.class, args);
    }
}

3,yaml配置:

eureka: 
  instance:
    hostname: eurekaserver1     #eureka服务端的实例名称
  client: 
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false       #false表示不需要去检索服务
    service-url: 
      defaultZone: http://eurekaserver2:8082/eureka/,http://eurekaserver3:8083/eureka/
#server2,则配置server1,server3;server3则配置server1和2
server:
  port: 8081
spring:
  application:
    name: eureka-server

配置完成后,逐个启动Euerka集群节点即可;

3,服务注册(注册到Eureka集群)

1,服务提供者pom文件引入Eureka

        <!-- 服务端引入eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>

2,服务提供者应用启动

服务端应用启动,@EnableEurekaClient完成服务的自动注册;

@SpringBootApplication
@EnableEurekaClient //启动后会自动注册进eureka服务中
public class ServiceApp001
{
    public static void main(String[] args)
    {
        SpringApplication.run(ServiceApp001.class, args);
    }
}

3,服务提供者(集群)yaml配置

server:
  port: 8881
spring:
  application:
    name: service-provider #应用名,客户端以此发现所有指定服务名的服务提供者信息;服务提供者集群名字需要一致;
eureka:
  client: #服务提供者注册进eureka服务列表内
    service-url: 
      #将服务注册进入所有集群节点
      defaultZone: http://eurekaserver1:8081/eureka/,http://eurekaserver2:8082/eureka/,http://eurekaserver3:8083/eureka/    
  instance: #name: service-provider;直接以spring.application.name生效;
    instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 将Instance ID设置成IP:端口的形式;这个instance-id是服务实例在注册中心的唯一标识。
    prefer-ip-address: true     #访问路径可以显示IP地址   

服务提供者完成Eureka配置后,服务启动会自动将服务注册到Eureka注册中心;

4,Eureka 服务发现

1,服务消费者pom文件引入Eureka

只要引入Eureka就可以使用

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

2,服务消费者应用启动

@SpringBootApplication
@EnableDiscoveryClient //服务发现注解,自动初始化DiscoveryClient到容器中等;
//@EnableEurekaClient //启动后会自动注册进eureka服务中;可以既是服务提供者,也是消费者;
public class ConsumerApp001
{
    public static void main(String[] args)
    {
        SpringApplication.run(ConsumerApp001.class, args);
    }
}

3,服务消费者yaml配置

eureka:
  client:
    register-with-eureka: false #不同时作为服务提供者时,不注入注册中心
    service-url: 
      defaultZone: http://eurekaserver1:8081/eureka/,http://eurekaserver2:8082/eureka/,http://eurekaserver3:8083/eureka/

4,服务发现

    //注入服务发现客户端;    
    @Autowired
    private DiscoveryClient discoveryClient;
    public void serviceDiscovery()
    {
        //查找所有在注册中心注册的服务名
        List<String> serviceNameList = discoveryClient.getServices();
        for (String serviceName : serviceNameList) {
            //查找以指定服务名的注册的服务实例
            List<ServiceInstance> icList = discoveryClient.getInstances(serviceName);
            for (ServiceInstance service : icList) {
                System.out.println(service.getServiceId() + "\t" + service.getHost() + "\t" + service.getPort() + "\t" + service.getUri());
            }
        }
    }

我们在实际使用中,不会采用这种方式去发现服务,并调用服务。但是我们直接使用的Ribbon、Feign等工具,也是通过这种方式,发现服务。

5,总结

Spring Cloud Eureka是高可用的注册中心,只需要简单配置(大多数配置是直接使用默认配置即可使用)即可使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值