SpringCloud 14道题
1. 什么是springcloud
我所理解的 Spring Cloud 就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如 服务发现注册 、配置中心 、消息总线 、负载均衡 、断路器 、数据监控 等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。
2. 微服务架构的优点
降低了业务之间的耦合度-----每个服务中只包含一种业务
便于服务的拓展----如果用户服务访问压力很大;我们就可以针对用户这个服务搭建集群,其他服务不能动;
3. 微服务架构体系
4. CAP理论,BASE理论
5. Ribbon负载均衡算法、类型,如何配置
Ribbon负载均衡算法的类型
如何配置
6. 分布式架构下,Session 共享有什么方案
分布式环境中HttpSession不能共享
使用cookie来完成
用户登录成功后,将用户信息存储到cookie中
下次客户端访问服务器,通过判断是否有cookie从而判断是否登录
使用Nginx中的ip绑定策略,同一个ip只能在指定的同一个机器访问(不支持负载均衡)
使用数据库同步session(效率不高)
用户登录成功后,将用户信息存储到session,然将session存储到数据库。
下次客户端访问服务器,从数据库中获取用户session;判断用户是否登录
使用tomcat内置的session同步(同步可能会产生延迟)
使用token代替session(推荐)
使用Spring-Session+Redis实现
7. 简述你对RPC、RMI的理解
RPC:在本地调用远程的函数,远程过程调用,可以跨语言实现 httpClient
RMI:远程方法调用,java中用于实现RPC的一种机制,RPC的java版本,是J2EE的网络调用机制,跨JVM调用对象的方法,面向对象的思维方式
8.微服务监控用的是什么技术
微服务架构监控通常使用的就是链路追踪
目前主流的链路追踪技术
SkyWalking
Zipkin+Sleuth
这些链路追踪技术都实现opentrace标准
9. 分布式id生成方案
uuid: UUID长度过长,不适用于存储,耗费数据库性能。 ID无一定业务含义,可读性差。
基于redis、mongodb、zk等中间件生成
雪花算法
10. 分布式锁解决方案
需要这个锁独立于每一个服务之外,而不是在服务里面
数据库:利用主键冲突控制一次只有一个线程能获取锁,非阻塞、不可重入、单点、失效时间
Zookeeper分布式锁
Redis分布式锁
11. 分布式事务解决方案
两阶段协议
三阶段协议
TCC(补偿事务)
消息队列的事务消息
12. zk和eureka的区别
zk:CP设计(强一致性),目标是一个分布式的协调系统,用于进行资源的统一管理。
eureka:AP设计(高可用),目标是一个服务注册发现系统,专门用于微服务的服务发现注册。
13. 高并发场景下如何实现系统限流
Nginx限流
OpenResty限流
Sentinel限流
Redis+Lua限流
Spring Cloud Gateway限流
14. springcloud核心组件及其作用
注册中心(nacos,eureka)
客户端负载均衡(ribbon)
远程调用( Feign Dubbo)
服务保护(Hystrix Sentinel)
网关(zuul,gateway)