springcloud中的零碎知识
1.ES采用的是乐观锁机制(_seq_no并发控制字段)
2.
3.ES批量导入:_bulk批量导入时,一个的错误不会导致后面的错误,不会像mysql一样,回滚
4.term和match的区别:文本的匹配用match;单个词的匹配,如数值,用term.
5.warning:6.0以后type类型要被抛弃了。
6.在ES中存数据:从数据库中查出,然后封装成bean,发送给ES。ES的查询性能更好。
7.正向代理是面向客户端的(隐藏客户端信息),反向代理是面向服务器的(屏蔽内网服务器信息,负载均衡访问)。
8.如果直接让nginx直接代理服务的话,不用网关产生的问题:
1.第一个问题,服务的数量是随时可以复制添加的,是动态变化的,nginx要动态修改这的配置;如果是让网关来,网关可以动态地从注册中心中搜取服务(服务直接注册进去就行)。
9.nginx代理给网关的时候,会丢失请求的host信息。
可以在location / {
proxy_set_header Host $host;
proxy_pass http://gulimall;
}
10.路由匹配原则:粗粒度的放在后面,精粒度的放在前面
11.
12.
业务的优化:
1.db数据库优化:加索引,多次查的话,可以先把这个的结果查出来,后面子函数重复利用
2.模板的渲染速度,开缓存
13.什么数据适合放入缓存:
1.及时性、数据一致性要求不高的
2.访问量大且更新频率不高的数据(读多,写少)。
14.缓存穿透指的是:查询一个不存在的数据,由于缓存一直不命中,大量请求过来,对数据库大量的查询操作,数据库瞬时压力增大,最终导致崩溃。
解决;null结果缓存,并加入短暂过期时间。
加锁:双重检验,得到锁以后,再次判断redis中是否有数据了。
15.害怕分布式锁一直被一个进程占用(宕机),设置锁的自动过期时间,即使应用没有及时删除,也会自动删除。
16.setnx(站好位置了)设置好后,正要去设置过期时间,宕机。又死锁了。
解决:设置过期时间和占位必须是原子的。redis支持使用setnx ex命令
17.
18.
19.redisson中有看门狗机制,默认锁的过期时间是30s。为了方式业务还在执行过程,锁过期了的问题,我自己的理解(在java后端执行了监听器,每隔internalLockLeaseTime/3后向redis发送延长时间的命令)。
20.redisson中自己设定了过期时间,不会自动续期
21.
22.
23.
双写模式:在数据库中改了数据,并且改写缓存中的数据
失效模式:在数据库中改了数据,并且删掉缓存中的数据
24.
25.ES的扁平化,不加嵌入式的话(nested),会被扁平化处理
26.线程的话,需要创建线程池,不然业务请求一多,创建的线程数一多,资源容易耗尽,宕机。
27.
28.
29.
30.
31.
32.消息队列rabbitMQ,可以应用解耦,流量控制
33.
34.feign远程调用丢失请求头问题
设置requestInterceptor配置
35.threadlocal是线程独占的
36.feign异步情况丢失上下文问题
37.
38.本地事务的话
解决:利用延时队列
39.
40.主从呢:
主要跟从保持心跳连接,因为从一直在自旋,要初始化从的自旋(变为候选者)。(自旋成功,说明没有主节点了,自己升为候选人,重新选举主节点)。
上面这个是raft算法解决cp问题的方案
41.BASE理论可以适当地采取弱一致性,即最终一致性。
42.分布式事务Seata不适合高并发
43.rabbitMQ延时队列:rabbitmq的消息TTL和死信Exchange(这个队列没有人监听的,消息存活时间到了,exchange再把这个消息转给另一个有人监听的队列)结合。
44.
45.消息丢失、消息重复
46.Eureka保证的是AP,Zookeeper保证的是CP。
47.ribbon(发现服务上(相同的))轮询算法
48.feign是结合了ribbon,以接口和注解的方式实现。
49.服务熔断:就是当某个服务调用某个服务失败时,反馈简单的信息)(服务器端
50.服务降级:(当某个服务访问量大时,可以先关闭其它小服务)(客户端)
51.跨域流程
52.
53.ElasticSearch对于已经存在的映射字段,我们不能更新。更新必须创建新的索引进行数据迁移。
54.rabbitMQ好处:异步处理,应用解耦,流量控制
55.幂等性解决方案:
1.token机制:哪些业务是存在幂等问题的,就必须在执行业务前,先去获取token,服务器会把token保存到redis中。lua脚本
2.各种锁机制
3.各种约束条件:数据库唯一约束、redis set防重、防重表、全局请求唯一id
56.
57.BASE理论:基本可用、软状态、最终一致性
58.
59.