Eureka(服务发现组件 )

 

Eureka是Netflflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflflix中,实现
SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。
 
  Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中
的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就别一个内置的、使用轮
询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,
如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个
服务节点移除(默认90秒)。

1.创建一个Eureka服务父工程用于子工程的服务注册

依赖

 <!--eureka server 服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
View Code

启动类的注解

/**
 * EureKa 服务端启动类
 */
@SpringBootApplication
@EnableEureKaServer
public class eurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(eurekaServer.class,args);
    }
}
View Code

配置yml 

#eureka服务的配置文件
server:
  port: 6868 #服务端口
eureka:
  client:
    registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需注册
    fetchRegistry: false #是否从Eureka中获取注册信息
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
      defaultZone: http://127.0.0.1:${server.port}/eureka/
View Code

2.所有maven的父工程中引入 定义SpringCloud版本

 <!--父工程 EureKa-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
View Code

3.需要注册到Eureka 的微服务模块

依赖

<!--        eureka  客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
View Code

注解

package com.zhao.company;

import com.common.utils.IdWorker;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;

//springboot的包扫描
@SpringBootApplication(scanBasePackages = "com")//如果改成这样 com.zhao.company就只是扫描company模块下的接口了
//配置jpa注解的扫描 ,扫描的是common_model的这个工程下的实体类
@EntityScan(value = "com.domain.company")
//注册到 EureKa
@EnableEureKaClient
public class Application extends  SpringBootServletInitializer {
    /**
     * 启动方法
     */
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }

    @Bean
    public IdWorker idWorker(){
        return new IdWorker();
    }

    /**
     *将项目打成war包
     * @param builder
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}
View Code

yml文件

#微服务注册到eureka配置
eureka:
client:
service-url:
defaultZone: http://localhost:6868/eureka/

 

posted @ 2020-01-29 19:59  Angry-rookie  阅读(188)  评论(0)    收藏  举报