第2章 Eureka微服务搭建
1. Eureka微服务搭建
1.1 Eureka介绍
1.1.1 Eureka是什么?
Eureka是基于REST服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移,功能类似于Dubbo的注册中心Zookeeper,所以在 Spring Cloud微服务架构中通常用作注册中心。我们称这个服务为 Eureka Server还有一个与之交互的客户端称之为 Eureka Client
1.1.2 Eureka实现原理
Eureka采用C-S的设计架构,即包括了Eureka Server(服务端),Eureka client(客户端)
- Eureka Server提供服务注册,在各个节点启动后,会在Eureka Server中进行注册
- Eureka Client是一个Java客户端,用于和服务端进行交互,同时客户端也是一个内置的默认使用轮询负载均衡算法的负载均衡器。在应用启动后会向Eureka Server发送心跳(默认30秒)。如果Eureka Server在多个心跳周期内没有接受到某个节点的心跳,Eureka Server将会从服务注册表中将这个服务移出(默认90秒)。
- 服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Eureka采用的是客户端发现模式
1.2 Eureka微服务搭建
1.2.1 pom.xml配置
创建模块thankson-springcloud-eureka
并修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>changgou</artifactId>
<groupId>com.thankson.springcloud</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>thankson-springcloud-eureka</artifactId>
<packaging>jar</packaging>
<description>注册中心</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
1.2.2 appliation.yml配置
在resources目录下创建配置文件application.yml
server:
port: 8761
spring:
application:
name: eureka
eureka:
instance:
#设置当前实例的主机名称
hostname: localhost
#定义服务失效的时间,单位:秒
lease-expiration-duration-in-seconds: 20
#定义服务续约任务(心跳)的调用间隔,单位:秒
lease-renewal-interval-in-seconds: 10
#不使用主机名来定义注册中心的地址,而使用IP地址的形式,如果设置了属性,则使用该属性配置的IP,否则自动获取除环路IP外的第一个IP地址
prefer-ip-address: false
instance-id: ${spring.cloud.client.ip-address}:${server.port}
#IP地址
ip-address: localhost
#状态页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置
status-page-url-path: /info
#健康检查页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置
health-check-url-path: /health
#健康检查页面的URL,绝对路径
health-check-url: /
client:
#是否注册为服务 服务端必配,禁止自生注册
register-with-eureka: false
#是否检索服务 服务端必配,表示自己就是注册中心,不需要去检索服务
fetch-registry: false
#eureka默认空间的地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
healthcheck:
enabled: true
registry-fetch-interval-seconds: 5
server:
#关闭自我保护(生产时打开该选项) 关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者,如果关闭服务注册中心将不可用的实例正确剔除
enable-self-preservation: false
#扫描失效服务的间隔时间(缺省为60*1000ms)
eviction-interval-timer-in-ms: 10000
1.2.3 添加启动类
在com.thankson.springcloud.eureka
文件夹下创建EurekaApplication.java
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
1.2.4 测试
启动EurekaApplication.java,访问链接http://localhost:8761
2. common模块搭建
以thankson-springcloud-common
为父工程创建出thankson-springcloud-common-util
、thankson-springcloud-common-component
两个模块。
2.1 功能介绍
common模块结构如下:
thankson-springcloud-common-util
工具类公共模块 包含DateUtils、RandomUtils、ReflectionUtil、DateUtils等
thankson-springcloud-common-component
组件公共模块:主要包括canal、redis、rabbitMQ等
2.2 util模块
在src/main/java目录下创建文件夹 com.thankson.common.util
,并添加需要用到的工具类
2.3 component模块
在src/main/java目录下创建文件夹 com.thankson.common.component
,并添加需要用到的工具类
3. 结束语
至此,eureka与common模块已开发完毕。