- 博客(37)
- 收藏
- 关注
原创 Spring整合Sharding实现查询走指定数据库
Spring整合Sharding实现指定某些查询走列数据库,某些走主库,其他查询实现MySQL从库负载均衡。
2024-07-03 17:55:08
709
3
原创 Flink同步MySQL到StarRocks遇到的问题
解决方案:修改FLINK_HOME/bin/目录的config.sh文件,将DEFAULT_ENV_PID_DIR="/tmp"改为:DEFAULT_ENV_PID_DIR的位置修改到一个合适的位置。kill之前的集群重新启动。原因:flink启动是会把启动的进程的ID存到一个文件中,由于配置不修改的话文件默认是保存到系统的/tmp目录下,由于是临时目录,会被系统清理,所以存放的ID就找不到了,也就没法关闭集群了。
2024-07-03 17:07:39
701
4
原创 Flink DataStream API CDC同步MySQL数据到StarRocks
一、版本信息Flink:1.16.1二代码实现pom文件如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM
2023-12-12 17:17:39
1498
原创 AQS
如果tail节点为空,则同步队列尾空,创建一个空的节点作为head和tail节点。否则CAS 将node节点添加到同步队列尾部。挂起当前线程,并返回线程中断状态。
2023-12-07 14:49:15
795
原创 线程池
降低消耗,线程可以重复使用,降低创建和销毁的销毁提高响应速度,不需要等到线程创建了再执行,多线程可以并发执行线程池可以加强线程的监控和管理,进行统一分配。
2023-12-07 14:47:47
836
原创 intel手册对lock前缀的说明如下
很显然,这会带来昂贵的开销。从Pentium 4,Intel Xeon及P6处理器开始,intel在原有总线锁的基础上做了一个很有意义的优化:如果要访问的内存区域(area of memory)在lock前缀指令执行期间已经在处理器内部的缓存中被锁定(即包含该内存区域的缓存行当前处于独占或以修改状态),并且该内存区域被完全包含在单个缓存行(cache line)中,那么处理器将直接执行该指令。由于在指令执行期间该缓存行会一直被锁定,其它处理器无法读/写该指令要访问的内存区域,因此能保证指令执行的原子性。
2023-12-07 14:38:37
493
原创 Volatile
同时Lock指令会进行缓存锁定,使得其他CPU无法访问,同时Lock前缀使得store buffers刷入缓存行(其他CPU读取该变量时,发现缓存行的状态为I,同时存在其他缓存行状态为M-即刚才store buffers刷入缓存行,这时会先让该缓存行-M的数据刷入内存,然后CPU从内存读取,其实就是缓存一致性协议MESI),同时使得其他cpu或者内核无效化,通过MESI保证可见性。早期保证一致性,通过锁住总线,但是锁住后其他CPU无法访问内存,导致效率低下,引入MESI等缓存一致性协议.
2023-12-07 14:38:05
379
原创 逃逸分析
如果变量只能被一个线程访问,不会被其他线程访问,那么变量的读写是线程安全的,可以进行锁消除对象作用域只在方法或线程中,可以将对象在栈中分配,使用完后就销毁,减小了GC的压力标量替换:不能在被拆分的量叫做标量,对象是个聚合量,当对象不被外部访问,同时这个对象可以被拆散的话,那么不创建对象,用方法中需要使用的标量来替换
2023-12-07 14:33:20
402
原创 JVM 垃圾回收器
G1将内存分为很多大小相同独立的区域。虽然是独立,但是region中可能引用其他region的对象。这样进行可达性分析时,扫描就比较麻烦,所以每个region定义了一个Remembered set记录与其他区域的引用关系,GC扫描时只要扫描Remembered set防止全部扫描。
2023-12-07 14:31:19
387
原创 JVM 垃圾回收
垃圾回收算法一、垃圾回收算法标记清除标记GC Root不可达对象,然后清除。存在内存碎片问题标记整理标记GC Root不可达对象,然后清除,将存活的对象移动到一端。避免了内存碎片的问题复制算法将内存分为相同的两部分,每次使用一块内存,垃圾回收时将存活的移到到另外一块。存在问题就是浪费内存分代回收算法分为新生代和老年代。新生代分为eden和两个survivor区,新生代采用复制算法,每次回收都有98%的对象死亡,将存活的对象存入一个survivor区,当下次回收
2023-12-07 14:28:57
381
原创 Redis 主从复制、哨兵模式、集群模式
哨兵是Redis集群高可用的解决方案,由一个或者多个Sentinel实例组成的系统,会监控Redis主节点,以及主节点下的从节点。当主节点发生故障时,哨兵会在从节点选举一个作为新的主节点,进行故障转移,由新的主节点继续处理命令。哨兵模式很好的解决了主从复制无法故障转移的缺点。但但redis数据量大时无法进行横向扩容。实际开发中通过连接Sentinel来进行redis的操作以及读写分离。
2023-12-07 11:17:38
801
原创 MySQL基础架构
一、基础架构MySQL逻辑上可以分为Server层和存储引擎层Server层分为:连接器:通过TCP和服务器建立连接,进行身份认证和权限查询,后续的操作都根据权限进行查询缓存:将查询语句缓存,key为语句,value为值,当查询语句命中时直接返回值,但是数据进行更新时,缓存会被清空,MySQL8.0以后取消查询缓存解析器:没有命中缓存则进行词法分析和语法分析,词法分析会提前sql语句的关键词,如select,表名等。语法分析会判断sql语句是否符合规范,不符合返回错误优化器:在词法分
2023-12-05 10:42:09
366
原创 MySQL之InnoDB
一、InnoDB体系架构后台线程:后台线程负责刷新缓存中的数据,保证缓存的数据是最新的,将缓存的数据刷入磁盘,同时保证数据库发生异常时恢复正常工作。后台线程分为:Master Thread:将缓存的数据刷入磁盘,像脏页的刷入,插入缓存的合并,undo页的回收IO Thread:InnDB存在大量的IO操作,这类线程主要用于IO的请求回调Purge Thread:当事物执行完毕,有些undo页不需要使用,可通过Purge Thread线程回收,降低Master Thread线程的压力Pag
2023-12-05 10:41:39
367
原创 MySQL主从复制
主从复制默认是异步操作,有主库通知从库,如果采用从库轮询那么效率会很低,主库二进制日志有事件产生唤醒dump 线程就能马上通知从库,效率高的多。写压力大,导致从库的SQL线程来不及消化那么多的写数据。
2023-12-05 10:40:28
336
原创 MySQL事物以及MVCC
MVCC是多版本并发控制,一般解决读写冲突,我们采用加锁的形式,MVCC不需要加锁解决读写冲突。行id(主键存在时,不会创建),事物id回滚指针当我们的隔离级别为RR(可重复读),每开启一个事物,系统会分配一个事物id,当事物第一次调用select语句时会生成ReadView快照。事物id列表:记录当前未提交的事物id,顺序列表高水位:分配给下一个事物的id低水位:对应事物id列表中最小的事物的id创建该列表的事物id当访问的事物id小于低水位时,说明该事物已经提交可以访问。
2023-12-05 10:39:18
868
原创 Redis缓存穿透、缓存雪崩、缓存击穿
当访问的数据,缓存和数据库都不存在,每次请求都直达数据库,一般为恶意攻击某一时间大量的key过期,导致请求全部直达数据库缓存击穿和缓存雪崩类似,某一时刻,热点key失效,有大量的请求访问该热点数据。
2023-12-05 10:37:59
321
原创 Redis 和数据库的一致性
一、缓存是失效还是更新多个线程同时更新缓存,可能会造成数据不一致情况,如线程A先更新数据库,后切换线程B更新数据库,然后线程B更新缓存,最后切换线程A更新缓存,数据库存储B的数据,缓存为A的造成数据不一致有些只更新部分信息,可能需要遍历判断。操作繁琐开销大。如果更新很频繁,是否考虑这些数据不适合使用缓存二、缓存更新策略先删除缓存,后更新数据库时,如果还未更新数据库,此时有新的请求会读取数据库旧的数据,同时保存到缓存里,数据库更新后,缓存和数据库数据不一致,同时需下次操作时才能刷新缓存,不确定性
2023-12-05 10:36:23
470
原创 一致性Hash算法
一、一致性Hash算法的作用如redis数据分片,hash(key)%N,落到某个节点上,当增加或减少节点个数导致数据缓存的位置都是错误的,使得请求大量直到数据库,造成缓存雪崩。一致性Hash算法就是为了解决这个问题二、一致性Hash算法从0开始顺时针递增,2^32 -1为结尾形成一个hash环,机器通过hash然后对2^32 取模,落在环上,数据的hash也对2^32次取模落在hash环上,顺时针遇到的第一个机器,那么数据就存储在该机器上,这样增加或减少机器时,只会影响部分数据。三、一致性
2023-12-05 10:35:46
396
原创 Redis 持久化
一、RDBRDB时会fork一个子进程,fork时会阻塞,子进程和父进程共享内存空间。RDB期间操作数据,采用写时复制技术,主进程会复制出页进行操作RDB的优点RDB是二进制文件暂用的空间很小,RDB文件恢复比AOF快RDB可以用于数据备份以及数据恢复RDB有fork的子进程完成保存工作,主进程不需进行任何磁盘操作RDB的缺点RDB默认5分钟备份一次,宕机后数据恢复会损失5分钟的数据Redis数据很大时,fork会存在明显的阻塞RDB采用写时复制,时如果写入很频繁,那
2023-12-05 10:35:05
411
转载 Flink CDC同步MySQL到StarRocks
下载 flink-connector-starrocks,并且其版本需要对应 Flink 的版本。下载并解压 SMT,并将其放在 flink-1.14.5 目录下。下载并解压 Flink。本示例使用 Flink 1.14.5。下载 Flink CDC connector。下载、安装并启动 Flink 集群。
2023-12-05 10:23:59
619
原创 Prometheus Alertmanager集成钉钉告警
登录: http://localhost:9093/Prometheus配置alertmanager。
2023-12-05 10:18:39
584
原创 Ubuntu上安装Grafana
登录 http://localhost:3000,初始用户名和密码:admin。选择合适的version和Edition。
2023-12-05 10:15:57
634
原创 Prometheus下载安装
禁用开机启动:systemctl disable prometheus.service。重启服务:systemctl restart prometheus.service。热加载配置:systemctl reload prometheus.service。停止服务:systemctl stop prometheus.service。
2023-12-05 10:12:14
526
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人