Spring cloud笔记

来源:互联网 发布:首届全球程序员节嘉宾 编辑:程序博客网 时间:2024/06/01 08:05

仅限于学习用途的转载,转载请注明出处http://eumji025.com/article/details/251169

euraka介绍

Eureka是一种基于REST的服务,主要用于AWS云中,用于定位服务,以实现中间层服务器的负载平衡和故障转移。

Netflix,Eureka除了在中层负载平衡中扮演重要角色之外,还被用于以下领域。

  • 帮助Netflix Asgard - 一个使云部署更容易的开源服务
    • 在出现问题的情况下快速回滚版本,避免重新启动100个可能需要很长时间的实例。
    • 在滚动推动时,为避免在发生问题时将新版本传播到所有实例。
  • 对于我们的Cassandra部署,为了维护而将实例移出流量。
  • 对于我们的memcached缓存服务来识别环中的节点列表。
  • 为了携带其他额外的应用程序特定的有关服务的元数据,其他原因

上述为eureka在github中的描述.

Eureka是Netflix服务发现的一种服务和客户端。这种服务是可以被高可用性配置的和部署,并且在注册的服务当中,每个服务的状态可以互相复制给彼此。

一个客户端注册到Eureka,它提供关于自己的元数据(诸如主机和端口,健康指标URL,首页等)Eureka通过一个服务从各个实例接收心跳信息。如果心跳接收失败超过配置的时间,实例将会正常从注册里面移除。

eureka案例

eureka server

首先需要引入eureka相关的依赖

pom.xml

<parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.3.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>        <spring-cloud.version>Dalston.RELEASE</spring-cloud.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka-server</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </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>

application.yml

在配置文件中,我们需要指明server的端口和server的url

server:  port: 8761eureka:  client:    registerWithEureka: false    fetchRegistry: false    serviceUrl:      defaultZone: http://localhost:${server.port}/eureka/  server:    waitTimeInMsWhenSyncEmpty: 0

SpringCloudDiscoveryEurekaServerApplication.java

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

@EnableEurekaServer用来开启euraka的服务,

配置完成后我们允许服务,并在浏览器中访问 http://localhost:8761

eureka server

通过上图我们可以看到,在只开启server的时候,是没有注册的客户端的,接下来我们开始配置服务端.

eureka client

客户端需要配置一些链接到服务的参数,如主机端口等.

pom.xml

<parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.3.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>        <spring-cloud.version>Dalston.RELEASE</spring-cloud.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka-server</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </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>

application.yml

指定服务中心的url

eureka:  client:    serviceUrl:      defaultZone: http://localhost:8761/eureka/

#### SpringCloudDiscoveryEurekaClientApplication.java

@Configuration@EnableAutoConfiguration@EnableEurekaClient@RestControllerpublic class SpringCloudDiscoveryEurekaClientApplication {   @RequestMapping("/")   public String home() {      return "Hello World";   }   public static void main(String[] args) {      new SpringApplicationBuilder(SpringCloudDiscoveryEurekaClientApplication.class).web(true).run(args);   }}

@EnableEurekaClient注解声明这是eureka的客户端.

配置完客户端我们运行客户端,然后刷新eureka server页面,会出现如下结果.已经有一个服务UP了.

eureka client

结语

eureka服务注册与发现的示例到此结束,更多深入的内容和细节部分需要再细读eureka的官方文档.

与君共勉!!!

参考文档

service-discovery-eureka

案例代码

discovery-eureka-client
discovery-eureka-server

0 0
原创粉丝点击