[TOC]
二、SpringCloud
1、你是如何使用 SpringCloud 的?你的项目中是如何使用 SpringCloud 的?SpringCloud 微服务的解决方案(框架)中有哪些技术?
使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;
而服务间通过Ribbon或Feign实现服务的消费以及负载均衡;
为了使得服务集群更为健壮,使用Hystrix的熔断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。
使用Zuul作为服务网关,进行鉴权、动态路由、负载均衡。
2、什么是有状态?
答:使用session和cookie登录的时候,用户的登录信息保存在服务器的session中,然后将sessionid发送到客户端,保存到cookie中,此时服务端通过session标记当前的请求,这就是有状态
缺点:
- 服务器需要更多的内存空间储存数据
- 当集群之后,需要实现tomcat之间的session共享,否则每次都只能请求某一个tomcat
- 无法实现节点的动态扩展、水平扩展
3、什么是无状态
-
特点
1.服务器不保存任何用户的信息以及客户端信息
2.客户端每次请求的时候,都将token带到服务器进行身份校验
-
实现方式:token-jwt是token的标准解决方案
-
优点
1.节约了服务器空间
2.方便节点的动态扩展
-
缺点
1.服务器无法注册token,设置了存活多久,就会一直存活
2.需要手动刷新token,操作繁琐
4、什么是单点登录
-
概念:多套系统只需要登录一次,就可以访问其他系统
-
注意:单点登录一定需要一个独立的认证授权中心
-
单点登录就是无状态登录,单点登录的流程:
1.用户登录的时候,将用户名和密码提交到认证授权中心
2.认证授权中心校验用户名和密码,如果正确,颁发jwt凭证,返回客户端,保存到localStroage中
3.如果不正确,返回错误信息
4.客户端每次请求都携带token,到服务器进行认证
5、SpringBoot 和 Spring cloud 的区别
1.springboot可以单独使用,它不依赖于springcloud,而spingcloud必然依赖于spirngboot,属于依赖关系。
2.Springboot专注于快速方便的开发单个个体服务。
3.SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、等集成服务
6、Httpclient/RestTemplate 和 Feign 的区别
1.相同点:都是远程调用技术,都是系统间相互调用的技术
2.不同点:
- Feign属于SpringCloud中的技术,HttpClient属于apache的技术,RestTemplate属于Spring的技术
- 使用方式不同:HttpClient得手写很多代码,发送请求,RestTemplate简化了一些,而Feign只需要定义接口即可访问远程服务
7、什么是 RestFul 风格
就是一套编程风格,URL是固定的,根据请求的方式调用不同的方法进行处理。
(一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。 REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。它结构清晰、符合标准、易于 理解、扩展方便,所以正得到越来越多网站的采用。)
8、什么是 Spring Cloud
Spring Cloud是一个微服务框架,提供全套的分布式系统解决方案。