本文共 3579 字,大约阅读时间需要 11 分钟。
注册中心是微服务的核心,提供服务注册与发现,当一个服务启动时,会把自己的信息注册到注册中心,当一个服务需要调用另一个服务时,会通过别名从注册中心获取到相关服务的信息,比如该服务的地址等。
Zookeeper 也可以作为注册中心,Eureka 和 Zookeeper 的区别在于 Eureka 保证 AP,Zookeeper 保证 CP,AP 也就是 CPA 理论中的高可用和分区容错,每一个服务在注册中心注册后,会定时向注册中心发送心跳,表示自己活着,如果发送心跳超时,服务注册中心会把这个服务从注册中心剔除。
CPA 理论:
C(Consistency,一致性),保证数据的一致性,同步更新数据。 P(Partition tolerance,分区容错),可靠性。 A(Availability,可用性),良好的响应性能。下面将使用 Eureka 来搭建注册中心:
首先创建一个 Maven 工程,父 pom 文件如下,下面是需要添加的关键依赖信息。
UTF-8 1.8 1.8 Finchley.RELEASE org.springframework.boot spring-boot-starter-parent 2.0.5.RELEASE junit junit 4.11 test org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import
Maven 依赖
com.hly 01-spring-cloud-eureka 1.0-SNAPSHOT UTF-8 UTF-8 1.8 org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-web
application.yml 配置
server: port: 8761eureka: instance: hostname: localhost client: #默认情况下eureka server也是一个eureka client #表明自己是一个eureka server,不会需要注册自己 registerWithEureka: false #表明自己是一个eureka server,不需要从eureka上获取注册信息 fetchRegistry: false serviceUrl: #指定服务注册中心地址 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/spring: application: # 注册中心的名称 name: eureka-server
SpringBoot 启动类
@SpringBootApplication@EnableEurekaServerpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); }}
完成后访问 http://localhost:8761/ 出现以下结果则成功。
Maven 依赖
com.hly 01-spring-cloud-eureka 1.0-SNAPSHOT UTF-8 UTF-8 1.8 org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web
application.yml 配置文件
server: port: 8762spring: application: name: eureka-clienteureka: client: serviceUrl: # 注册中心地址 defaultZone: http://localhost:8761/eureka/
SpringBoot 启动类
@SpringBootApplication@EnableEurekaClient@RestControllerpublic class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } @Value("${server.port}") String port; @RequestMapping("/hi") public String home(@RequestParam(value = "name", defaultValue = "hly") String name) { return "hi " + name + " ,i am from port:" + port; }}
启动之后,再次访问 http://localhost:8761/ ,则会发现服务已经注册到了注册中心。
我们访问 http://localhost:8762/hi 则可以访问到服务提供者所返回的信息。01-spring-cloud-eureka:
公众号:【星尘Pro】
github:
推荐阅读
转载地址:http://iufsi.baihongyu.com/