开发者学堂课程【SpringBoot 快速掌握 - 高级应用:SpringCloud-Eureka 注册中心】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/613/detail/9319
SpringCloud-Eureka 注册中心
内容介绍
一、SpringCloud
二、使用 SpringCloud
一、SpringCloud
之前的课程中整合了 zookeeper 和 dubbo,本节课整合 SpringCloud 做分布式应用。
1、SpringCloud 和 dubbo 的区别
Dubbo 是一个分布式服务框架,主要解决服务之间比如 A 服务 B 服务 C 服务的远程过程调用问题,也就是服务之间的 rpc 。而 SpringCloud 是一个分布式的整体解决方案,在分布式系统中需要考虑的所有问题在 SpringCloud 中都有解决方案。比如配置管理,服务发现,熔断机制,路由等等,只要是分布式系统中存在的问题,SpringCloud 中都有对应的解决方案。
2、SpringCloud 分布式开发五大常用组件
服务发现—Netflix Eureka
客服端负载均衡—Netflix Ribbon
断路器—Netflix Hystrix
服务网关—Netflix Zuul
分布式配置—Spring Cloud Config
举例:将 A B 服务注册到注册中心里,Spring Cloud 有相应的组件 Eureka。
A B 服务要实现互联互调,比如 A 服务部署了三个实例, B 服务部署了四个实例, A 服务调用 B 服务要调哪台机器上的 B 服务,还能做客服端负载均衡 Ribbon。
A 服务调用 B 服务时,B 服务还调用了 C 服务,C 服务调用了 D 服务,D 服务调用了 E 服务,当 C 服务或者 E 服务出现问题导致无法运行,就可以引入断路器给 B 服务,使 B 服务在几次调用失败后快速的响应失败,让用户减少等待时间。
A B 服务调用之前可以用 zuul 网关过滤请求。服务之间的配置也可以使用分布式配置。
二、使用 Spring Cloud
创建一个空工程,命名为 springboot-06-springcloud ,点击 finish。
主要创建三个模块,第一个是注册中心,在 dubbo 中是使用 zookeeper 做注册中心,这里直接使用 Spring Cloud 的 Eureka。
1、创建注册中心
使用 Spring 初始化向导,group 是 com.atguigu,Artifact 是 eureka-server。改为1.5.12版本,由于要做注册中心,在 Cloud Discovery 中找到 Eureka Server,点击 finish,这样就创建出了第一个模块,用它做注册中心。
//注册中心
@SpringBootApplication
Public class EurekaServerApplication {
public static void main(String[ ]args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
2、创建服务提供者
创建第二个模块服务提供者。group 是 com.atguigu, Artifact 是 provider-ticket。选中1.5.12版本。注意服务提供者和服务消费者都是在注册中心里,所以还是选择 Cloud Discovery。但是服务提供者不是注册中心而是给在注册中心里注册自己,或者服务消费者是从注册中心里获取提供者,所以这里选择 Eureka Discovery 服务注册和发现模块。
3、创建服务消费者
创建第三个模块服务消费者,group 是com.atguigu,Artifact 是consumer-user。选中1.5.12版本。选择 Cloud Discovery 中的 Eureka Discovery 模块,消费者需要在注册中心发现服务。
目前创建了三个模块,Eureka Server 是注册中心,将其他的服务注册进来需要先启动 Eureka 。
4、配置信息
启动前需要做一些配置,在 resources 下新建 application.yml 。使用 yml 做配置文件层次会更加清晰。
//服务端口号为8761,服务器用8761启动
server:
port: 8761
//指定 eureka 实例主机的名字为 Eureka Server。
eureka:
instance:
hostname:eureka-server
//配置 Eureka 客户端的一些信息。将 client 的 register-with-eureka 调为 false。
Client:
register-with-eureka: false
//作用是不会把 Eureka 本身再注册到注册中心里。不做高可用的情况下把 register-with-eureka 调为 false。
fetch-registry:false
//作用是不从 eureka 上获取服务的注册信息。因为 eureka 本身就是一个注册中心,不像消费者一样需要获取提供者的信息。默认是 true 的,调为 false。
Service-url:
default_zone: http://localhost:8761/eureka/
//指定 eureka 注册中心的地址,其他服务就是要在这里注册。可以不指定,Service-url 有一个默认值。 Serviceurl 会注入一个 map ,map 默认放一个 default_zone 和 default_url。 default_url是 ”http://localhost:8761"+default_prefix。这里自己指定地址。
//修改完配置后,启用注册中心需要结合一个注解 @EnableEurekaServer。
@EnableEurekaServer
@SpringBootApplication
Public class EurekaServerApplication {
public static void main(String[ ]args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
启动注册中心需要两步,第一步是配置 Eureka相 关信息第二步是使用 @EnableEurekaServer 启用注册中心的功能。
5、测试
启动注册中心进行测试
8761端口已经运行了,访问网址 localhost:8761。
该界面就是 Eureka 注册中心的页面,这里显示了当前注册在 Eureka 中的服务实例。目前这里还没有注册进任何服务,只是先启动了注册中心。