无业可守 创新图强
living innovation

太阳集团43335.com

当前位置:首页 > 太阳集团43335.com >

Spring Cloud Finchley.SR1 (1) 注册中心:Eureka简单入门

日期:2019-07-08

Eureka

  使用场景

 

    微服务,将业务模块向下图1一样划分为了一个个服务。初期,服务间的调用我们可以使用RESTApi来通信,但到了后期,服务多了以后,还通过RESTApi访问其他服务,因为RESTApi使用ip+port来访问,服务的数量级上去,代码嵌入地址或者配置文件的方式都会造成管理上的不变。

 

                          

                                               图1

 

    so,我们开始使用一种更为简单的方式注册中心(Eureka)来实现服务的互相调用,GO!

 

  技术架构

 

    网上有完整版的eureka架构图,这里我们不在赘述,以一个简单的架构图,来了解eureka的架构

 

                                         

                       图2

    根据图2,我们可以知道eureka将参与者分为了

      ·服务发现者

      ·服务提供者

      ·服务消费者

    首先,服务发现者即是服务端(Server),提供者和消费者是客户端(Client);

    客户端将自己注册到服务端,服务端可以在其他服务需要客户端是将客户端返回;

    好处:客户端和客户端之间,只需要知道彼此在服务端注册的名字,无论对方ip,port,内容更改 都不会受到影响;

  

  开始实战

   服务端

     pom     

<!-- 父模块信息 --> <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Finchley.SR1</version> </parent> <!-- 引用jar --> <dependencies> <!-- cloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <!-- eureka server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>

 

    yml

server: port: 8080 # 当前eureka server 服务的端口号为8080eureka: instance: hostname: localhost # 当前eureka 的hostname 为 localhost client: register-with-eureka: false # 当前服务不需要到eureka server上注册为客户端 fetch-registry: false # serviceUrl: # eureka服务地址 defaultZone: http://localhost:8080/eureka/

       客户端A

    pom

<!-- 父模块信息 --> <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Finchley.SR1</version> </parent> <!-- 引用jar --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- cloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <!-- eureka server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>

 

    yml

spring: application: name: provider-source #服务名称server: port: 8082 #启动端口号eureka: instance: hostname: localhost client: register-with-eureka: true #是否注册到eureka服务器 fetch-registry: true #是否可检索 service-url: defaultZone: http://localhost:8080/eureka/ #服务中心

  客户端B

    pom

<!-- 父模块信息 --> <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Finchley.SR1</version> </parent> <!-- 引用jar --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- cloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <!-- eureka client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependency> </dependencies>

     yml

spring: application: name: provider-speaker # 服务名称server: port: 8081 # 服务占用端口号eureka: instance: hostname: localhost client: register-with-eureka: true #是否注册到eureka服务器 fetch-registry: true #是否可检索 service-url: defaultZone: http://tj:tj123456@localhost:8080/eureka/ #服务中心

  服务端启动类添加注解

 

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

  客户端A,B分别添加注解

package com.tj;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClient # eureka客户端注解public class SpeakerApplication { public static void main(String[] args) { SpringApplication.run(SpeakerApplication.class, args); }}

 

  接着,依此启动服务端,客户端A,客户端B;

  打开,服务端地址http://localhost:8080,可以看到以下图3,便说明客户端在服务器注册成功

                     

                        图3

  至此,Eureka入门,已经完成。