目录
Eureka简介
Spring Cloud引入Eureka
1.创建cloud-eureka-server7001子项目
需要引入依赖(表明是eureka server):
写yml:
主启动,要加入@EnableEurekaServer这个注解
2.EurekaClient端cloud-consumer-order80,将注册进EurekaServer成为服务消费者consumer。
1.改POM,引入依赖eureka-client:
2.改yml
3.主启动,加入@EnableEurekaClient 依赖:
3.EurekaClient端cloud-provider-payment8001,将注册进EurekaServer成为服务提供者provider。
Eureka集群
参考cloud-eureka-server7001,新建cloud-eureka-server7002
修改hostss文件:
修改7001的yml,让其对应7002的地址:
修改7002的yml,让其对应7001的地址:
将支付服务8001微服务发布到上面2台Eureka集群配置中,yml
将订单服务80微服务发布到上面2台Eureka集群配置中。
支付服务提供者8001集群环境搭建:
新建8002支付服务。
实现负载均衡:
服务注册和服务发现:Eureka采用了CS的设计架构,Eureka Sever作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到 Eureka Seve并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server来监控系统中各个微服务是否正常运行。
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息比如服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用框架核心设计思想∶在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))。
Eureka包含两个组件: Eureka Server和Eureka Client
Eureka Server提供服务注册服务
各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。
EurekaClient通过注册中心进行访问
是一个ava客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)
五步法:在Spring Cloud项目搭建中详细介绍,
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务器的实例名称
client:
register-with-eureka: false #false表示不注册自己
fetch-registry: false #false表示自己是注册中心,去维护服务实例
service-url:
defaultZone: http://eureka7002.com:7002/eureka/
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
server:
port: 8001
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
# 集群版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
与上述步骤一致。
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
填写到hosts文件中,可以用VSC打开,修改然后保存。
server:
port: 7001
spring:
application:
name: cloud-eureka-service
eureka:
instance:
# eureka服务端的实例名称
hostname: eureka7001.com
client:
# false表示不向注册中心注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要检索服务
fetch-registry: false
service-url:
# 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
defaultZone: http://eureka7002.com:7002/eureka/
server:
port: 7002
spring:
application:
name: cloud-eureka-service2
eureka:
instance:
hostname: eureka7002.com
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
# 集群版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
eureka:
client:
register-with-eureka: true #是否将自己注册金eureka
fetch-registry: true #是否从eureka中抓取已有注册的信息
service-url:
# 集群版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
之前搭建了注册中心的集群,同样,搭建一下支付服务的集群。
五步法,按照8001进行创建。
yml:
server:
port: 8002
spring:
application:
name: cloud-payment-service8002
datasource:
# 当前数据源操作类型
type: com.alibaba.druid.pool.DruidDataSource
# mysql驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com/eureka,http://eureka7002.com/eureka
在order服务的config中添加@LoadBalanced注解,