
高并发
文章平均质量分 66
岁月无痕_2020
做正确而艰难的事
展开
-
快速统计HBase表行数
背景对于其它数据库而言,统计一张表的行数是最基本的操作,但是对于HBase这种列式存储的数据库而言,使用不同方式统计表的行数效率差别巨大,本文将提供两种java客户端代码统计HBase表行数的方法方案一:scan + filter引入jar包<dependency> <groupId>com.aliyun.hbase</groupId> <artifactId>alihbase-client</artifactId>原创 2021-05-20 13:42:15 · 508 阅读 · 0 评论 -
ES文档新增冲突问题
问题公司现在使用的ES版本是5.5,发现在生成索引文档的时候,会有新增文档冲突问题。比如同一个索引文档中的数据来自两个后台服务,当服务A查询到索引中没有文档1,同一时间服务B也查询到索引中没有文档1,于是两个服务都使用index的方式新增索引文档,导致最后的结果是:文档中要么保存着服务A中的所有字段数据,丢失了服务B中的所有字段数据;要么文档中保存着服务B中的所有字段数据,丢失了服务A中的字段数据。这种情况就导致了数据丢失的问题。解决方案使用版本控制,在插入的时候传入一个版本号为1的值,如果文档已原创 2021-05-20 13:42:34 · 929 阅读 · 0 评论 -
Kafka技术总结
控制台调用创建topic/usr/local/kafka/kafka_2.11-2.2.0/bin/kafka-topics.sh --bootstrap-server kafka:9092 --create --topic topic01 --partitions 2 --replication-factor 1创建控制台消费者/usr/local/kafka/kafka_2.11-2.2.0/bin/kafka-console-consumer.sh --bootstrap-server ka原创 2021-05-20 13:43:02 · 224 阅读 · 0 评论 -
请求合并框架 -- HystrixCollapser
背景远程调用最常见的问题:通信消耗与连接数占用高并发场景下,因通信次数的增加,总的通信时间将会变得不那么理想因为对依赖服务的资源占用有限,将出现排队等待与响应延迟的问题Hystrix提供了HystrixCollapser来实现请求的合并,以减少通信消耗和线程数的占用HystrixCollapser 实现了在 HystrixCommand 之前放置一个合并处理器:将处于一个很短时间窗(默认10毫秒)内对同一依赖服务的多个请求进行整合并以批量方式发起请求的功能(服务提供方也需要提供相应的批量实原创 2021-05-20 13:43:15 · 508 阅读 · 1 评论 -
高阶架构 -- 数据同步之ABA问题
背景由于数据库的like %xxx% 对大文本检索效率很差,所以在实际开发过程中,遇到文本检索的应用场景,我们会考虑使用ElasticSearch这种专业的全文搜索和分析引擎来替换掉传统的数据库检索。使用ElasticSearch进行全文检索,数据从哪来?对,从数据库来,这样就涉及到了数据库与ES之间的数据同步的功能。数据同步方案那么,数据同步应该如何实现呢?传统的实现数据库到ES的数据同步实现方案有以下几种。第一种方案:数据双写顾名思义,就是写入数据库的同时,也写入到ES索引。但是这样会出现数原创 2021-05-20 13:43:28 · 748 阅读 · 1 评论 -
高性能队列--Disruptor
背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列。基于Disruptor开发的系统单线程可以支撑每秒600万的订单。那么,这种高性能的内存队列是如何实现的呢?JAVA内置的队列下面是CPU与缓存的示意图,查询效率是L1>L2>L3>主存下面是CPU访问不通层级缓存数据的时间概念缓存行概念cache是由多个cache line组成的,每个cache line 通常是64个字节,并且它有效地引用内存中的一块地址。cpu每次从主存中拉取数据时,都会将相邻的原创 2021-05-20 13:43:48 · 409 阅读 · 1 评论