本文共 5439 字,大约阅读时间需要 18 分钟。
今天小咸儿来带大家看的是spring cloud的服务发现和治理——Eureka,虽然Eureka在闭源之后,给我们带来了一些麻烦,但是用来学习一下还是非常不错的。
首先先来看一下这张宝图:
这张图很清晰的展示了Eureka的作用,其中Eureka分为服务端(server)和客户端(client)。服务端作为注册中心,客户端则可以分为提供者和消费者来进行服务间的调用,其中需要注意的是某个服务可以既是提供者也是消费者。
首先声明本项目是建立在SpringBoot2.0以上,而且JDK也是1.8以上。
服务端:server
4.0.0 com.itmayiedu springcloud-2.0-eureka-server 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE org.springframework.cloud spring-cloud-dependencies Finchley.SR1 pom import org.springframework.cloud spring-cloud-starter-netflix-eureka-server spring-milestones Spring Milestones https://repo.spring.io/libs-milestone false
### 服务端口号server: port: 8100##定义服务名称,在集群中一定要相同spring: application: name: app-itmayiedu-eurekaeureka: instance: ### 注册中心IP地址 hostname: 127.0.0.1 client: serviceUrl: ### 注册地址 defaultZone: http://${ eureka.instance.hostname}:{ server.port}/eureka/ ### 因为自己是注册中心,是否需要将自己注册给自己的注册中心(集群的时候是需要为true) register-with-eureka: false ### 因为自己是注册中心,不需要去检索服务信息(集群时需要) fetch-registry: false
package com.itmayiedu;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;import java.io.OutputStream;/** * EurekaServer服务 * @author Phyllis * @date 2019年7月26日17:39:53 */// 开启这个服务@SpringBootApplication/** * 表示开启EurekaServer服务 */@EnableEurekaServerpublic class AppEureka { public static void main(String[] args){ SpringApplication.run(AppEureka.class, args); }}
运行起来后,页面展示:
客户端:client 会员服务先来看一下pom文件
这里需要引入的是 spring-cloud-starter-netflix-eureka-client
4.0.0 com.itemayiedu springcloud-2.0-member 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE org.springframework.cloud spring-cloud-dependencies Finchley.SR1 pom import org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client spring-milestones Spring Milestones https://repo.spring.io/libs-milestone false
### 会员项目的端口号server: port: 8000### 服务别名——服务注册到注册中心上的名称spring: application: name: app-itmayiedu-membereureka: client: service-url: ##### 当前会员服务注册到Eureka服务地址 defaultZone: http://localhost:8100/eureka ### 需要将我的服务注册到Eureka上 register-with-eureka: true #### 需要检索服务 fetch-registry: true
package com.itmayiedu.aip.controller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/** * * @author Phyllis * @date 2019年7月26日19:23:17 */@SpringBootApplication/** * 将当前服务注册到Eureka上 */@EnableEurekaClientpublic class AppMember { public static void main(String[] args){ SpringApplication.run(AppMember.class, args); }}
package com.itmayiedu.aip.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * 我是会员服务的ApiController * @author Phyllis * @date 2019年7月26日19:22:09 */@RestControllerpublic class MemberApiController { @Value("${server.port}") private String serverPort; @RequestMapping("getMember") public String getMember(){ return "this is member, 我是会员服务,spring cloud2.0版本,端口号:" + serverPort; }}
这样就简单的完成一个服务注册。看起来是不是十分简单呢,注册中心默认每隔30秒进行一次续约,用来检测客户端的心跳,这只是Eureka心跳机制的一部分,更多的内容可以和小咸儿一起去探索哦!
转载地址:http://xjerb.baihongyu.com/