承接SpringCloud知识点分析之项目实战1,该章节主要是将springCloud中各个维度的组件应用到项目之中。
1.介绍
Netflix在设计Eureka时遵守的就是AP原则,Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个
基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来
说是非常重要的,有了服务发现与注册,只需要使用服务的标识符就可以访问到服务,而不需要修改服务调用的
配置文件了,功能类似于dubbo的注册中心,比如Zookeeper。
2.原理
Eureka采用了C-S的设计架构。Eureka Server作为服务注册功能的服务器,它是服务注册中心。相当一家物业公
司,所有的微服务就相当要入驻物业公司管理的产业园,需要在物业公司中注册缴费才能入,如下图:Eureka
Server是物业公司,Service Provier是入驻的公司,Service Consumer是入驻公司中的员工。
Eureka包含两个组件:Eureka Server和Eureka Client
Eureka Server:提供服务注册服务,各个节点启动之后,会在EurekaServer中进行注册,这样 Eureka Server中的
服务注册表将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client:是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(
round-robin)负载算法的负载均衡器。在应用启动之后,将会向Eureka Server发送心跳(默认周期)
为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会
从服务注册表中把这个服务节点移除(默认90秒)。
3.三大角色
EurekaServer提供服务注册和发现
Service Provider服务提供方将自身注册到Eureka,从而使服务消费方能够找到。
Service Consumer服务消费方从Eureka获取注册服务列表,从而能够消费服务。
1.创建服务注册中心
新建服务注册中心子工程Module:microservicecloud-eureka-7001
pom.xml
需要引入cloud的一个新的技术组件基本由两步:
第一步:在pom中新增一个相关的maven坐标,例如如下
创建application.yml
创建启动类
测试
2.将已有的部门微服务注册进eureka服务中心
①修改microservicecloud-provider-dept-8001
pom.xml
application.yml
启动类
1. 新建Module:microservicecloud-eureka-7001(同其他模块)
2.pom.xml
4.0.0
com.atguigu.springcloud
microservicecloud
0.0.1-SNAPSHOT
microservicecloud-eureka-7001
org.springframework.cloud
spring.cloud-starter-eureka-server
org.springframework
springloaded
org.springframework.boot
spring-boot-devtools
3.application.yml
在src/main/source下新建application.yml
server:
port: 7001
eureka:
instance:
hostname: localhost #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
4.启动类
在com.atguigu.springcloud下新建EurekaServer7001_app
在启动类上面,标注的启动该新组件技术的相关注解标签@enableEurekaServer
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //EurekaServer服务端启动类,接受其他微服务注册进来
public class EurekaServer7001_app {
public static void main(String[] args) {
SpringApplication.run(EurekaServer7001_app.class, args);
}
}
5.测试
1.修改微服务消费者
在微服务消费工程中的pom.xml中加入以下依赖信息:
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-config
application.yml中增加一下信息:
eureka: #前方无空格
client: #客户端注册进eureka服务列表内
service-url:
defalutZone: http//localhost://7001/eureka #该注册地址已经在服务注册中心Module的yml文件中提供了
在启动类中加上@EnableEurekaClient,表示本服务会自动注册进eureka服务中
2.测试