自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(157)
  • 收藏
  • 关注

原创 数据在线迁移

2、双写数据库 读旧数据库。3、旧数据迁移到新数据库。

2023-11-22 17:27:08 101

原创 yangqianguan 工程管理

1、IDEA里面可以指定用那个setting-rta-xxx.xml配置文件,但是使用命令行默认使用setting.xml文件。2、最好直接覆盖setting.xml文件。执行flyway 工程根目录下执行。

2023-11-06 11:27:19 78

原创 binlog的三种格式

每次操作保存受影响的行,以及怎么变化。但是会产生大量的日志,比较浪费存储空间。保存执行的sql语句,但是如果语句中有随机数,会造成主从同步数据不一致。如果语句中没有随机数等,就保存sql语句,否则保存为row格式。binlog日志文件是二进制的,直接打开是乱码。1、statement格式。

2023-10-10 14:51:49 370

原创 redis主从同步

3、redis有一个环形的buffer存储执行过的语句,还有一个offset保存同步到什么位置了。如果master操作太快,slave同步跟不上,就会导致唤醒buffer还没有同步完成就被覆盖,你这时候slave和master的版本不一致,就会进行全量同步。2、master和slave都保存replica_id版本号,如果版本号不一致进行全量同步,master发送rdb文件给slave进行数据加载。如果版本号一致,进行增量同步。master保存了offset,从offset位置继续同步。

2023-10-10 14:48:45 73

原创 JVM参数调优

原因一:高并发请求产生大量临时对象,survivor区又比较小,导致大量对象进入老年代,老年代很快就满了,导致fullgc频繁。2、如果使用到了本地缓存,存储大量的对象,可以调大堆内存空间。1、每个线程有自己的线程栈,线程数太多,可以调大栈内存空间。高并发请求产生大量临时对象,导致yung gc频繁。eden区太小,会导致yung gc频繁。2、 yung gc频繁。1、full gc频繁。

2023-10-10 13:42:10 38

原创 RocketMq消费者组下多个消费者订阅关系不一致

原因在于再给消费者组下面的多个消费者分配消息队列时。并没有细分到topic维度。直接根据消费者组下有几个消费者进行分配。不管有没有监听这个topic。都会给他分配这个topic的消息队列queue。但是他却没有消费,就会造成消息堆积。1、RocketMq规定同一个消费者组下的消费者订阅关系(订阅了哪些Topic。tag是什么)一定要一致。而且和生产者组的topic tag一致。topic可以使用tag进行过滤。生产者可以发送带tag的消息。消费者如果tag不一致,会把消息过滤掉。tag不一致造成消息丢失。

2023-07-26 20:38:58 933

原创 订单 redis 订阅与发布

定时一分钟将本地缓存写入ES。根据tenantId和key来决定由那个机器来写入ES。CD两个区的机器会订阅这个通道。全量保存到本地缓存。(使用tenantId租户和城市作为key)每台机器全量保存了所有数据。但是只负责写入固定的几个tenantId+城市。乘客下单,订单会在redis通道发布一条消息。

2023-07-24 15:25:03 50

原创 快手商业化一面

11、长连接为什么使用netty。不使用java的IO多路复用。8、concurrentHashMap与hashMap的区别。5、RocketMq queue副本消息队列。10、本地缓存中间件 memorycache。2、undolog写的是二进制还是sql语句。15、undolog事务具体细节怎么实现事务。13、主从同步 binlog。3、redis集群什么模式的。17、cap原理,什么中间件。6、怎么保证消息队列幂等性。16、二叉树层次遍历。

2023-07-06 20:31:09 99

原创 推全量和推增量优缺点

2、推增量,如果网络超时,继续再次推送,接受者需要判断,上一次是否真正执行成功了,防止重复执行,否则数据不一致。需要很多额外的保证,增加复杂性。1、推全量不需要考虑数据一致性,如果推失败,直接重试。

2023-06-21 17:35:18 239

原创 elasticsearch文档id达到最大值,写不进去

4、documentId不断递增,打到Integer最大值。每一个月建立一个新索引。查询的时候,可以指定索引通配符查多个索引。2、es索引创建时,指定4个主分片。1、使用es保存司机出车,还车事件。3、es不断往里写,没有删除的操作。

