SpringCloud注册中心Eureka 以及 Eureka服务端、客户端搭建
SpringCloud注册中心Eureka 以及 Eureka服务端、客户端搭建
什么是服务注册
服务注册:将服务所在主机、端口、版本号、通信协议等信息登记到注册中心上;
什么是服务发现
服务发现:服务消费者向注册中心请求已经登记的服务列表,然后得到某个服务的主机、端口、版本号、通信协议等信息,从而实现对具体服务的调用;
为什么要使用 Eureka 注册中心、Eureka 的优点
1)Eureka Client 与 Eureka Server 交互,只需要通过服务标识符就可以获取其注册的服务;不需要像以前一样通过 http://localhost:8080/ 来调用服务提供者地址;
2)可以实现服务的负载均衡和故障转移;比如一个服务崩了,我们可以调用备份服务,不影响程序正常的使用;
Eureka 是什么
1)Eureka 是 Netflix 的子模块之一,也是一个核心模块
2)Eureka 采用 C-S(客户端/服务端)的设计架构,也就是 Eureka 由两个组件组成;Eurake 服务端,Eureka 客户端;
3)Eureka Server 是一个独立的项目,用于注册服务以及实现服务的负载均衡和故障转移,它是服务的注册中心
4)Eureka Client 是我们的微服务,它是用于与 Eureka Server 交互,获取其注册的服务,使得交互变得非常简单(eg:不需要去记服务提供方的接口地址),只需要通过服务标识符拿到服务即可。
比如:没有 Eureka Client 时,我们需要标注 消费者端的服务接口地址;
Eureka 与 SpringCloud 的关系
Eureka 是 Netflix 公司开发的,SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务的注册与发现;也就是说 SpringCloud 对 Netflix Eureka 做了二次封装;
角色关系图:
Eureka 服务端搭建
1)创建一个新的Model,添加 Eureka 服务端依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
</dependencies>
2)引入 注解 @EnableEurekaServer,开启Eureka 注册中心服务端
@EnableEurekaServer //开启Eureka 注册中心服务端
@SpringBootApplication
public class CloudServerEureka8761 {
public static void main(String[] args) {
SpringApplication.run(CloudServerEureka8761.class, args);
}
}
3)在 application.properties 对 Eureka 服务端进行相关配置
#指定内嵌的Tomcat端口
server.port=8761
spring.application.name=cloud-server-eureka8761
#Eureka服务端的实例名字
eureka.instance.hostname=localhost
# 表示是否向 Eureka 注册中心注册自己(这个模块本身是服务器,所以不需要)
eureka.client.register-with-eureka=false
# fetch-registry如果为false,则表示自己为注册中心,不需要去服务端检索其他服务信息
eureka.client.fetch-registry=false
# 指定 Eureka 服务注册中心的位置
eureka.client.service-url.default-zone=http://localhost:8761/eureka
4)启动 Eureka 服务端,进行访问
Eureka 客户端搭建
1)在服务提供者端添加,Eureka客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
2)添加 @EnableEurekaClient 注解
@EnableEurekaClient
@SpringBootApplication
public class CloudProviderPaymennt8001Application {
public static void main(String[] args) {
SpringApplication.run(CloudProviderPaymennt8001Application.class, args);
}
}
3)在 application.properties 对 Eureka 客户端进行相关配置
server.port= 8001
# Spring的业务名
spring.application.name=cloud-payment-server
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.mapperLocations= classpath:mapper/*.xml
# 所有 entity 别名类所在包
mybatis.type-aliases-package= com.lmgd.comm.entity
# 打开所有 web 的访问端点
management.endpoints.web.exposure.include=*
# 每隔 2s,向服务端发送一次心跳,证明自己依然“存活”
eureka.instance.lease-renewal-interval-in-seconds=2
# 告诉服务端,如果我 10s 之内没有给你发心跳,就代表我故障了,将我踢出掉
eureka.instance.lease-expiration-duration-in-seconds=10
# 告诉服务器,服务实例以 ip 作为链接,而不是取机器名 hostname
eureka.instance.prefer-ip-address=true
# 告诉服务端,服务实例的名字
eureka.instance.instance-id=cloud-provider-paymennt8001
# Eureka 注册中心的连接地址
eureka.client.service-url.default-zone=http://localhost:8761/eureka
4)启动 Eureka 客户端,访问注册中心地址 localhost:8761
同理也可以把 消费者端注册到注册中心:
Status 的名字就是在 xml 配置的这个属性
# 告诉服务端,服务实例的名字 eureka.instance.instance-id=cloud-consumer-server # 告诉服务端,服务实例的名字 eureka.instance.instance-id=cloud-provider-paymennt8001
更多推荐
所有评论(0)