面经-2020/05/26
一、微服务有哪些了解,相关组件
1、服务注册与发现Netflix Eureka
Eureka客户端:处理服务注册与发现
Eureka服务端:注册中心,支持高可用配置、集群部署
2、客户端负载均衡Ribbon
基于http和tcp的客户端负载均衡器
3、熔断器Hystrix
在服务出现异常时进行服务熔断和降级避免长时间等待服务返回结果而出现雪崩效应
4、服务网关Zuul
负责网络路由,所有请求走向网关,网关根据请求特征转发给后端服务。可以做到统一降级、限流、认证授权、安全等
5、分布式配置Spring Cloud Config
配置管理
二、SpringBoot核心
1、依赖版本管理:parent中引入spring-boot-starter-parent,其中包含有几乎所有常用依赖,避免版本冲突等问题
2、启动器:简化依赖配置
三、Redis缓存穿透、缓存击穿和缓存雪崩
1、缓存穿透
现象:缓存和数据库里都没有,每次请求都会去查询数据库,高请求量数据库会挂掉
解决方案:
①设置key-null,缓存有效时间(较短时间)
②布隆过滤器,先判断key是否存在,不存在就不访问redis
2、缓存击穿
现象:缓存中没有,数据库中有(一般是缓存到期),高并发时都是找数据库,导致数据库压力过大
解决方案:使用互斥锁(mutex key):当缓存不存在时获取锁,读取完并写入缓存后释放锁
3、缓存雪崩
现象:缓存大批量过期,查询数量巨大,数据库压力过大甚至导致宕机
解决方案:
①缓存时间随机
②加锁或队列
③分布式部署
四、Redis集群
1、主从模式:主节点可读可写、从节点只读,提高了读的能力,一定程度上缓解了写的能力。缺陷是主节点宕机,集群没有了可写的节点
2、Sentinel哨兵模式:监控、提醒和自动故障迁移。一个哨兵下可能有多个主从模式,当一个主节点出现问题,会将其一个从节点升级为主节点。
五、MySQL常用存储引擎
1、MyISAM:不支持事务、不支持外键,访问速度快
2、InnoDB:支持事务,相比MyISAM写的效率差一些,会占用更多的磁盘资源保留数据和索引,支持自增列,支持外键约束
3、MEMORY:在内存中创建表,访问非常快,默认使用Hash引擎,服务关闭数据消失
4、MERGE:是一组MyISAM表的组合,实际操作是对其中MyISAM进行的
六、MySQL查询优化
1、关联查询进行拆分
2、创建索引
七、线程创建方式
1、继承Thread类,重写run方法,调用线程对象的start启动;
2、实现Runnable接口,实现run方法,将实例作为Thread构造器参数传入创建Thread对象,start启动线程;
3、实现Callable接口,实现call方法(有返回值),使用FutureTask类包装该实例,再使用Thread包装FutureTask类实例,start启动线程(FutureTask类实例的get方法可以获取返回值)
4、线程池
八、equals和==
equals比较内容,==比较地址
九、重写和重载的区别
重载:方法名相同,参数个数/类型和返回值不同
重写:方法名、参数和返回值和被重写方法一致