分布式事务
文章平均质量分 55
孤独的投机家
孤独的投机家,公众号同名,意味像寻找美食一样寻找市场的龙头。业余是一名互联网公司的后台Java开发,擅长架构,喜欢阅读新领域的开发知识,也喜欢金融方面的独特见解,同样擅长证券市场投机,主业是内容输出,有孤独的投机家知识星球,欢迎加入。
展开
-
docker daemon.json肯多多
修改了harbor,想传个镜像到Registry,结果改了daemon就出错了异常如下:[root@localhost docker]# systemctl status docker.service● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)原创 2021-03-15 10:45:02 · 831 阅读 · 1 评论 -
孤独送书啦~本期送出《springboot实战》
孤独送书活动啦~本次送出汪云飞的 springboot实战一书。关注孤独的投机家即可参与,在公众号留言或者从菜单栏选择孤独抽奖跳转。原创 2020-05-28 17:00:18 · 115 阅读 · 0 评论 -
RabbitMQ的消息可靠投递 --中篇
前言上一节提到的问题,关于在消费端消费了消息后进行回调处理作出应答的机制,再通过RPC的方式进行调用生产端把没有正常消费的消息进行重复的投递的过程,产生的疑问都归结于,broker没有及时的作出回应的情况如何处理的问题,而本节就针对这个生产端以及broker端的应答作出详细的解说,结合上一节的内容作出一个补偿的方案,把项目的优化推进。broker的确认机制这个表示生产端发送消息,broker...原创 2019-01-13 22:47:49 · 189 阅读 · 0 评论 -
分布式锁,使用redis还是zookeeper来实现? ---上篇
背景:项目终于在使用redis的redLock算法出现了生产问题,就是master-slaver模式,线程一进入lock,而master准备写进slaver的时候down了,而另外一个线程进入了lock,这时候就出现了并发的情况出现,虽然设置了过期时间,但是这时候数据已经不一致了。为了解决这个问题,这时候翻看了官网给出了详细的解决方案。单机版的RedLock实例我们先看下是否有什么办法可以修...原创 2019-01-09 21:56:57 · 310 阅读 · 0 评论 -
分布式锁,使用redis还是zookeeper?--中篇
前言上篇已经详细提及到redis实现的redLock算法下的分布式锁,在项目里出现的问题以及提出的解决的方案,现在就针对这个分布式锁的话题,这节就针对zk的锁来详细说明,项目里使用的zk实现分布式锁还是很方便的,使用起来比redis要高效,安全。而且ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件...原创 2019-01-09 23:36:50 · 281 阅读 · 0 评论 -
Redis,Kafka,ActiveMQ,RabbitMQ, JVM, lMax Disruptor 等实现的队列进行对比 -- lMax篇
前言前几节提到的队列的实现都是基于并发量不是特别大的场景,而且需要消息消费的数据数据达到最终一致性做了折中的处理,而本节针对超高并发量的场景下使用lMax,这节就重点提及disruptor的使用,以及从各大厂对disruptor的使用情况,简单的介绍disruptor的文章。文中介绍了disruptor的性能,以及特有的数据结构,分析了缓存的三种级别,分别对那种情况下能使用到最高速的L1缓存做了...原创 2019-01-26 16:52:53 · 1026 阅读 · 0 评论 -
Redis,Kafka,ActiveMQ,RabbitMQ, JVM, lMax Disruptor 等实现的队列进行对比 --JVM篇
前言前面章节提及到的队列的几种变形,本节就结合代码讲述JVM层面的队列的使用,也就是java原生里面支持双向阻塞的队列LinkBlockingQueue的使用。只是这里带出一个知识点就是,JVM在同一时刻只会初始化一个类,使用匿名内部类实现单例,这就支持了线程安全。具体代码如下。秒杀队列(固定长度为100)package com.itstyle.seckill.queue.jvm;impo...原创 2019-01-21 23:07:05 · 1032 阅读 · 0 评论 -
从面试中的LMAX Disruptor问题
前言上节提及到了关于队列的生成以及使用的api从应用的角度来分析了队列的各种使用,包括常用的rabbitMQ以及性能比较好的kafka等等,而对于LMAX的介绍相对来说比较少,而本节就从源码的角度来看看面试中的应答,毕竟作为消息中间件,性能方面,lmax是毋庸置疑是性能之王,单线程可以并发600w的高性能,具体是什么的结构让他拥有如此的性能,下面从冰山一角来作出解释,后续的章节会陆续在有条件的情...原创 2019-01-29 00:25:32 · 935 阅读 · 0 评论 -
从RocketMQ的common模块分析RocketMQ
前言从之前的几节介绍了消息中间件,以及之间的使用区别,这节将会从RocketMQ的common模块出发,分析设计了思路以及可以借鉴的代码逻辑,代码技巧等,毕竟目前好的架构师一半是来自阿里,学习阿里的这套代码规范以及设计思路,帮助读者在项目中更好的,更高层面思考模块的设计,后续将会陆续的从其他模块调选精辟的设计思路来分析。从UtilAll.java类设计工具类阅读源码的步骤第一步并不是直接看源...原创 2019-02-05 17:38:09 · 613 阅读 · 0 评论 -
RabbitMQ的消息可靠投递 --上篇
前言上一节介绍了有关rabbitmq里面常用了几种命令,以及交换机的路由规则等,生产端以及消费端之间的伪代码来介绍了各种路由规则下的消费情况,从管控台的设置,数据分析,了解到如何手动设置vhost下的交换机以及用户,队列等。这节开始就rabbitmq的高级特性进行详细的介绍,比如TTL,死信队列,限流,ACK以及失败转移等生产中常用到的特性。消息如何保障100%的投递成功?这里投递成功的意思...原创 2019-01-13 19:19:43 · 496 阅读 · 0 评论 -
CSDN站内最全的zookeeper分布式锁的讲解
1 场景描述在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这些进程共享了一些资源, 可能就需要分布式锁来锁定对这些资源的访问。2 思路进程需要访问共享数据时, 就在"/locks"节点下创建一个sequence类型的子节点, 称为thisPath. 当thisPath在所有子节点中最小时, 说明该进程获得了锁. 进程获得锁之...转载 2019-01-12 12:55:53 · 135 阅读 · 0 评论 -
Postgre查询优化 --算法篇
前言这部分的内容也是基于上章节提到的数据库优化的各种操作,比如逻辑层面,以及物理层面的,而这节将从物理层面来介绍PG 基于算法的优化,提到PG的算法优化就从PG引以为豪的遗传算法来介绍以及对比动态规划的优缺点来分别得出结论,什么情况下使用PG得到最好的解决方案。动态规划算法简单的介绍动态规划算法,表示在多表进行关联操作的时候,会从第1层关系到N-1层关系,每一层都算出最优的路径,然后跟第N层...原创 2019-01-06 22:05:13 · 810 阅读 · 0 评论 -
数据库优化---李海翔 写的《数据库查询优化器的艺术》 一书的一些心得体会
前言最近项目的数据库要从oracle转PG,基于开源以及普及度方面PG不及mysql,基于性能不及Oracle,这样选型PG的用意何在呢?所以,趁着这个空档是时间来了解了一下数据库的优化方面的知识,以及归档,接下来的文章主要重心是放在PG的优化以及mysql的优化的描述,以及一般数据库的优化从哪些方面开始着手,这里大部分的内容都是笔者从 李海翔 写的《数据库查询优化器的艺术》 这本书的一些心得体...原创 2018-12-31 11:09:43 · 833 阅读 · 2 评论 -
数据库查询优化引擎可以怎样实现查询优化---开篇
前言数据库的优化体现在各个优化引擎上,一个数据库能否流行起来,也是取决于数据库本身的优化引擎的优劣。而优化也是分几个阶段,比如,第一个阶段是需求分析,这时候就是对数据库的选型,系统的选型做,应用的策略做判断,第二个阶段是基于选好优化器的基础上进行数据模型的设计,这个阶段会产生需求体现的表,字段,以及代码里面映射到的POJO,第三个阶段是开发过程中SQL脚本的优化处理,这里只是基于语法层面的优化,...原创 2018-12-31 12:06:26 · 367 阅读 · 0 评论 -
数据库查询优化引擎可以怎样实现查询优化--逻辑查询优化
本节大部分的资料来自《数据库查询优化的艺术》 23页到第二章结束的内容最常见的子查询优化IN 类型的优化1.OUT_EXP (NOT) IN INNER_EXP_SELECT_SQL2.OUT_EXP = ANY INNER_EXP_SELECT_SQL第一种情况需要OUT_EXP与INNER_EXP都为非空的值,可以使用EXISTS来替代优化,OUT_EXP (NOT) EXISTS...原创 2018-12-31 19:22:25 · 334 阅读 · 0 评论 -
从spring的ApplicationListener的角度了解异步机制
背景接触新的项目的几天时间,除了传统的CRUD业务之外,项目用到的集群锁,以及事件监听广播机制等使用,使人联系其java.util.concurrent.futureTask.的使用,本节将从项目里遇到的各种业务场景中使用的广播事件来对异步线程池的处理广播事件总结,并且对这种事件的广播机制延伸的处理方案的提出改良。如何使用异步线程池处理任务事件笔者从事电商项目有一段时间,对于传统的电商项目的...原创 2019-01-05 15:43:17 · 1888 阅读 · 0 评论 -
数据库查询优化引擎可以怎样实现查询优化---物理查询优化
前一节介绍了逻辑优化,包括语义上的优化等,体现在等价的结果集的基础上,是的执行时间最短,使用建立索引的条件查询来实现等。这节就开始从物理的层面优化,物理层面的优化就体现在算法,以及索引。单标扫描算法这里的扫描算法也是需要结合索引来说,如果没有建立索引,查询执行计划的时候就出现seqscan,如果建立了索引就出现indexscan。这里单表扫描重点在于常用的全表扫描以及局部扫描,索引扫描,行扫描...原创 2018-12-31 22:59:43 · 476 阅读 · 0 评论 -
Postgre查询优化器--上篇 原理解析
本章节将从源码的角度来分析PG优化器的原理,工作方式,本文大部分内容来自 李海翔 《数据库优化器的艺术》PG的查询执行过程从表象来分析PG的查询执行过程,从而深入理解架构层次,从PG的查询执行过程分为4个阶段,跟mysql的过程有点类似 语法分析阶段,语义分析阶段,优化阶段,这里分为视图重写,集合分解为非集合操作 因为数据库的瓶颈就在于IO,而这里PG针对IO的优化处理是通过对SQL的代数等价...原创 2019-01-01 16:15:20 · 745 阅读 · 0 评论 -
Postgre查询优化器 --中篇 数据结构
上篇简单的介绍了PG的查询架构,以及优化的过程,本篇将从数据结构角度分析,查询优化器的工作过程。本节的重点在于所提到的数据结构之间的关系,在整个PG架构里的作用。主要的数据结构作为查询优化器的4个重要的数据结构,前一篇提到的左深树等树的结构,那基本的数据结构肯定有list,node等。查询树,关系对象,连接关系对象,查询执行计划而基本的数据结构是list。定义如下:以及定义了listCel...原创 2019-01-01 19:11:47 · 1111 阅读 · 0 评论 -
Postgre查询优化 --功能的角度优化分析
前言前一篇文章已经从PG的数据结构等角度分析了PG的优化处理的源码细节,这节将从功能应用层面来对PG的查询优化进行分析。重点还是放到了逻辑查询优化功能上,分别针对,操作下推,谓词改造,语义转换,非SPJ优化等等内容。PG查询优化器之逻辑查询优化这里的逻辑优化是针对数据库常用的优化方案进行讲解,比如视图优化,操作下推等,下面就分模块的来详细的叙说。视图重写根据系统的查询规则,把查询修改为需...原创 2019-01-06 18:14:31 · 893 阅读 · 2 评论 -
springcloud 中使用redis以及rabbitMQ实现分布式事务
分布式事务的补偿机制,在很多成熟的案例都是使用TCC机制,来实现资源冻结,以及提交,失败则释放资源,很多情况下,处理业务的特殊情况需要对不支持事务的redis进行手动的事务补偿。比如,现在人脸识别入库的服务,算法识别人脸的服务,这两个是依赖性比较高的服务,而且存在长事务,如果需要查询频繁的操作,就需要把数据放到redis,缓存 减轻数据库的压力,而发生事务的操作,在方法上即使使用了@Transa...原创 2018-12-18 11:24:10 · 6073 阅读 · 3 评论