首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2022Java微服务最全面试题集

为什么要使用SpringCloud SpringCloud是一套非常完整的微服务解决方案,俗称“微服务全家桶”,几乎内置了微服务所使用的各种技术,可以不必集成第三方依赖。...当设置为持久化时服务器宕机后消息将保存到服务器中,重启后消费者还可以继续消费未处理完毕的消息。 RabbitMQ与其他MQ有什么不同?...,每次修改nginx.conf配置文件都需要重启nginx服务器。...使用lvs+keepalived+Nginx做主从热备,lvs管理nginx集群,nginx管理服务器集群,在服务器宕机的情况下keepalived启动健康检测,多次重启无果可以短信通知运维人员及时维护...2.在访问静态资源时在Url后缀加上时间戳,防止访问资源的与浏览器本地缓存资源存在冲突. 3.页面减少HTTP请求,合并静态资源(如js或者css)并进行压缩。

7410

【系统设计】系统设计基础:速率限制器

什么是速率限制器? 速率限制是指防止操作的频率超过定义的限制。在大型系统中,速率限制通常用于保护底层服务和资源。速率限制一般在分布式系统中作为一种防御机制,使共享资源能够保持可用性。...速率限制通过限制在给定时间段内可以到达您的 API 的请求数量来保护您的 API 免受意外或恶意过度使用。在没有速率限制的情况下,任何用户都可以用请求轰炸您的服务器,从而导致其他用户饿死的峰值。...对这些功能的请求数量在用户级别受到限制,因此暴力破解算法在这些场景中不起作用。 防止运营成本:在按使用付费模式自动扩展资源的情况下,速率限制通过对资源扩展设置虚拟上限来帮助控制运营成本。...对于给定的持续时间 d,定义了用户可以接收的请求 r 个数据包的数量。每次新请求到达服务器时,都会发生两个操作: 获取令牌:获取该用户的当前令牌数。如果它大于定义的限制,则丢弃请求。...有两种方法可以解决这些问题: 粘性会话:在您的负载均衡器中设置一个粘性会话,以便每个消费者都准确地发送到一个节点。缺点包括节点过载时缺乏容错和扩展问题。

