둘째, 유레카 봄 클라우드의 등록 센터

머리말

우리가 지금 하나 하나 그것을 배울 그래서 봄 구름 지식 학습 프로젝트의 공식 시작 고려, 아마, Springcloud 마이크로 서비스의 큰 숫자로 구성되어 알고있다.

등록 센터는 마이크로 서비스의 핵심으로 간주. 모든 서비스는 서비스를 요청, 레지스트리에 등록되며, 직접적으로 요청하는 서비스 주소, 목적지 주소를하지만, 먼저 다음 등록 센터를 통해 이동합니다. 유레카 유지 보수를 중단했지만, 우리가 있지만 사용에는 문제가 없다.

유레카의 주요 서비스 레지스트리, 서비스 제공 업체 및 소비자 서비스를 제공합니다. 여러 번 서비스 소비자와 서비스 제공자. 유레카의 측면에서, 유레카는 서버와 클라이언트 유레카으로 나누어 져 그래서, 그것은 레지스트리입니다, 클라이언트는 서비스 제공자와 소비자 서비스 끝입니다.

독립형 모드

음, 우리는 유레카의 첫 번째 서버 측 바 올라와있다 독립형 모드 서버와 클러스터 모드의 독립형 모드를 할 수있다.

더 많은 기사에서 다음과 같이 pom.xml 파일 문서를 읽고 우리가 부모 받는다는 프로젝트를 만들 모듈 개발을 받는다는 사용했다 :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>cn.quellanan</groupId>
    <artifactId>SpringCloud</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
    <modules>
        <module>eureka-server-8000</module>
        <module>eureka-server-8001</module>
        <module>eureka-server-8002</module>
        <module>zlflovemm</module>
    </modules>

</project>

당신은 따라서 각 모듈 버전의 일관성 보장 등 기본 버전에 의존 봄 부팅 및 봄 구름에 지정된 파일을 볼 수 있습니다.

하위 모듈

우리는 유레카 서버-8000의 서브 모듈을 만들 다음.

pom.xml 파일

다음과 같이 pom.xml 파일을 읽습니다

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>cn.quellanan</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>1.0.0</version>
    </parent>
    <groupId>com.quellanan.springcloud</groupId>
    <artifactId>eureka-server-8000</artifactId>
    <version>1.0.0</version>
    <name>eureka-server-8000</name>
    <description>eureka project for Spring Boot</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

우리는 부모 치어 추가 증가 의존 스프링 - 클라우드 스타터 넷플 릭스 - 유레카 - 서버의 상속 볼 수 있습니다.

@EnableEurekaServer

@EnableEurekaServer 주석 시작 클래스를 증가, 유레카 서버를 활성화 나타냅니다.

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

application.properties

구성 파일은 다음과 같은 구성을 추가하는

spring.application.name=spring-cloud-eureka-server-8000
server.port=8000

#表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=true

# 表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.fetch-registry=true

#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。多个地址可使用 , 分隔。
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

이제 우리는이 프로젝트를 시작하고 볼 수있는
그림 삽입 설명 여기
우리가 서비스에 자신을 등록 할 것을 볼 수 있습니다.

유레카 클라이언트

말했듯이, 서비스 제공자와 서비스 소비자 클라이언트는, 사실, 우리의 특정 비즈니스 프로젝트의 일부. 그래서 우리는 서브 모듈을 만듭니다. 나는 우리가 서비스 제공자와 서비스 소비자를 작성,이를 분리 왔어요.

서비스 제공

우리는 유레카 - 클라이언트 제공 서브 모듈, 치어 파일 스프링 클라우드 스타터 넷플 릭스 - 유레카 - 클라이언트의 도입을 만듭니다.

    <parent>
        <groupId>cn.quellanan</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>1.0.0</version>
    </parent>
    groupId>com.quellanan.springcloud</groupId>
    <artifactId>eureka-client-provider</artifactId>
    <version>1.0.0</version>
    <name>eureka-client-provider</name>
    <description>eureka-client-provider 服务提供者</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

@EnableDiscoveryClient 수 있습니다 @EnableEurekaClient 클래스 메모 나 주석을 추가하는 시작합니다.

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientProviderApplication.class, args);
    }

}

증가 application.properties을 다음과

server.port=9000
#服务名,在注册时所用
spring.application.name=eureka-client-provider
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

여기에 주소 지정된 유레카 서비스 센터는 8000입니다. 구성은 서비스 레지스트리 친구로 등록 할 수있다.
우리는 테스트 인터페이스를 작성합니다.
다음과 같이 인 IndexController는 클래스를 생성 :

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

소비자 서비스

우리는 유레카 클라이언트 소비자 모듈을 만들 것을 좋아합니다. 치어 파일은 다음과 같습니다 :

<parent>
        <groupId>cn.quellanan</groupId>
        <artifactId>SpringCloud</artifactId>
        <version>1.0.0</version>
    </parent>

    <groupId>com.quellanan.springcloud</groupId>
    <artifactId>eureka-client-consumer</artifactId>
    <version>1.0.0</version>
    <name>eureka-client-consumer</name>
    <description>eureka-client-consumer 服务消费者</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

서비스 제공과 관련하여, 우리는 척하기가 주로 달성하기 위해 균형 서비스와 클라이언트로드를 검색하는 데 사용 의지 추가, 우리는 그것을에서 서비스를 발견하기 위해 여기에 있습니다.

그리고 RestTemplate 통화가 제공하는 서비스 인터페이스에 사용되는 빈 인스턴스 주입 서비스를 발견하기위한 시작 클래스 @EnableDiscoveryClient합니다. @LoadBalanced는 내가이 댓글을 추가하지 않은 시작,하지만하지 않고, 서비스 소비자가 가능한 서비스 제공자의 서비스 이름의 예를 통해 얻을 수 없습니다 발견, 클라이언트로드 밸런싱에 있습니다. 그래서 여기 당신이 그것을 밖으로 시도 할 수 있습니다.

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientConsumerApplication {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientConsumerApplication.class, args);
    }
}

