1.总结eureka微服务创建的流程
1.1 创建项目,导入eureka相关依赖
1.2 编写application.yml配置文件
1.2.1 配置端口号,eureka 的配置,注意不要把自己注册进去,设置 Eureka Server 交互的地址,对外暴露自己的地址
1.3 创建启动类 加上@EnableEurekaServer //开启Eureka服务
1.4 启动测试,访问 7001 端口 http://localhost:7001
1.5 创建提供者和消费方,两个项目注意在pom 文件的基础上引入 eureka 的client包,
1.5.1<!--eureka-客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1.6 创建启动类,启动类加上@EnableEurekaClient注解
1.6.1 @EnableEurekaClient注解作用:提供者用来向Eureka注册自己信息(地址,提供什么服务),消费者:向Eureka订阅服务( 为了启用服务注册发现功能。)
1.7 提供者和消费方的yml文件添加关于 Eureka 的配置(注册进 Eureka 的服务中心),访问http://localhost:7001里面注册完成
2.如何搭建eureka集群
原理:Eureka 集群的原理,就是 相互注册,互相守望
1. 运行两个Eureka的集群,端口分别为:7001和7002
1.1、 模拟多个 Eureka Server 在不同机器上 : 进入C:\Windows\System32\drivers\etc\hosts 创建两个端口
2. 创建两个服务中心项目,复制之前的7001的项目
3. 修改配置文件
3.1设置与 Eureka Server 交互的地址,(Eureka 集群的原理,就是 相互注册,互相守望),7001注册7002地址,7002注册7001的地址
4. 将提供者和消费者的地址注册进提供者8001的配置文件中
3.服务提供方集群如何搭建
1. 复制之前的一分服务提供方,修改端口号,注意命名
2. 两台服务提供者,消费方不知道要调用哪一个,修改消费方的url成yml的application的名称(服务名称)
3. 根据服务名称不知道到底调用哪台服务提供方的机器,在启动类上加入 @LoadBalanced(负载均衡:默认是均衡调用)
4.RestTemplate如何使用?
1. 创建配置类,注入到spring容器中
@Configuration
public class MyConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
getForObject postForObject两个方法
* 三个参数:param1 请求地址,param2 请求参数, param3 返回类型
5.简述eureka的自我保护模式? 如何配置其自我保护模式
在短时间内丢失了服务实例的心跳,不会立刻删除该服务,这是eurekaserver的自我保护机制的宗旨。主要是为了防止由于短暂的网络故障误删除可用的服务。
所以,一般进入自我保护模式,无需处理。如果,需要禁用自我保护模式,只需要在配置文件中添加配置即可:(测试环境、开发环境可以关闭自我保护机制,保证服务不可用时及时剔除)
配置方式:在server端 配置文件(application.yml)中添加server 配置
6.什么是CAP理论? cp ap原则的含义
CAP即:
Consistency(一致性)
Availability(可用性)
Partition tolerance(分区容忍性)
CP(一致性)时,如果由于网络分区而无法保证特定信息是最新的,则系统将返回错误或超时。CP组件有zookeeper,consul
AP(可用性)时,系统将始终处理客户端的查询并尝试返回最新的可用的信息版本,即使由于网络分区而无法保证其是最新的。AP组件有Eureka
7.eureka 和zookeeper consul的区别?
eureka是一致性和分区分区容忍性
zookeeper和consul 是可用性和分区容忍性
8.使用ribbon进行负载均衡的步骤
- 引入依赖,由于spring-cloud-starter-netflix-eureka-client这个依赖已经集成了ribbon,所以我们不需要单独引入。
在服务消费方开启负载均衡:@LoadBalanced - 创建一个负载均衡配置文件,注意不要放在SpringBoot主启动类的包内。
@Configuration
public class MyRule {
@Bean //IRule 是Ribbond的核心组件
public IRule myrule(){
return new RandomRule(); //负载均衡规则定义为随机
}
}
- 然后在主启动类上添加如下注解 @RibbonClient:两个参数:name:指定服务名称,configuration:配置文件的字节码(MyRule.clas)
9.ribbon负载均衡的策略有哪些?
10.如何自定义负载均衡
- 引入依赖,由于spring-cloud-starter-netflix-eureka-client这个依赖已经集成了ribbon,所以我们不需要单独引入。
- 创建一个负载均衡配置文件,注意不要放在SpringBoot主启动类的包内。
@Configuration
public class MyRule {
@Bean //IRule 是Ribbond的核心组件
public IRule myrule(){
return new RandomRule(); //负载均衡规则定义为随机
}
}
- 然后在主启动类上添加如下注解 @RibbonClient:两个参数:name:指定服务名称,configuration:配置文件的字节码(MyRule.clas)