w
注册中心:euraka、nacos、zookeeper
注册中心及配置中心:nacos
远程调用:feign、dubbo
负载均衡:ribbon
服务熔断:hystrix、sentinel
网关:zuul、gateway

eureka注册中心的作用

△面试题:服务注册和发现是什么意思?springcloud是如何实现服务注册和发现的?
我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件。
服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等。
服务发现:消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用。
服务监控:服务提供者会每隔30秒向eureka发送心跳,报告健康状态,如果eureka服务90秒没接收到心跳,从eureka中剔除
△面试题:nacos和eureka的区别
nacos和eureka的共同点
nacos和eureka的不同点
nacos默认是临时实例,ephemeral配置默认为true

CAP即
结论:
base理论是对CAP的一种解决思路,其中包括:
解决分布式事务的思想和模型:
ribbon负载均衡是如何实现的?
微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是使用了ribbon。
ribbon执行流程

ribbon负载均衡策略有哪些?
如何指定负载均衡策略?
通过实现IRule接口,然后再通过配置类或配置文件配置即可,有两种方式

什么是服务雪崩?怎么解决这个问题?
服务雪崩是指一个服务失败导致整条链路的服务都出现问题的情形。

服务降级
服务降级是服务自我保护或者保护下游服务的一种方式。用于确保服务不会受请求突增从而影响导致不可用。一般在实际开发中调用feign组件整合,实现服务降级逻辑。
feign示例

Hystrix熔断机制
Hystrix熔断机制,用于监控微服务调用情况,默认是关闭的。
开启需要在引导类上添加注解:@EnableCircuitBreaker,若默认检测到10秒内请求的失败率超过50%,就触发熔断机制。之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求。

为什么要限流?
1、突发流量太大
2、防止用户恶意刷接口
限流的实现方式

控制速率(面对突发流量场景)——漏桶算法

nginx.conf 配置
http{
limit_req_zone $binary_remote_addr zone=service1RateLimit:10m rate=10r/s;
server {
listen 80;
server_name localhost;
location /{
limit_req_zone = service1RateLimit burst=20 nodelay;
proxy_pass http://targetserver;
}
}
}
说明:
语法:limit_req_zone key zone rate
控制并发连接数
http{
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
listen 80;
server_name localhost;
location /{
# 对应的key为$binary_remote_addr,表示限制单个IP同时最多持有20个连接
limit_conn_zone perip 20;
# 对应的key为$server_name,表示虚拟机(server)同时能处理并发连接的总数
limit_conn_zone perserver 100;
proxy_pass http://targetserver;
}
}
}
RequestRateLimiter
△面试回答:
先来介绍业务,什么情况下去做限流,需要说明QPS具体多少
我们当时有一个活动,到了假期就会抢购优惠券,QPS最高可以达到2000,平时10-50之间,为了应对突发流量,需要做限流
常规限流,为了防止恶意攻击,保护系统正常运行,我们当时系统能够承受最大的QPS是多少(压测结果)nginx限流
控制速率(突发流量),使用的漏桶算法来实现过滤,让请求以固定的速率处理请求,可以应对突发流量控制并发数,限制单个ip的链接数和并发链接的总数
网关限流
在spring cloud gateway中支持局部过滤器RequestRateLimiter来做限流,使用的是令牌桶算法可以根据ip或路径进行限流,可以设置每秒填充平均速率,和令牌桶总容量