우리는 우리가 다음과 같이 읽고하는 인 IndexController을 생성, 서비스 소비자를 호출하는 인터페이스를 작성했다 :

@RestController
public class IndexController {
    private static final String applicationName = "eureka-client-provider";
    @Autowired
    private RestTemplate restTemplate;
    @RequestMapping("/index")
    public String getHello(){
        String url = "http://"+ applicationName +"/hello";
        return  restTemplate.getForObject(url,String.class);
    }
}

여기에서 우리는 applicationName에이 서비스 제공 업체 인 서비스 이름을 볼 수 있습니다. 실제로, 서비스의 한 종류는 여러 서버, 물리적 주소를 가질 수 있으며, IP는 다를 수 있지만 그들은 복잡한 통해 다음 소비자가 서비스 이름을 통해 사용 가능한 서비스의 목록을 얻을 수 있도록, 거기에 같은 서비스 이름을 보장하고, 밸런싱 정책은 하나의 인스턴스 액세스를 선택합니다.

마지막으로, 우리는 응용 프로그램에서 다음과 같은 설정을 추가 :

server.port=9001
#服务名,在注册时所用
spring.application.name=eureka-client-consumer
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

테스트

이제 우리는이 두 프로젝트에서 등록 센터와 클라이언트보기를 시작합니다. 시작, 우리 입력 후

http://localhost:8000

그림 삽입 설명 여기
당신은 우리의 클라이언트가 레지스트리 친구에 등록 된 것을 알 수 있습니다. 서비스 제공자와 서비스 소비자는 이미 레지스트리 친구로 등록되어 있습니다. 튜닝하자 시도 인터페이스. 우리는 다음을 입력합니다 :

http://localhost:9001/index

그림 삽입 설명 여기
可以看到其实获取了9000服务提供者的接口。这样就实现了服务的注册和发现啦,并实现远程调用。

集群模式(高可用)

上面我们我们搭建的注册中心只是单机模式,只有一个Eureka 服务端,单实际应用中注册中心其实是尤为重要的,所以就需要搭建集群环境,其实Eureka 对集群模式是天然的支持的,我们搭建也非常简单。
为什么这么说呢,我们前面可以看到只要配置了eureka.client.serviceUrl.defaultZone 就就会被对应的注册中线检测到,所以我们代码完全一样,只需要将eureka.client.serviceUrl.defaultZone相互指引就可以了,就就可以简单的搭建一个高可用的环境。
下面我们来搭建一个,因为我们就一台服务器,所以就用不同的端口,其实代码完全一样的,只是配置文件中配置不一样,我们分别把三个分配置文件贴出来。
8000端口的

spring.application.name=spring-cloud-eureka-server-8000
server.port=8000

#表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=true

# 表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.fetch-registry=true

#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。多个地址可使用 , 分隔。
eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/,http://localhost:8002/eureka/

8001端口:

spring.application.name=spring-cloud-eureka-server-8001
server.port=8001
#表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=true
# 表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.fetch-registry=true
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。多个地址可使用 , 分隔。
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/,http://localhost:8002/eureka/

8002 端口

spring.application.name=spring-cloud-eureka-server-8002
server.port=8002
#表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=true
# 表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.fetch-registry=true
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。多个地址可使用 , 分隔。
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/,http://localhost:8001/eureka/

我们现在分别启动这个这三个配置文件,你们可以用profile 来指向,我这为了分明,直接创建了三个模块。启动后,我们分别访问

http://localhost:8000/
http://localhost:8001/
http://localhost:8002/

그림 삽입 설명 여기
这里可以看到其实已经相互监控了。我们了解一下这两个配置参数。

#定义服务续约任务的调用时间间隔,默认30s
eureka.instance.lease-renewal-interval-in-seconds=30
#定义服务失效的时间默认90s
eureka.instance.lease-expiration-duration-in-seconds=90

我们现在再将我们的服务提供者和服务消费者注册进来,但是这里,需要修改的地方也是eureka.client.serviceUrl.defaultZone。将服务注册到集群中。

eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/,http://localhost:8001/eureka/,http://localhost:8002/eureka/

然后启动项目可,可以看到注册到了注册中心,并且可以调用服务提供者提供的接口。
그림 삽입 설명 여기

总结

最后画了一张图来说明整个注册中心的架构图。
그림 삽입 설명 여기

可以看到注册服务端可以是一个集群。相互注册监控。服务消费者和服务提供者都是服务客户端,都会将服务注册到服务中心,同时这些服务也都可以使是集群或者分布式的。服务提供者会从服务端获取服务提供者可用的服务实例列表,通过负载均衡策略选择其中某一实例进行调用。这个算是Eureka 的总结吧哈哈

番外

음, 항상 완료,이 문서가 정말 며칠 동안 내 카드가 아주 좋은, 쓰기에 어떤 장소가 아닌, 우리는 지침을 환영합니다.
코드는 GitHub의에 업로드 :
https://github.com/QuellanAn/SpringCloud

후속 가자 ♡

개인 공공 우려 번호 "프로그래머가 요구르트를 사랑"에 오신 것을 환영합니다

자바, 리눅스, 빅 데이터를 포함하는 학습 자료의 다양성을 공유 할 수 있습니다. 자신과 고품질의 기술 블로그의 전달을 공유하면서 정보, 비디오, 문서 및 소스 코드가 포함되어 있습니다.

당신과 관심 같은하다면 요를 공유하는 기억 ❤

파일

추천

출처www.cnblogs.com/quellanan/p/12173441.html