本文基于SpringBoot2.1.2
Eureka 简介
Eureka是一个用于服务注册和发现的组件,分为Eureka Server和Eureka Client,Eureka Server为Eureka服务注册中心,Eureka Client为Eureka客户端。
Eureka的基本框架主要包括3种角色:
- Register Service:服务注册中心,是一个Eureka Server,提供服务注册与发现功能;
- Provider Service:服务提供者,是一个Eureka Client,提供服务;
- Consumer Service:服务消费者,是一个Eureka Client,消费服务。
服务消费基本过程:
(1)首先需要一个服务注册中心Eureka Server;
(2)服务提供者Eureka Client向服务注册中心Eureka Server注册,将自己的信息(服务名、服务IP地址)通过REST API的形式提交注册周年更新Eureka Server;
(3)服务消费者Eureka Client向服务注册中心Eureka Server注册,服务消费者获取服务注册列表信息。该列表信息包含所有向服务注册中心Eureka Server注册的服务信息;
(4)服务消费者Eureka Client获取服务注册列表信息之后,获得服务提供者的IP地址,通过HTTP远程调度来消费服务提供者的服务。
Eureka是SpringCloud首选推荐的注册与服务发现组件,与SpringCloud其他组件可以无缝对接。
项目示例,(后续的SpringCloud代理都基于此项目)
1. 在idea中创建 SpringCloud_Parent 父工程
2. 在父工程下创建eureka_server模块(即注册中心)
选择SpringBoot版本和初始化组件
创建完成后目录结构如下图:
3. 编写application.yml 配置文件
#服务端口号
server:
port: 8100
###eureka基本配置信息
eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
####注册地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
###因为自己是注册中心,是否需要将自己注册给自己(集群时是需要为 true)
register-with-eureka: false
#####因为自己是注册中心,不需要去检索服务信息
fetch-registry: false
如果配置文件为application.properties 把后缀改为.yml即可,当然application.properties文件也是可以的,只是文件内容写法不同,可以自己百度下
4. 编写启动类 EurekaServerApplication
@SpringBootApplication
@EnableEurekaServer //表示开启EurekaServer 服务,即开启注册中心
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
5. 访问EurekaServer 注册中心
在浏览器 输入 127.0.0.1:8100
EurekaServer(即注册中心) 就搭建成功了
6. 创建服务提供者
在项目下新建一个memer-service(会员服务)作为服务提供者,并写一个接口,以便后面服务调用者调用
application.yml
#服务端口号
server:
port: 8000
###服务名称 --注册到注册中心的服务名称
spring:
application:
name: mermber-service
###eureka基本配置信息
eureka:
client:
service-url:
####当前服务的注册中心地址
defaultZone: http://localhost:8100/eureka
###需要将服务注册到eureka上
register-with-eureka: true
#####需要去检索服务信息
fetch-registry: true
MemberController
@RestController
public class MemberController {
@RequestMapping("/getMember")
public String getMember(){
return "this is a member service:会员服务";
}
}
启动类MemberApplication
@SpringBootApplication
@EnableEurekaServer //表示开启EurekaServer 服务,即开启注册中心
public class MemberApplication {
public static void main(String[] args) {
SpringApplication.run(MemberApplication.class, args);
}
}
这里服务提供者就搭建好了,接着先启动EurekaServerApplication(注册中心),再启动服务提供者MemberApplication,然后在浏览器输入:127.0.01:8100
已经有刚刚的会员服务了。说明会员服务已经注册上去了。点击后面的地址在拼上我们刚刚写的controller的路径
就访问到了刚刚写的接口中的内容了,至于在程序中如何调用,后面的文章中会讲到。