摘要:
死锁产生的原因: 两个进程都拿着对方需要的资源(锁/表/行数据)不放,而形成相互等待。 如果不同程序会并发存取多个表/资源,尽量约定以相同的顺序访问表/资源,可以大大降低发生死锁的可能性; 注:不影响并发性能,是最经济的办法 在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率; 对 阅读全文
摘要:
https://www.cnblogs.com/crazymakercircle/p/13917517.html 阅读全文
摘要:
说mycat的事务支持之前,先说说XA协议,即分布式事务。指的是TM(事务管理器)和RM(资源管理器)之间的接口。整个XA协议主要基于二阶段提交的概念。这个概念很好理解,当TM接到一个全局事务请求的时候,TM会把请求告知注册在它身上的所有RM,当所有RM准备就绪后,再执行commit操作。在这个过程 阅读全文
摘要:
mycat 介绍及原理 mycat是基于java语言的数据库中间件,它遵守Mysql原生协议,是一个Mysql中间代理。mycat工作原理:拦截用户发送的SQL语句,对SQL语句做一些特定的分析:分片分析,路由分析,读写分离分析,缓存分析等。然后将sql发往后端真实的数据库。 分库分表带来的一些问题 阅读全文
摘要:
多线程对同一资源的竞争,需要用到锁,例如Java自带的Synchronized、ReentrantLock。但只能用于单机系统中,如果涉及到分布式环境(多机器)的资源竞争,则需要分布式锁。分布式锁的主要作用: 保证数据的正确性: 比如:秒杀的时候防止商品超卖,表单重复提交,接口幂等性。 避免重复处理 阅读全文
摘要:
1. 主备模式:也就是主节点提供读写,备用节点不提供任何读写的,只用来实现当主节点宕机的情况下能顶上去。 2. 远程模式:就是我们可以把消息进行不同数据中心的复制工作,可以跨地域的让两个mq集群互联远距离通信和复制。 3. 镜像模式(Mirror),就是集群里面的每个节点都会存储Queue的数据副本 阅读全文
摘要:
1.生产者消息确认 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。 2.消息持久化 生产者确认可以确保消息投递到RabbitMQ的队列中,但是消息发 阅读全文
摘要:
一、什么是幂等性 幂等性就是同一个操作执行多次,产生的效果一样。多次执行不会造成程序逻辑异常。 常见的请求有如下几种,他们的幂等性如下: select查询天然幂等; delete删除也是幂等,删除同一个数据多次其效果一样; update直接更新某个值时,幂等; update更新累加操作的的结果,非幂 阅读全文
摘要:
一、消息队列的投递confirm确认机制 一些消息中间件会有消息投递确认机制,比如当RabbitMQ成功接收到消息之后会自动异步的回调生产者的一个接口返回成功与否的消息,但是我们不能依靠他们自身的机制,因为还是不能100%保证。 二、 消息落库,对消息进行状态打标 这种方式在高并发场景下是有性能瓶颈 阅读全文
摘要:
1)Erlang进程间上下文切换效率远高于C语言和Java,进一步提高了RabbitMQ并发性能; 2)Erlang的网络性能有着和原生Socket一样的延迟,是的RabbitMQ的网络IO性能极高; 阅读全文