分布式系统
深山猿
不断进化的深山猿
展开
-
消息发送一致性的保证
首先定义什么是消息的一致性:产生消息的业务动作与发送的一致,就是说,如果操作成功了,那么这个操作产生的消息一定要发送出去,否则就丢失消息了。另一方面,如果业务行为没有发生或者失败则不能把消息发送出去。经常的思路是:先写业务,然后写消息,这样不能保证业务完成,消息一定写成功了;或者先写消息,后写业务,这也不能保证消息写成功后,业务一定会执行成功。现在有种思路如下:,但是上面...原创 2018-10-24 22:17:33 · 9420 阅读 · 0 评论 -
分布式系统唯一id方案-SnowFlake
摘要:SnowFlake算法生成的ID大致上是按照时间递增的,用在分布式系统中时,需要注意数据中心标识和机器标识必须唯一,这样就能保证每个节点生成的ID都是唯一的。它可以满足Twitter每秒上万条消息ID分配的请求,这些消息ID是唯一的且有大致的递增顺序,且是一个64位整形,即8字节,可以展示为一个Long类型的整数。结构如下(每一部分用“-”符号分隔):0 - 0000000000 00...转载 2019-11-16 18:20:34 · 248 阅读 · 0 评论 -
zookeeper原理解析
zookeeper学习为什么需要zookeeper,zookeeper作用是什么?Zookeeper主要用于分布式系统中,为了提供高可用的服务,作用主要包括两点:1)在主备节点之间选举主节点 2)在发生宕机重启等意外情况时,使某个值达成一致,保证不论发生以上任何异常,都不会破坏决议一致性。zookeeper使用实例在kafaka集群中,通过Zookeeper管理集群配置,选举l...原创 2018-07-18 20:34:11 · 9388 阅读 · 1 评论 -
常用MQ及其原理
mq为了解决什么问题?1、异步通信 有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。2、解耦降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于...原创 2018-07-20 17:56:42 · 28693 阅读 · 0 评论 -
redis+环绕aop 实现定时任务在集群中仅执行一次
场景说明:web服务原本仅有一台机器,现在因为用户量增加准备扩充为2台机器,那项目中的定时任务要求仅能单次在一个机器上执行。解决:准备采用redis实现分布式锁功能,定时任务执行前先查看执行方法对应的key在redis中是否存在,如果不存在,则把key放入(相当于加锁),指定过期时间(防止方法执行失败导致的死锁),方法执行完成后移除key(释放锁);如果key已经存在,则直接跳过,方法不执行。...原创 2019-10-10 11:17:49 · 598 阅读 · 0 评论