nginx的三种负载均衡策略:1.轮询策略 2.权重策略 3.ip hash策略
轮询策略:根据配置文件的顺序依次访问
权重策略:根据设定的权重大小 挑选哪台服务器优先访问
inphash策略:iphash策略怎么实现ip与用户之间的绑定的?
答;他是根据IP的方式进行hash计算,hash计算完了然后对数据进行求模,求模得到的结果与后台服务器进行绑定,这样用户每一次进行访问都能访问到固定的服务器
iphash算法的弊端:
1.由于hash计算不能保证均匀分布,所以可能出现负载不均的现象
2.将用户数据存储到对象服务器中,如果服务器宕机则直接影响关联用户
nginx是什么 ,是干什么用的?
nginx是一个轻量级,高性能的,http和反向代理服务器,其特点是占用内存少并发能力强
主要是用来反向代理和负载均衡
谈一下负载均衡和
反向代理
1.反向代理介于用户和目标服务器之间
2.用户的资源从反向代理服务器中获取
3.用户不清楚正式的服务器到底是谁,保护了服务器的信息,称为服务器代理端
谈一下正向代理
1.正向代理服务器介于用户和目标服务器之间
2.用户的资源从正向代理服务器中获取
3.服务器不清楚是谁访问的服务器,以为是代理服务器访问的称之为客户端代理
hash的本质是函数
负载均衡:访问量高时,可以让服务器尽量分担压力
ssm框架
spring框架:整个服务器负责”宏观调控“的(主导),负责整合其他的第三方框架
springMVC框架:主要负责前后端数据的交互
springbatis框架/MybatisPlus框架:持久层框架,简化了jdbc的操作数据库的方式提高效率
springBoot框架:/工具 SpringBoot采用了一种更加简单的方法封装了之前的框架让程序更加简单
springcloud是一个基于springBoot实现的服务治理工具包,在微服务架构中用于管理和协调服务的
他的五大组件:Eureka、Ribbon、Feign、Hystrix、Zuul
微服务:就是把一个单体项目拆分成多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维,并且多个服务相互协调相互配和最终完成用户的价值
什么是事务?
事务是一个逻辑单元执行的一些列操作,一个逻辑单元必须有四个属性,称为ACID(原子性,持久性,隔离性,一致性)属性
数据库有几种隔离级别?
串行化,可重复读,读已提交,读未提交
mybatis工作基本流程(简化jdbc)
1.读取配置文件,配置文件包含数据库连接信息和mapper映射文件,
2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行时建立起来,程序结束时消亡
3.SqlSessionFactory建立SqlSession,目的执行sql语句,sqlSession是过程级,一个方法中建立一旦结束应该关闭
4.当用户使用mapper.xml文件中配置的方法时,mybatis首先会解析sql的动态标签,为对应的数据库sql语句的形式,并将其封装进mapperStatemeny对象,然后通过executor执行器将sql注入到数据库执行,并返回结果
5.将返回的结果通过映射,包装成Java对象
MVC(Model模型、View视图、Control控制层),将软件进行分层达到松耦合的效果
springMvc的工作流程
1.客户端发送请求到DispacherServlet(前端控制器)(迪斯Dis破森斯pacher丝我赖特Servlet 迪斯破森斯丝我赖特)
2.由DispacherServlet前端控制器查询HanderMapping(处理器映射器)
3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet
4.DispatcherServlet(前端控制器)调用HandlerAdapter(处理器适配器)。
5.HandlerAdapter(处理器适配器)经过适配调用具体的处理器(Controller,也叫后端控制器)。
6.Controller(后端控制器)执行完成返回ModelAndView(视图解析器)。
7、HandlerAdapter(处理器适配器)将controller(后端控制器)执行结果ModelAndView(视图解析器)返回给DispatcherServlet(前端控制器)。
8、DispatcherServlet(前端控制器)将ModelAndView(模型和视图)传给ViewReslover(视图解析器)。
9、ViewReslover(视图解析器)解析后返回具体View(解析)。
10、DispatcherServlet(前端控制器)根据View(解析)进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet(前端控制器)响应用户。
SpringMVC严格上来说是一种设计思想而不是设计模式,其底层采用反射的机
mvc简化----
1.客户端发送请求到前端控制器,
2.前端控制器收到请求调用处理器映射器,
3.处理器映射器找到具体的处理器 (生成处理器对象和处理器拦截器(如果有就生成))返回给前端控制器,
4.前端处理器调用处理器适配器,
5.处理器控制器经过适配调用具体的处理器Controller 也叫后端控制器,
6.后端控制器执行完成返回视图解析器,
7.处理器适配器将后端控制器执行结果视图解析器返回给前端控制器,
8.前端控制器将模型和视图返回给视图解析器,
9.视图解析器返回具体的解析,
10.前端控制器根据解析进行视图渲染(将模型填充到试图),
11.前端控制器响应用户
(客户端,前端控制器,处理器映射器,具体的处理器,返回前端控制器,调用处理器适配器,调用具体的后端控制器,返回视图解析器,处理器适配器将后端控制器执行结果视图解析器返回给前端控制器,将模型和视图返回给视图解析器,返回具体解析,前端控制器进行渲染,返回浏览器响应用户)
js是一门设计对象和事件驱动的语言,通常用来提升页面和用户的交互性
html超文本标记语言实现页面展现,形成静态网页
css全称叫做层叠样式表(stylesheet),是用来修饰html的一门技术,增强网页的展示能力
jQuery是一款免费的,免费开源的js函数库,主要是简化js代码
vue是一个基于mvvm设计模式的渐进式(融合)的前端js框架,基于此框架可以让客户端的操作更简单
tomcat服务器是一个免费的开放源代码的wab应用服务器,属于轻量级服务器(软件服务器)
为什么要做单点登录设计?(业务简化。代码复用,不需要每个代码都登录一次)
你知道那些sso系统的解决方案?(基于用户登录状态信息的存储进行方案设计)
Redis 简介(分布式内存数据库 非关系行数据库)
为什么使用Redis缓存(为了解决分布式系统下数据缓存的问题)
什么是跨越?浏览器解决Ajax时。要求浏览器的网址,与ajaxd的请求的网址,必须满足三要素
1.协议相同
2.端口号相同
3.域名相同
可以简化get的提交数据(/10/100)
restful方式获取请求参数:通过{}绑定地址中的参数的位置+注解获取{???}的值
1.spring的优势
通过spring的ioc特性,将对象之间的依赖关系交给了spring控制,方便了解耦。简化了开发
通过了spring的AOP特性,对事务的模块进行集中,实现事务。日志。权限的控制
spring的DI注入:在程序运行期间由容器动态的将某个依赖关系注入到组件之中
提供了对其他优秀开源框架的集成支持
springMvc的优势:
springMvc是使用了Mvc设计思想的轻量化级的web框架对web层进行解耦使我们开发更简洁
mybatis的优势是对jdbc的封装,mybatis消除了几乎所有的jdbc的代码和手工设置以及结果集的检索。mybatis使用简单的xml文件或注解用于配置和原始映射,将jiava和普通的pojo(普通的java对象)映射成数据库的记录
Maven项目对象模型(POM):管理项目的构建,报告和文档的项目管理工具软件
Maeven:组成部分:1.中央仓库 2. 镜像仓库 3.本地仓库
spring框架:是针bean的生命周期进行管理的的轻量级容器
bean:spring容器管理的对象就叫bean
生命周期: 对象创建/对象的初始化/对象执行业务逻辑/对象销毁
jdbc的过程
1.注册驱动2.获取数据库连接3.获取传输器4.执行sql5.解析结果集6.释放资源
sentinel:是面向分布式服务框架的轻量级流量控制框架 流量控制 熔断降流 系统负载保护 多个方法来维护系统的稳定性
流量控制(flow control), 其原理是监控应用的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。.
熔断降级就可以解决这个问题,当检测到链路中某个资源出现不稳定的时候,则对这个资源进行限制,迅速地结束这个请求,避免影响到其他资源,导致级联故障
Sentinel核心分为两个部分:
核心库(Java 客户端):能够运行于所有 Java 运行时环境,同时对Dubbo /Spring Cloud 等框架也有较好的支持。
控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。
Sentinel是如何对请求进行限流的?(基于sentinel依赖提供的拦截器)
你了解哪些限流算法?(计数器、令牌桶、漏斗算法,滑动窗口算法,…)
Sentinel 默认的限流算法是什么?(滑动窗口算法)
你了解sentinel中的阈值应用类型吗?(两种-QPS,线程数)
Sentinel的限流规则中默认有哪些限流模式?(直连,关联,链路)
Sentinel的限流效果有哪些?(快速失败,预热,排队)
何为降级熔断?(让外部应用停止对服务的访问,生活中跳闸,路障设置-此路不通)
什么要进行熔断呢?(平均响应速度越来越慢或经常出现异常,这样可能会导致调用链堆积,最终系统崩溃)
Sentinel中限流,降级的异常父类是谁?(BlockException)
entinel熔断降级策略有哪些?(慢调用比例、异常比例、异常数)
如何理解热点数据?(访问频度比较高的数据,某些商品、谋篇文章、某个视频)
热点数据的限流规则是怎样的?(主要是针对参数进行限流设计)如何理解sentinel中的系统规则?(是对所有链路的控制规则,是一种系统保护策略)
Sentinel的常用系统规则有哪些?(RT,QPS,CPU,线程,Load-linux,unix)
Sentinel系统保护规则被触发以后底层会抛出什么异常?(SystemBlockException)
热点规则的限流模式只有QPS模式(这才叫热点)
mybatis的基本工作流程:
1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件。
2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行的时候建立起来,程序结束的时候消亡
3.SqlSessionFactory建立SqlSession,目的执行sql语句,SqlSession是过程级,一个方法中建立,方法结束应该关闭
4.当用户使用 mapper.xml文件中配置的方法时,mybatis首先会解析sql动态标签为对应数据库sql语句的形式,并将其封装进MapperStatement对象,然后通过executor执行器将sql注入数据库执行,并返回结果。
5.将返回的结果通过映射,包装成java对象。