springcloud集成Eureka

Eureka注册中心

是Netflix公司出品,英文直译:发现了,找到了!

1 认识Eureka

首先我们来解决第一问题,服务的管理。

问题分析

在刚才的案例中,user_service对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦,这与DevOps的思想是背道而驰的。

网约车

这就好比是 网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦,而且满大街的车,谁知道哪个才是愿意载人的。一个想要,一个愿意给,就是缺少引子,缺乏管理啊。

此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息(联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。

此时要叫车的人,只需要打开APP,输入你的目的地,选择车型(服务类型),滴滴自动安排一个符合需求的车到你面前,为你服务,完美!

Eureka做什么?

Eureka就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。

同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。

这就实现了服务的自动注册、发现、状态监控。

2 Eureka架构原理

springcloud集成Eureka_第1张图片

renewal:续约

  • Eureka-Server:就是服务注册中心(可以是一个集群),对外暴露自己的地址。

  • 提供者:启动后向Eureka注册自己信息(地址,服务名称等),并且定期进行服务续约

  • 消费者:服务调用方,会定期去Eureka拉取服务列表,然后使用负载均衡算法选出一个服务进行调用。

  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

入门案例

1.搭建eureka客户端

(1)创建一个服务,并在pom文件中进行集成eureka的依赖

 

(2)添加pom依赖



    
        sh_cloud_parent
        com.itheima.sh
        1.0-SNAPSHOT
    
    4.0.0
​
    eureka_server
​
    
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
    
 
  

(3)添加配置

添加 application.yml

server:
  port: 10086    # 默认端口 8761
spring:
  application:
    name: eureka-server # 应用名称,会在Eureka中作为服务的id标识(serviceId)
eureka:
  client:
    service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要写其它Server的地址。
      defaultZone: http://127.0.0.1:10086/eureka
    register-with-eureka: false # 不注册自己  默认值为 true
    fetch-registry: false #不拉取服务  默认值为 true

(4)编写引导类

package com.zy;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
​
@SpringBootApplication
@EnableEurekaServer // 声明这个应用是一个EurekaServer
public class EurekaServer {
  public static void main(String[] args) {
    SpringApplication.run(EurekaServer.class, args);
  }
}

(5)启动服务

并访问:http://127.0.0.1:10086

2.服务注册端

对于现有的服务直接集成eureka就行

实现步骤:

(1)引入pom依赖

在user_service中添加Eureka客户端依赖:

​​​​​​​

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client
 
  

(2)配置EurekaServer端的地址

修改user_service配置文件,指定eureka地址

# ...略
spring:
  application:
    name: user-service
eureka:
  client:
    service-url: # EurekaServer地址
      defaultZone: http://127.0.0.1:10086/eureka/

注意:

  • 这里我们添加了spring.application.name属性来指定应用名称,将来会作为服务的id使用。

  • 不能使用下划线

(3)引导类添加注解

@SpringBootApplication
@EnableDiscoveryClient   // 注册到Eureka注册中心
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }
}

(4)重启项目

访问Eureka监控页面查看,我们发现user_service服务已经注册成功了:springcloud集成Eureka_第2张图片

 

你可能感兴趣的:(eureka,spring,cloud,java)