面试官杠上重复消费、消息堆积、消息丢失、顺序消息?1、消息是顺序的,先进先出原则,这个由Rabbitmq保证,不同队列中的消息顺序,是没有保证的,例如:进地铁站的时候,排了三个队伍,不同队伍之间的,不能确保谁先进站 。
2、其实,上述3中情况导致消息丢失归根结底是因为RabbitMQ的自动ack机制,即默认RabbitMQ在消息发出后就立即将这条消息删除,而不管消费端是否接收到 , 是否处理完,导致消费端消息丢失时RabbitMQ自己又没有这条消息了 。
3、首先要正确认识自己的情绪 , 不要把没有得到正面反馈的事情当作负面反馈或对自己的否定 。每个人都有自己的事要做,不及时回复或者不回复并不代表别人不重视你或者不喜欢你 。其次要提高自己对于焦虑情绪的耐受度和掌控感 。
Token是什么?和session、cookie相比,使用场景有什么区别?表达意思不同 token:(某些机器中用以代替纸币的)代币,专用辅币;象征,标志;礼券,代金券;(语言学)符号;(计算机)令牌,记号;(火车通行的)路签; 装点门面的,装样子的;象征性的,作为标志的 。
cookie,session,Token没有绝对的好与坏之分,只要还是要结合实际的业务场景和需求来决定采用哪种方式来管理回话,当然也可以三种都用 。
cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据 。跟服务器没啥关系,仅仅是浏览器实现的一种数据存储功能 。
cookie,session都可以是token存储的一种方式 。cookie为存储在本地的数据,请求时会将该数据提交到服务器验证使用 。session为存储在服务器上的内存数据,只要会话没有中断,那么该数据持续有效 。
分布式系统中实现幂等性的几种方式有些接口可以天然的实现幂等性 , 比如查询接口,对于查询来说 , 你查询一次和两次,对于系统来说,没有任何影响,查出的结果也是一样 。除了查询功能具有天然的幂等性之外 , 增加、更新、删除都要保证幂等性 。
总而言之,接口符合幂等性在可以降低系统实现的复杂性,并能保证资源状态的一致性 。RESTFul风格的接口设计本质上使用的是HTTP协议的请求方法 , 因此,RESTFul接口方法的幂等性指的就是HTTP方法的幂等性 。
第四,最终一致性(Eventually Consistent)通过异步事件做到 。如果消息具有操作幂等性 , 也就是一个消息被应用多次与应用一次产生的效果是一样的话,那么把不需要同步执行的事务交给异步消息推送和订阅者集群来处理即可 。
弱一致性 最终一致性 在工程实践上,为了保障系统的可用性,互联网系统大多将强一致性需求转换成最终一致性的需求,并通过系统执行幂等性的保证,保证数据的最终一致性 。
查询 查询的API,可以说是天然的幂等性,因为你查询一次和查询两次,对于系统来讲 , 没有任何数据的变更,所以,查询一次和查询多次一样的 。
【redis中的list如何保证唯一性 redis实现全局唯一id】幂等性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功 , 外部多次调用对系统的影响是一致的 。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试 。
ZooKeeper的ZAB算法与Paxos的本质区别1、对于paxos 来说,每一个议案都要经过不同节点的提出,并且讨论,在提出一个议案的阶段 , 另外的提议会被否决,导致了性能的低下 。ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 协议 。
2、Paxos 对于提案的提交算法有两种方案 , 2PC 与 3PC 。它们的区别主要就在于 accept 阶段中是否包含 commit 功能 。具体看下面的描述 。Paxos 算法的 3PC 执行过程划分为三个阶段:准备阶段 prepare、接受阶段 accept,与提交阶段 commit 。
3、ZAB是Zookeeper使用的分布式一致性协议,英文全称是:Zookeeper Atomic Broadcast,因此ZAB也称之为Zookeeper原子广播协议 。在解决分布式一致性方面,Zookeeper并没有使用Paxos , 而是采用了ZAB协议 。
推荐阅读
- 如何在dota2中选择合适的服务器? dota2怎么选择服务器
- 如何确定一个服务器所在的国家? 怎么查服务器是哪个国家的
- 如何解决脸书无法连接服务器的问题? 脸书无法连接服务器怎么办
- 基于redis的轻量级分布式均衡消费队列 redis消费组
- 如何在dota2中选择服务器? dota2怎么选服务器