发表于: 2020-01-09 19:47:48
3 1275
啥也不说就是干!!!
今天完成的事情:
任务 6 深度思考部分:
1.后台只允许有列表页和详情页,列表页分为搜索区和列表区和操作区,原因是什么?有没有其他设计方式,相比之下各自的好处是什么?
不太明白问题要问啥
2.什么叫集群?缓存应该在什么情况下使用集群?有哪些实现集群的方案?
集群是同一个web应用部署到多台 tomcat 上面,这些 tomcat 同时提供服务,每一台服务器都是缺一不可的
缓存集群策略可以保证服务的高可用,高并发,高可扩展
Redis 使用 Redis-cluster 实现集群方案
所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.节点的fail是通过集群中超过半数的节点检测失效时才生效
3.什么是压测,为什么要进行压力测试?JMETER工具的使用
为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数
4.Memcache和Redis可否做集群?什么样的情况下应该做集群?
问题3已经回答过了
5.什么是脏数据,缓存中是否可能产生脏数据,如果出现脏数据该怎么处理?
脏读:读取出来脏数据就叫脏读。
缓存产生脏数据:数据库数据更新了,但是缓存中的数据没有及时更新
6.插入,更新和查询数据的时候,读写缓存和DB的顺序应该是怎么样的?
查询数据时候先查缓存,缓存没有再去查数据库
更新数据时候,应该先删除缓存再去更新数据库里面的数据
7.JVM缓存和Memcache这种缓存的区别在哪里?是否可以不使用Memcache,只用虚拟机内存做缓存?
jvm缓存比memcache快,但是jvm内存有限,所以还是需要memcache来缓存
8.缓存应该在Service里,还是应该存放在Controller里,为什么?
应该统一放到 service 里面,先从缓存查,如果没有的话再从数据库查,查完以后再放入缓存中。这些逻辑属于业务逻辑。放在 Service 层比较合适。Controller 只关心调用并将数据返回给前端
9.什么叫穿透DB?什么情况下会发生,穿透DB后会发生什么事情?
穿透 DB 是指 Redis 缓存数据大批时效,然后大量的请求直接向数据库,会瞬间对 数据库造成很大的压力
10.什么叫命中率?正常来讲,命中率应该控制在多少?
终端用户访问加速节点时,如果该节点有缓存住了要被访问的数据时就叫做命中,如果没有的话需要回原服务器取,就是没有命中
命中率=命中数/(命中数+没有命中数)
命中率应该在 95% 以上
11.什么样的数据适合存在缓存中?缓存的淘汰算法有哪些?
这里的数据分为两块,第一是数据库的数据,第二是页面的一些静态数据。
这里说的是数据库的数据。
页面的一些静态数据不适合存放在缓存中。
然后对于上面提出的数据不一致的问题,所以缓存的数据也有要求。
不要缓存那些对于数据一致性要求很高的数据。
如果这个数据存在被修改的可能性,那么最好不要存缓存,要么,就不要放数据库,只放缓存。
那些对于数据一致性不高的数据,都是可以放的。
强调一点是,如果这个数据放了,但是对于这个数据的操作不是修改,而是只有删除的话,也是可以存放缓存的,因为在实际操作中,如果一个删除操作被执行的时候,缓存可以先进行删除,这样就能确保没有用户能够读取到删除之后的数据,然后再对数据库进行删除。
12.什么叫一致性哈希,通常用来解决什么问题?
一种算法,有待研究
13.缓存的失效策略有哪几种,分别适合什么场景?
redis 提供 6种数据淘汰策略:
1. voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
2. volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
3. volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
4. allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
5. allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
6. no-enviction(驱逐):禁止驱逐数据
14.Memcache和Redis的区别是什么?
Redis Cluster引入了Master节点和Slave节点
15.怎么预估自己系统可承载的日活数?
用 jmeter 去进行压测,看看最大承载量在多少
16.什么是JMeter?Jmeter是否可以在多台机器上分布式部署?为什么要分布式部署?
在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,这时可以使用Jmeter提供的分布式功能来启动多台电脑来分压测试
17.什么是TPS,什么是每秒并发数,什么是90%Line?分别应该到达多少算符合系统上线的要求?
90%Line:90%用户的响应时间
接口的平均访问时间应低于200ms
明天计划的事情:
1、开始任务七,学习 SpringBoot
2、用 SpringBoot 实现简单的登录注册功能
遇到的问题:
无
评论