2023-06-21 16:37:47 101

原创 大屏展示司机实时位置

3、线上机器分为两个区,两个区使用不同的mq实例集群。司机长连接,上传的位置就会在同一个区mq上的同一个queue,如果是短连接上传位置点,司机就会ngix打到不同的机器,如果打到不同的qu,生产到不同的mq实例,存在问题。mq使用集群模式,同一个司机位置信息在同一个queue。每个消费者消费固定的queue,除非消费者节点数变化或者queue个数变化,需要重新分配。2、考虑到位置信息5s上传一个,消费不需要严格保证有序。1、改成局部有序,同一个司机位置点,生产有序,生产到同一个mq queue。

2023-06-19 21:35:02 71

原创 ES顺序问题

1、使用局部有序mq顺序写入es。结果查询es出现乱序。

2023-06-15 20:08:03 121

原创 CAP原理

如果保证一致性,对于主机写数据,首先要加分布式锁,禁止从机读写。主机写完,同步完成,主机才释放锁。但是如果主机挂机,直接造成服务不可用。分区容错性是指可以接受分布式系统中系统的网络断开。这个一般都是必须要具备的。关键是一致性和可用性之间是矛盾的。因此分布式系统只能是AP和CP两种。三、P Partition tolerence (分区容错性)写主机期间,从机旧数据被读取。一、C Consistence(数据一致性)二、A Avaliable(可用性)

2023-05-23 14:29:49 52

原创 ElasticSearch原理

2、删除文档、每个segment还有一个.del文件,虽然不能修改倒排索引segment。但是删除文档,可以把删除的文档记录到.del文件中。ElasticSearch底层使用Lucene的全文搜索能力,Lucene不支持对于倒排索引的修改,但是文档的新增、修改、删除又必须修改倒排索引。1、使用缓存,并且将倒排索引拆分为多个小的倒排索引。对缓存内一定数量的文档,新增生成一个小的倒排索引segment。3、更新文档、更新文档可以分为删除和新增。现在.del删除旧文档,在缓存中新增新文档。

2023-05-15 22:04:39 338

原创 mongodb

2、mongodb数据保存在磁盘,使用mmap进行linux内核与用户态的内存映射,省略一次拷贝操作。linux内核与磁盘的交互拷贝由linux内核管理。1、mongodb是无关系数据库(NoSql)

2023-05-15 20:26:09 43

原创 mongodb geohash

我们知道,通常的数据库索引结构是B+ Tree,如何将地理位置转化为可建立B+Tree的形式,下文将为你描述。单纯的[x,y]的数据是无法建立索引的,所以MongoDB在建立索引的时候,会根据相应字段的坐标计算一个可以用来做索引的hash值,这个值叫做geohash,下面我们以地图上坐标为[4,6]的点(图中红叉位置)为例。这时[4,6]点位于右上区域,右上的值为11,这样[4,6]点的geohash值变为:0011。这样我们用这个值来做索引,则地图上点相近的点就可以转化成有相同前缀的geohash值了。

2023-05-15 17:07:15 494

原创 完成司机最新位置信息从es到mongodb的迁移,优化司机运力热力图查询

1。

2023-05-12 14:48:04 80

原创 wait notify

1.当前线程必须拥有此对象的monitor监视器(锁)。2.当前线程调用wait()方法,线程就会释放此锁的所有权,并等待,3.直到另一个线程通过调用notify方法或notifyAll方法通知在该对象的监视器(锁)上等待的线程唤醒。4.然后线程等待,直到它可以重新获得该对象的监视器(锁)的所有权然后继续执行**(被唤醒之后还需等待直到获取锁才能继续执行)。

2023-05-11 11:00:50 35

原创 cpu load与cpu使用率与线程的5种状态

需要注意的是,阻塞状态只能进入就绪状态,不能直接进入运行状态。因为,从就绪状态到运行状态的切换是不受线程自己控制的,而是由线程调度器所决定。只有当线程获得了CPU时间片之后,才会进入运行状态。在单核系统上,“ 100%利用率”表示负载为1.00,在双核系统上是2.00,在四核系统上是4.00,依此类推。调用了 start 方法之后,线程就进入了就绪阶段。当线程获得CPU时间片后,就会进入运行状态,开始执行run方法。调用suspend方法,挂起线程,也会造成阻塞。调用wait方法,使线程进入等待。

