微服务四 在sprig cloud框架中搭建Eureka
--Spring Cloud简介
SpringCloud是微服务架构的集成,对于一些优秀的组件进行整合,是基于springboot构建的。可以通过注解功能,就可以快速地配置常用模块和构键分布式系统。微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署,独立维护,独立扩展,服务与服务之间可以通过api互相调用。
--Spring Cloud的5个常用组件
- Netflix Eureka - 服务发现
- Netflix Ribbon - 客户端负载均衡
- Netflix Hystrix - 断路器
- Netflix Zuul - 服务网关
- Spring Cloud Config - 分布式配置
--搭建Eureka Server
-用idea创建新项目
-选择maven
-创建好之后删除项目下的src包,右键项目添加模块
-将模块命名为Eureka
-然后我们在服务端Eureka的pom.xml文件里添加需要的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
-在resources目录下创建application.yml作为配置文件
-application.yml的配置
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
# 设置在启动的时候不向注册中心注册
register-with-eureka: false
#设置不拉取注册信息
fetch-registry: false
#设置集群地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
默认不配置端口的话,eureka的端口默认为8761
server:
enable-self-preservation: false # eureka 自我保护模式,开发中可以关闭,但上线一定开启。server 端配置,client端不用配置。
自我保护模式的配置,测试时可以选择关闭
-创建客户端模块
-配置客户端依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
-在该模块下的resource目录下创建配置文件application.yml
-客户端配置文件配置
# client 端
spring:
application:
name: eureka # 服务名
server:
port: 8081 #端口
#Eureka配置
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ # 如果eureka是集群可以配置多个服务端地址用逗号分割
-创建springboot启动类来开启web服务
//eureka服务的springboot启动类,用来开启web服务
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
业务模块的,也就是服务端的启动类
@EnableEurekaServer
@SpringBootApplication
public class FlightApplication {
/*
微服务启动流程:
微服务启动流程,必须先启动注册中心,也就是模块中的eureka服务
然后再启动业务模块
最后再启动api模块
*/
public static void main(String[] args) {
SpringApplication.run(FlightApplication.class, args);
}
}
微服务的启动流程:先启动注册中心,再启动业务模块,最后再启动api模块
-启动之后,看看是否成功
打开浏览器,地址栏输入127.0.0.1:8761(默认端口为8761)
可以看到spring eureka的界面说明成功了
这里显示了成功启动并且在eureka注册中心注册的应用名字
-我们将业务模块关闭,刷新页面会发现多了两行警告,提示应用的心跳停止
但是应用的服务并没有在注册中心中删除
这就是因为eureka的自我保护模式启动,不会再接收心跳,也不会删除服务