- 博客(11)
- 收藏
- 关注
原创 OLC(OverLoad Controller)流控管理
根据配置规则或算法进行动态调整阈值大小(比如WAL算法通过资源利用率动态控制阈值,资源利用率越高流控阈值越小)单机流控无法精准实现流量控制,需要一个单独的Server来做入口统计总的流量,再结合单机限流兜底。通过令牌桶限流策略,达到指定阈值(规则配置),对流量进行控制。95%:20% 15% 10% 5%(除核心接口均进行限流)基于Redis分布式缓存,保存流控规则配置信息。基于Guava本地缓存,保存流控规则配置信息。:流量整形,一般基于漏桶或令牌桶实现。4、QPS 和 Quota。
2024-12-25 11:22:06
354
原创 MySQL系列【一】:索引底层数据结构和优化
索引的本质就是一种排好序的数据结构文章目录索引的本质就是一种`排好序的数据结构`一、索引类型1、`hash索引`2、`B+树`2.1、B+树存储2.2、`聚簇索引和二级索引`2.3、`索引建立原则`2.4、`什么时候索引失效`3、`索引结构比较`二、执行计划1、`id`2、`slect_type`3、`table`4、 `type`5、`key_len`6、`ref`7、`rows`8、`Extra`三、Mysql查询优化1、优化方向2.1、`硬件`2.2、`架构`2.3、`表结构`和`存储引擎优化 `2
2022-03-22 16:55:52
2057
原创 线程安全 -- AQS同步锁(ReentrantLock实现)
前言AQS是JUC包中可扩展的一个同步器工具,可以通过继承AQS去实现公平锁、非公平锁,等待队列以及同步队列。由于等待队列是在锁下进行入队,所以无需考虑线程安全单个线程或者说少量线程交替并发执行下,lock锁很可能与同步队列并无关系,除非是IO操作,正常程序执行的时间都非常短。只有并发量非常大或者共享资源执行时间比较长,才会有线程进入同步队列,进行OC操作系统层面的阻塞和唤醒操作类图源码分析首先我们需要理解,锁的机制,AQS是基于自旋+CAS操作来保证数据的一致性,里面有一个Node内部类用来存
2021-08-15 20:35:51
310
原创 跨域访问解决方案
前言什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域为什么会有跨域?在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想获取数据一般都是post/get请求,所以…跨域问题出现跨域的作用在于:保证不同服务之间的数据安全,比如黑客在A服务给B服务发送了一个请求,恰好B服务又是登陆状态,那样就会携带B的session等信息返回跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)
2021-08-04 20:15:24
559
原创 Redis高可用架构
几种常见高可用架构1、一主多从:读写分离2、主备:正常情况下只有主机在工作,当主机故障通过keepalived切换到备机热备:同城多活冷备:异地容灾3、多主4、无中心架构一、主从同步实现读写分离,主节点和从节点进行全量+增量(offset)同步,通过rdb方式(bgsave)同步,即便redis服务本地并未开启rdb优点:1、读写分离2、从服务器保证读请求的高可用,某台从服务器挂了,其他从服务器还能接收请求3、通过扩展从服务器可以提高读请求的并发量缺点:1、无法保证写
2021-08-02 09:16:39
2258
原创 多线程基础简单复习总结(一)
一、进程和线程的区别线程:一段程序里,每个不同的执行路径就是一个线程二、关于同步和异步对于多线程并发场景,分为同步和异步,同步的优点是解决了安全问题,但是运行效率会比较低(通过sychronized关键字或者reentrantLock)异步执行反之,执行效率高,但是可能会引发线程安全问题三、线程安全的解决方法1、线程封闭a.局部变量 b.ThreadLocal2、同步容器a.ArrayList -> Vector、Stack b.HashTable c.??3、基于CAS的原子
2020-07-05 00:21:01
166
原创 分布式id之雪花算法 -- SnowFlake
简介Snowflake 是 Twitter 开源的分布式 ID 生成算法,目的是在分布式系统中生成全局唯一且趋势递增的 long(64bit) 的id数值。其特性是各节点无需协调、按时间大致有序、且整个集群各节点单不重复。该数值的默认组成如下(符号位之外的三部分允许个性化调整):1bit: 符号位,始终是 0(为了保证主键是正数)。41bit: 毫秒数(可用 69 年);...
2020-05-06 22:41:05
3067
1
原创 日志框架的演变
日志门面概述当系统变得更加复杂的时候,日志就容易发生混乱。对着系统开发的进行,可能会更新不同的日志框架,造成当前系统中存在不同的日志依赖,让我们难以统一的管理和控制。就算我们强制要求所有的模块使用相同的日志框架,系统中也难以避免地使用其他类似spring、mybatis等其他第三方框架,它们依赖于我们规定不同的日志框架,而且他们自身的日志系统就有着不一致性,依然会出来日志体系的混乱。所以我们要...
2020-04-26 20:19:30
218
原创 log4j2日志性能分析
Log4j2两大优点:异步日志和无垃圾记录一、异步日志Log4j2如何实现异步日志?全局异步混合异步二、无垃圾记录一、异步日志正常日志流程(同步日志):logger.info(“”)->全局filter进行level过滤->Logger自身level过滤->生成日志输出内容->生成LogEvent(日志事件对象,来配置一系列信息)->Logger配置的f...
2020-04-25 22:27:39
998
原创 Mybatis源码分析
Mybatis源码分析## 标题首先我们要从加载配置文件、解析配置文件、创建四大核心对象(Exxcutor、ParameterHandler、ResultSetHandler、StatementHandler)的详细过程,以及在这个过程中如何设置参数?如何执行查询?如何封装结果集?同时关注mybatis中所常用的几个设计模式:工厂模式、建造者模式等。第一步:加载配置文件//1、加载配置文件...
2020-04-25 01:23:06
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人