dubbo的注册中心是zookeeper,那么springcloud的注册中心是Eureka.
Eureka这个词是为了纪念阿基米德而来的,寓意大概就是发现的意思。
Eureka是什么
官网的解释:
Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定
位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常
重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改
服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。
说白了就是一张表,别人可以来这里登记,然后要用他的人就先来找找。
Eureka包含两个组件:Eureka Server和Eureka Client
Eureka Server提供服务注册服务
各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到
EurekaClient是一个Java客户端
用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)
Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。
Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。
Eureka的三大角色
Eureka Server 提供服务注册和发现
Service Provider服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到
Service Consumer服务消费方从Eureka获取注册服务列表,从而能够消费服务
结合我们现在已有的工程模块看看:
总父工程 microservicecloud
通用模块api microservicecloud-api
服务提供者Provider microservicecloud-provider-dept-8001
服务消费者Consumer microservicecloud-consumer-dept-80
2.搭建服务注册中心
新建项目microservicecloud-eureka-7001 eureka服务注册中心Module
pom文件如下:
<project>
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>com.spring.springcloud/<groupid>
<artifactid>microservicecloud/<artifactid>
<version>1.0-SNAPSHOT/<version>
<artifactid>microservicecloud-eureka-7001/<artifactid>
<dependencies>
<dependency>
<groupid>org.springframework.cloud/<groupid>
<artifactid>spring-cloud-starter-eureka-server/<artifactid>
<dependency>
<groupid>org.springframework/<groupid>
<artifactid>springloaded/<artifactid>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-devtools/<artifactid>
/<project>
搭建完后回到父工程pom文件看看:
3.新建application文件
server:
port: 7001
eureka:
instance:
hostname: localhost #eureka服务端的实例名称,就是给他起了个名字
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#给他一个url,设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
配置完后在主目录下新建启动类:
package com.spring.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
//代表eureka的服务端,接收其他服务注册进来
public class EurekaServer7001_App {
public static void main(String[] args) {
SpringApplication.run(EurekaServer7001_App.class,args);
}
}
单独启动项目:访问localhost:7001/
可以看到现在还没有服务注册进来。
閱讀更多 LOVER 的文章