1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Etcd Raft算法机制

    2、Raft中任何节点都可以发起选举吗? 3、Raft中选举中给候选人投票的前提? 4、Raft网络分区下的数据一致性怎么解决? 5、Raft数据一致性如何实现? 6、Raft的日志有什么特点?...当这条日志被复制到大多数服务器上,Leader将这条日志应用到它的状态机并向客户端返回执行结果。 客户端的每一个请求都包含被复制状态机执行的指令。...在这里插入图片描述 五、日志压缩 在实际的系统中,不能让日志无限增长,否则系统重启时需要花很长的时间进行回放,从而影响可用性。...10、Raft日志压缩是怎么实现的?增加或删除节点呢?? 在实际的系统中,不能让日志无限增长,否则系统重启时需要花很长的时间进行回放,从而影响可用性。...,这种情况下会选举成功吗?

    1.5K21

    得物一面,稳扎稳打!

    那么当有大量这样的请求到来时,数据库的压力骤增,这就是缓存穿透的问题。 image.png 这些缓存问题,有什么解决方案吗?...布隆过滤器:我们可以在写入数据库数据时,使用布隆过滤器做个标记,然后在用户请求到来时,业务线程确认缓存失效后,可以通过查询布隆过滤器快速判断数据是否存在,如果不存在,就不用通过查询数据库来判断数据是否存在...即两次握手会造成消息滞留情况下,服务端重复接受无用的连接请求 SYN 报文,而造成重复分配资源。 项目 JWT 令牌和传统方式有什么区别?...这种方式比传统的基于会话和Cookie的验证更加安全,有效防止了CSRF(跨站请求伪造)等攻击。 跨域支持:JWT令牌可以在不同域之间传递,适用于跨域访问的场景。...( 答上来了) 在传统的基于会话和Cookie的身份验证方式中,会话信息通常存储在服务器的内存或数据库中。

    84720

    一文彻底搞懂cookie、session、token、jwt!

    无论是登录信息、个人偏好、还是其他数据,Web应用程序提供者都需要有办法 将他们保存在客户端。对于这个问题,第一个解决方案就是cookie。 今天cookie只是在客户端存储数据的一个选项。 1....Cookie 1.1 什么是cookie? HTTP cookie也叫cookie,最初用于在客户端存储会话信息。...存储在sessionStorage中的数据不受页面刷新的影响,可以在浏览器崩溃并重启后恢复。...把所有状态都存在Cookie里,服务器给个签名防止伪造,每次请求来了,直接充Cookie里面获取状态,这是JWT的实现方法。...当然还可以把这个机制设计得更复杂一些,比如,Refresh Token 每次使用的时候,都更新它的过期时间,直到与它的创建时间相比,已经超过了非常长的一段时间(比如三个月),这等于是在相当长一段时间内允许

    2K30

    Redis常见面试题分享

    使用pub/sub主题订阅者模式,可以实现1:N的消息队列。 如果对方追问pub/sub有什么缺点?在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。...但是在高性能的要求下每次都sync是不现实的,一般都使用定时sync,比如1s1次,这个时候最多就会丢失1s的数据。 对方追问bgsave的原理是什么?你给出两个词汇就可以了,fork和cow。...AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。...你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。...17、Pipeline有什么好处,为什么要用pipeline? 可以将多次IO往返的时间缩减为一次,前提是pipeline执行的指令之间没有因果相关性。

    25210

    一文彻底搞懂cookie、session、token、jwt!

    无论是登录信息、个人偏好、还是其他数据,Web应用程序提供者都需要有办法 将他们保存在客户端。对于这个问题,第一个解决方案就是cookie。 今天cookie只是在客户端存储数据的一个选项。 1....Cookie 1.1 什么是cookie? HTTP cookie也叫cookie,最初用于在客户端存储会话信息。...存储在sessionStorage中的数据不受页面刷新的影响,可以在浏览器崩溃并重启后恢复。...把所有状态都存在Cookie里,服务器给个签名防止伪造,每次请求来了,直接充Cookie里面获取状态,这是JWT的实现方法。...当然还可以把这个机制设计得更复杂一些,比如,Refresh Token 每次使用的时候,都更新它的过期时间,直到与它的创建时间相比,已经超过了非常长的一段时间(比如三个月),这等于是在相当长一段时间内允许

    4.3K31

    月活 12.8 亿的微信是如何防止崩溃的?

    四、如何判断过载 通常判断过载可以使用吞吐量,延迟,CPU 使用率,丢包率,待处理请求数,请求处理事件等等。微信使用在请求在队列中的平均等待时间作为判断标准,就是从请求到达,到开始处理的时间。...那为什么不使用 CPU 负载作为判断标准呢, 因为 CPU 负载高不代表服务过载,因为一个服务请求处理及时,CPU 处于高位反而是比较良好的表现。...这里有个疑问,为啥不采用会话 ID 计算优先级呢,从理论上来说采用会话 ID 和用户 ID 效果是一样的,但是采用会话 ID 在用户重新登录时刷新,这个时候可能用户的优先级可能变了,在过载的情况下,他可能因为提高了优先级就恢复了...,这样用户会养成坏习惯,在服务有问题时就会重新登录,这样无疑进一步加剧了服务的过载情况。...为了实现这个能力,在每次请求下游服务时,下游把当前服务的准入优先级返回给上游,上游维护下游服务的准入优先级,如果发现请求优先级达不到下游服务的准入门槛,直接丢弃,而不再请求下游,进一步减轻下游的压力。

    1.5K50

    面试前必须要知道的21道Redis面试题

    使用pub/sub主题订阅者模式,可以实现1:N的消息队列。 如果对方追问pub/sub有什么缺点?在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。...但是在高性能的要求下每次都sync是不现实的,一般都使用定时sync,比如1s1次,这个时候最多就会丢失1s的数据。 对方追问bgsave的原理是什么?你给出两个词汇就可以了,fork和cow。...AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。...你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。...17、Pipeline有什么好处,为什么要用pipeline? 可以将多次IO往返的时间缩减为一次,前提是pipeline执行的指令之间没有因果相关性。

    53700

    Redis高频面试题

    答:异步复制 11、Redis 中的管道有什么用? 一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应,这样就可以将多个命令发送到服务 器,而不用等待回复,最后在一个步骤中读取该答复。...解决方案: 1.使用互斥锁:当缓存失效时,不立即去load db,先使用如Redis的setnx去设 置一个互斥锁,当操作成功返回时再进行load db的操作并回设缓存,否则重试get缓存的 方法。...32、知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?...AOF(Append Only File:将redis所执行过的所有指令都记录下来,在下次redis重启时,只 需要执行指令就可以了):写日志。缺点:体积大,恢复速度慢。...因为 bgsave 会消耗比较长的时间,不够实 时,在停机的时候会导致大量的数据丢失,需要 aof 来配合,在 redis 实例重启时,优先使 用 aof 来恢复内存的状态,如果没有 aof 日志,就会使用

    1K30

    2018整理最全的50道Redis面试题!

    为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品. 20、Redis集群会有写操作丢失吗?为什么?...可以在同一个服务器部署多个Redis的实例,并把他们当作不同的服务器来使用,在某些时候,无论如何一个服务器是不够的, 所以,如果你想使用多个CPU,你可以考虑一下分片(shard)。...AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF...你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整....50、修改配置不重启Redis会实时生效吗? 针对运行实例,有许多配置选项可以通过 CONFIG SET 命令进行修改,而无需执行任何形式的重启。

    1.1K00

    史上最全 50 道 Redis 面试题

    为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品. 20、Redis集群会有写操作丢失吗?为什么?...可以在同一个服务器部署多个Redis的实例,并把他们当作不同的服务器来使用,在某些时候,无论如何一个服务器是不够的, 所以,如果你想使用多个CPU,你可以考虑一下分片(shard)。...AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF...你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整....50、修改配置不重启Redis会实时生效吗? 针对运行实例,有许多配置选项可以通过 CONFIG SET 命令进行修改,而无需执行任何形式的重启。

    57840

    国民级应用:微信是如何防止崩溃的?

    每个业务的请求量很大,那一定会造成负载的大幅波动。另外如果在业务中随机丢弃请求,在过载情况下还是会导致整体成功率很低。 解决这个问题可以引入用户优先级。...为啥不采用会话 ID 计算优先级呢?从理论上来说采用会话 ID 和用户 ID 效果是一样的。...但是采用会话 ID 在用户重新登录时刷新,这个时候可能用户的优先级可能变了,在过载的情况下,可能因为提高了优先级就恢复了。...这样用户会养成坏习惯,在服务有问题时就会重新登录,这样无疑进一步加剧了服务的过载情况。 引入了用户优先级,那就和业务优先级组成了一个二维控制平面。...为了实现这个能力,在每次请求下游服务时,下游把当前服务的准入优先级返回给上游,上游维护下游服务的准入优先级,如果发现请求优先级达不到下游服务的准入门槛,直接丢弃,而不再请求下游,进一步减轻下游的压力。

    2.5K71

    《逆袭进大厂》第九弹之计算机网络重点篇(附答案)

    通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。 referer识别。...97、文件上传漏洞是如何发生的?你有经历过吗? 文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。...文件上传的目录设置为不可执行。 1)判断文件类型。在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。...达到阀值后每次以一个MSS为单位增长拥塞窗口大小,当发生拥塞(超时未收到确认),将阀值减为原先一半,继续执行线性增加,这个过程为拥塞避免。 快速重传 & 快速恢复:略。 最终拥塞窗口会收敛于稳定值。...2xx 成功 200 OK 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。

    75930

    微信团队分享:微信后台在海量并发请求下是如何做到不崩溃的

    当服务过载时随机执行减载可以让系统维持饱和的吞吐量,但后续过载可能会超预期大大降低系统吞吐量 … 即:在大规模微服务场景下,过载会变得比较复杂,如果是单体服务,一个事件只用一个请求,但微服务下,一个事件可能要请求很多的服务...那为什么也不使用 CPU 负载作为判断标准呢? 因为 CPU 负载高不代表服务过载,因为一个服务请求处理及时,CPU 处于高位反而是比较良好的表现。...跟业务优先级一样,单个用户的访问链条上的优先级总是一致的。 这里有个疑问:为啥不采用会话 ID 计算优先级呢?...从理论上来说采用会话 ID 和用户 ID 效果是一样的,但是采用会话 ID 在用户重新登录时刷新,这个时候可能用户的优先级可能变了。在过载的情况下,他可能因为提高了优先级就恢复了。...这个时间复杂度是 O(n), 就算使用二分法,时间复杂度也为 O(logn),在数千个优先级下,可能需要数十次调整才能确定一个合适的优先级,每次调整好再统计优先级,可能几十秒都过去了,这个方法无疑是非常低效的

    2.1K10

    2024年java面试准备--redis(2)

    可以看出,在key足够分散的情况下,均匀性可以获得,但一旦有节点加入或退出,所有的原有节点都会受到影响,稳定性无从谈起。...- (T2 - T0)- T1 该方案通过多节点来防止Redis的单点故障,效果一般,也无法防止: 主从切换导致的两个客户端同时持有锁 大部分情况下持续时间极短,而且使用Redlock在切换的瞬间获取到节点的锁...2、辅助实现min-slaves,Redis可以通过配置防止主服务器在不安全的情况下执行写命令 min-slaves-to-write 3 (min-replicas-to-write 3 ) ​ min-slaves-max-lag...10 (min-replicas-max-lag 10) 上面的配置表示:从服务器的数量少于3个,或者三个从服务器的延迟(lag)值都大于或等于10 秒时,主服务器将拒绝执行写命令。...的操作是原子性的,怎么保证原子性的 对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。

    37850

    kafka消息面试题

    其次,它只能实现单会话上的幂等性,不能实现跨会话的幂等性。这里的会话,你可以理解为 Producer 进程的一次运行。当你重启了 Producer 进程之后,这种幂等性保证就丧失了。5.11....不知道对于类似场景有什么好的解决方案可以自己写个partitioner,让相同的key用于去到相同的分区5.18. 如果长时间不消费,提交的位移会过期吗?...为什么位移主题写入消息时,不直接替换掉原来的数据,像 HashMap 一样呢?...同一个Group中的不同Consumer实例可以订阅不同的Topic吗可以的。虽然在实际使用中可能更多的还是同一个group的多个实例订阅相同的topic。...我们可以在没有Zookeeper的情况下使用Kafka吗?Zookeeper是一个开放源码的、高性能的协调服务,它用于Kafka的分布式应用。

    2.5K11

    云开发系列(一):实现验证码登录

    ] 事实上,在云端这么发达的今天,加上V8引擎和Node.js的快速发展,这些功能从组织架构上确实不一定由前端做,但是一个前端可以也应该去学会这些与服务器,数据库交互的写法,只会构建UI界面和交互的前端终究在时代里会被慢慢淘汰...但是呢,写完 ≠ 跑通,虽然我们在本地启动node服务后可以在localhost层面上进行测试,但是要部署还有很多步骤 (1)首先我们使用Putty或者FileZilla这样的产品,将服务和编译后的前端静态文件部署到服务器上...其他终端的有.NET 和 Flutter,小游戏有cocos 可以理解为是开发者的一个工具箱,就像家里常备的那种工具箱,产品的愿景,是希望所有开发者能够拎着这个名为cloudbase的工具箱,快速的使用云上能力构建出所需要的应用...我们只需要轻轻的在这里点一下安装就好了 [image.png] 然后? 然后就可以调用了宝贝儿!什么node,什么服务器启动都见鬼去吧! 你问我那部署咋办,我没买服务器我FileZilla传哪里呢?...也提供了一个默认域名供给访问,如果你有自己的域名的话还可以配置上安全域名 云开发的核心是将所有的精力都放在开发者关心的功能与业务代码上 如果您看到了这里,麻烦点个赞吧,这对我真的很重要~

    3.6K173

    面试之Redis

    使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?...知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?...AOF(Append Only File:将 redis 所执行过的所有指令都记录下来,在下次 redis 重启时,只需要执行指令就可以了):写日志。缺点:体积大,恢复速度慢。...因为 bgsave 会消耗比较长的时间,不够实时,在停机的时候会导致大量的数据丢失,需要 aof 来配合,在 redis 实例重启时,优先使用 aof 来恢复内存的状态,如果没有 aof 日志,就会使用...解决方案:1.使用互斥锁:当缓存失效时,不立即去 load db,先使用如 Redis 的 setnx 去设置一个互斥锁,当操作成功返回时再进行 load db 的操作并回设缓存,否则重试 get 缓存的方法

    33810

    RAFT算法详解

    如果一个候选人赢得了选举,它就会在该任期的剩余时间担任领导人。在某些情况下,选票会被瓜分,有可能没有选出领导人,那么,将会开始另一个任期,并且立刻开始下一次选举。...当这条日志被复制到大多数服务器上,Leader将这条日志应用到它的状态机并向客户端返回执行结果。 客户端的每一个请求都包含被复制状态机执行的指令。...如果一个日志条目被复制到大多数服务器上,就被认为可以提交(commit)了。 上图显示,共有 8 条日志,提交了 7 条。提交的日志都将通过状态机持久化到磁盘中,防止宕机。...五、日志压缩 在实际的系统中,不能让日志无限增长,否则系统重启时需要花很长的时间进行回放,从而影响可用性。...6、Raft的日志有什么特点? 日志由有序编号(log index)的日志条目组成,每个日志条目包含它被创建时的任期号(term)和用于状态机执行的命令。

    6.3K31
    领券