2023-04-28 16:56:29 1181

原创 设计模式】引言-六大设计原则

AbstractQueuedSynchronizer的设计,队列同步器的实现及其复杂,但主要流程一致,区别只在于tryAcquire和tryRelease时对同步状态值(state)的判断与处理,所以可以利用模版模式将差异的部分进行抽象,子类根据自身的功能需求来实现。● 个人理解:基于Java的继承机制和多态特性,在加上Java强类型的限制,通常都可以在父类出现的地方合理使用其子类。● 概念:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。● 个人理解:低耦合。

2023-04-24 16:46:42 372

原创 mq消费者消费线程开多少合适

2、如果是IO密集型,拿到mq消息不怎么参与计算,主要参与IO,IO等待浪费时间。这种情况线程数越多,越快。对于IO密集型应用,线程数太少就会消费速度太慢,同时cpu占用率也很低,cpu大部分时间都在IO等待。对于IO密集型应用,线程数要设置到cpu占用率比较合理的位置。1、如果是计算密集型,拿到mq消息主要参与计算,不参与io。几核处理器开几个线程最快,既不浪费处理器,也不需要线程切换,计算消费最快。3、或者将IO密集型转化为计算密集型, mq消费者拿到数据,异步进行后续IO。

2023-04-24 14:54:08 405

原创 ConcurrentLinkedQueue

唯一一个使用cas实现的线程安全并发效率高的集合。

2023-04-21 18:09:04 521

原创 使用concurrentHashMap实现缓存

2、使用@PostConstruct注解init函数,在生成bean的时候会调用init函数。init函数进行concurrenthashMap的初始化,分配初始空间大小。并且开启线程每隔一段时间处理清空缓存,flushAlll。3、如果一个key需要存多条消息,并发很高,可以考虑分桶,使用多个concurrentHashMap,根据key来决定放到那个Map保存,Map里面使用另外的key进行散列。4、add向缓存添加元素,map元素个数大于阈值,则进行缓存处理清理。

2023-04-19 09:36:58 1569

原创 Kafka

但在java中自己管理缓存会因为堆内存过大影响GC时间,而kafka设计了传输存储格式统一之后,pagecache(文件)中的数据可以直接返回给consumer,故相当于kafka利用了操作系统的pagecache做自己的读缓存。实际上在kafka的消息都被及时消费的场景中,1中从磁盘读文件的操作也是不需要的,因为数据刚被写入pagecache,不会触发缺页中断需要从磁盘加载。开源版本kafka本地盘主写主读模式。阿里云存算分离版本kafka。阿里云商业化版本需要支持。

2023-04-17 16:57:18 316

原创 location学习笔记

2023-04-13 19:38:46 44

原创 location-accept学习笔记

生产者发送消息,采用轮询的方式,threadLocal的自增对队列取模。无法保证生产者消息的顺序性。

2023-04-13 15:16:56 55

原创 copyOnWrite

1/

2023-03-28 10:47:37 29

原创 使用redolog undolog binlog保证事务的acid特性

1、

2023-03-27 10:14:26 169

原创 https流程

https

2023-03-09 15:00:33 882

原创 TreadLocal与弱引用和内存泄漏

ThreadLocal与内存泄漏

2023-03-07 12:41:05 53

原创 AQS是啥

AQS

2023-03-03 22:19:53 28

原创 消息队列mq

消息队列

2023-03-03 22:06:37 616

原创 MD5加密

MD5加密

2023-03-03 19:41:04 410

原创 countDownLatch

countDownLatch

2023-03-03 13:24:13 45

原创 kafka吞吐量高的原理

kafka吞吐量高的原理

2023-03-01 12:08:23 45

原创 redis管道,优化

redis管道

2023-03-01 12:06:06 50

原创 Java 线程安全集合

线程安全集合

2023-02-28 08:43:24 197 1

原创 分布式数据库如何保证数据一致性

分布式一致性

2023-02-23 10:22:11 461

原创 数据库与消息队列数据一致性

消息队列与数据库一致性

2023-02-23 10:07:00 281

原创 update导致死锁

update死锁

2023-02-22 15:16:41 2684

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除