03 2024 档案

摘要:【IT老齐075】高可用架构避免单点经典方案Keepalived+VIP 规避单点是高可用架构设置最基本的考量 概念 Keepalived Keepalived是Linux轻量级别的高可用解决方案 Keepalived主要是通过虚拟路由几余 (VRRP) 来实现高可用功能,Keepalived部署和 阅读全文
posted @ 2024-03-26 15:59 Faetbwac 阅读(49) 评论(0) 推荐(0) 编辑
摘要:【IT老齐074】海量数据大页码MySQL查询 场景 分页最后数据查询慢,添加索引,索引失效 SELECT * FROM blog_browse_history ORDER BY create_time LIMIT 500000, 10; 查询优化 利用索引覆盖特性查找第50000页的起始时间,基于 阅读全文
posted @ 2024-03-26 15:58 Faetbwac 阅读(15) 评论(0) 推荐(0) 编辑
摘要:【IT老齐072】全文检索执行原理 全文检索引擎就是对非结构化文本进行解析、搜索的技术 非结构化文本的处理关键在于分词与倒排索引 分词 分词是指将一段文本中有用的词汇提取出来 常见的中文分词算法 Ngram穷举 n=2 语法分析+字典: 按中文动名词分析推测外加分词字典维护 爬虫+大数据+AI分析: 阅读全文
posted @ 2024-03-26 15:57 Faetbwac 阅读(4) 评论(0) 推荐(0) 编辑
摘要:【IT老齐072】全文检索执行原理 https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf Paxos算法是Lamport宗师提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。 在Zookeeper中,通过Paxos算法选举 阅读全文
posted @ 2024-03-26 15:56 Faetbwac 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【IT老齐070】@Transactional注意 场景 原因 经过对比排查,在支付数据原始数据报文中,由于X行上报数据中的存在备选日期 (字符串类型)字段,上报后包含隐藏字符,导致生成任务时无法按预期解析,抛出ParseException导致批处理流程中断 @Transactional注解的特性是 阅读全文
posted @ 2024-03-26 15:56 Faetbwac 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【IT老齐069】日志收集架构 标准ELK 优点:部署最简单组件使用最少 缺点:由于 Logstash 同时兼顾了收集和解析的工作所以比较耗 CPU 和 内存资源,只适合服务器资源丰富的场景,否则容易容易造成性能下降甚至影响应用本身的正常工作 TCP推送 优点:对比架构一各个应用服务器不需要额外部署 阅读全文
posted @ 2024-03-26 15:55 Faetbwac 阅读(22) 评论(0) 推荐(0) 编辑
摘要:【IT老齐068】高并发电商缓存访问倾斜 热点数据特征 短时访问超高 数据总量相对较少 接口方案 热门数据分片 区分热点数据 美团:默认大促时参与活动的商品 京东:用户行为分析与大数据评估 缓存前置 + 闪电缓存 阅读全文
posted @ 2024-03-26 15:54 Faetbwac 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【IT老齐065】分布式流控神器Alibaba Sentinel 在Spring Cloud Alibaba生态中有一个重要的流控组件Sentinel,Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 http://sentinelguard.io/z 阅读全文
posted @ 2024-03-26 15:53 Faetbwac 阅读(27) 评论(0) 推荐(0) 编辑
摘要:【IT老齐064】微服务架构作用 单体架构 问题 微服务 所谓微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并以轻量级的机制(通常是HTTP RESTful AP)的方式进行通信。这些服务围绕着业务能力所建立的,并且可以由完全自动化的部署机构独立部署,这些 阅读全文
posted @ 2024-03-26 15:52 Faetbwac 阅读(9) 评论(0) 推荐(0) 编辑
摘要:【IT老齐063】秒杀场景下解决商品库存超卖问题 超卖问题 核心问题 秒杀商品库存总量固定 先到先得,瞬间并发极大,但写库量有限 解决方案 利用预减库存方式杜绝超卖 利用Nginx+Lua在网关层面将无效请求阻挡 利用MQ消息队列的限流特性保证MySQL不会被瞬间击垮 APP需要额外设计轮询机制查询 阅读全文
posted @ 2024-03-26 15:51 Faetbwac 阅读(45) 评论(0) 推荐(0) 编辑
摘要:【IT老齐062】缓存一致性 Cache Aside Pattern 禁止先删缓存,后更新数据库 推荐先更新数据库,在删除缓存 极端情况 延迟双删 阅读全文
posted @ 2024-03-26 15:50 Faetbwac 阅读(4) 评论(0) 推荐(0) 编辑
摘要:【IT老齐061】BASE最终一致性 CAP理论下,常用的AP方案的补全手段 Basically Available(基本可用) Soft state(软状态) Eventually consistent(最终一致性) 基本可用就是快速实现用户的基本价值与诉求,“创建订单”后立即返回就是基本可用的体 阅读全文
posted @ 2024-03-26 15:50 Faetbwac 阅读(6) 评论(0) 推荐(0) 编辑
摘要:【IT老齐058】Zookeeper解决分布式系统商品库存超卖问题 场景 解决方案 传统的synchronized是无效的,它只针对一个JVM进程内多个线程起到同步作用,对跨进程无效。 利用数据库select ... for update 语句对库存进行锁定,依赖数据库自身特性,遇到跨库(分库分表) 阅读全文
posted @ 2024-03-26 15:49 Faetbwac 阅读(25) 评论(0) 推荐(0) 编辑
摘要:【IT老齐057】Raft选举算法 用途 Raft 算法是分布式系统开发首选的共识算法 主要在分布式集群架构下进行领导者 (主节点)的确认。 比如现在流行的组件 Etcd、Consul、Nacos、RocketMQ、Redis Sentinel 底层都是采用Raft算法来确认集群中的主节点,再通过主 阅读全文
posted @ 2024-03-26 15:47 Faetbwac 阅读(180) 评论(0) 推荐(0) 编辑
摘要:【IT老齐056】日千万级订单系统的高可用、高性能架构 原始场景 避免丢单 关键逻辑不要使用读写分离的查询方式,避免从库同步延迟造成订单查询异常 关键逻辑也不要使用缓存来进行订单的查询 订单补偿不要粗暴地使用消息队列的方式,避免中间件引发的订单丢失 接收消息处理失败时一定要让消息重试,避免丢失 日万 阅读全文
posted @ 2024-03-26 15:32 Faetbwac 阅读(29) 评论(0) 推荐(0) 编辑
摘要:【IT老齐055】Mysql Ngram全文检索技术 场景 select * from article where title like Java% 可能用到索引,看索引选择性 select * from article where titledlike %Java 一定不会用到索引 select 阅读全文
posted @ 2024-03-26 15:30 Faetbwac 阅读(139) 评论(0) 推荐(0) 编辑
摘要:【IT老齐054】MongoDB介绍 场景 特点 多形性: 同一个集合中可以包含不同字段(类型)的文档对象 动态性:线上修改数据模式,修改是应用与数据库均无须下线 数据治理:支持使用JSON Schema来规范数据模式。在保证模式灵活动态的前提下,提供数据治理能力 速度优势 数据库引擎只需要在一个存 阅读全文
posted @ 2024-03-26 15:29 Faetbwac 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【IT老齐053】动静分离架构抗住超高并发访问 架构三大分离设计 读写分离 动静分离 前后台分离 概念 有效区分页面中的动静数据是优化的关键前提 静态数据是无个性化数据 静态文件: HTML/CSS/JS/图片 低频变动数据: 字典数据/地区数据 /组织架构历史数据 动态数据就是个性化/高频写数据 阅读全文
posted @ 2024-03-26 15:24 Faetbwac 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【IT老齐051】动态通知方案Push和Pull 场景 对比 Push模式 Pull模式 实时性 较好,通过网络管道准实时发送 较差,取决于定时轮询时间 服务器状态 有状态,需持久化粉丝动态队列 无状态,根据请求实时查询 风险项 大V动态的并发“写扩散”问题 大量动态队列持久化造成磁盘高 IO 大量 阅读全文
posted @ 2024-03-26 15:23 Faetbwac 阅读(10) 评论(0) 推荐(0) 编辑
摘要:【IT老齐050】MySQL服务器选择 CPU MySQL5.6以后版本对多核CPU进行优化 不支持多CPU对同一SQL并发处理 64位的CPU一定要工作在64位的系统下 对于并发比较高的场景CPU的数量比频率重要 对于CPU密集性场景和复杂SQL则频率越高越好 内存 理想的选择是服务器内存大于数据 阅读全文
posted @ 2024-03-26 15:22 Faetbwac 阅读(8) 评论(0) 推荐(0) 编辑
摘要:【IT老齐049】Cassandra高性能原因 列式数据库是以列相关存储架构进行数据存储的数据库 应用场景: 批量处理、超大规模即时查询 磁盘存储方式 高性能原因 数据库不读取无效数据 只查询指定列上的数据 只返回指定列上的数据 磁盘I/0效率高 数据压缩比大 数据相关性大 数据压缩比高 利用Cac 阅读全文
posted @ 2024-03-26 15:22 Faetbwac 阅读(13) 评论(0) 推荐(0) 编辑
摘要:【IT老齐048】Kafka高性能原因 磁盘顺序读写 定期批量删除指定数据 页缓存 Kafka避免使用JVM,直接使用操作系统的页缓存特性提高处理速度,进而避免了JVM GC带来的性能损耗。 Kafka采用字节紧密存储,避免产生对象,这样可以进一步提高空间利用率 零拷贝 批量操作 阅读全文
posted @ 2024-03-18 14:34 Faetbwac 阅读(11) 评论(0) 推荐(0) 编辑
摘要:【IT老齐047】避坑UUID主键 场景 财政部金财工程平台在代理行日终结算时,经常出现磁盘的IO异常,导致经常出现高延迟 对比发现在大量数据新增时磁盘IO居高不下,多次测试后发现是UUID主键在搞鬼 UUID 基于时间的UUID 能保证不同设备UUID是唯一的 在同一设备上生成UUID可能重复 D 阅读全文
posted @ 2024-03-18 14:33 Faetbwac 阅读(10) 评论(0) 推荐(0) 编辑
摘要:【IT老齐046】RabbitMQ队列解决消息积压问题 场景 每天上午10点,全国2万多名客户经理集中录入上一日JK单据到BorrowSale系统,峰值能达到500单/s。但信审系统任务重,最多只支持到60单/s,每日会导致大量消息积压 解决方案 工作队列 RabbitMQ改为工作队列模式,将消息送 阅读全文
posted @ 2024-03-18 14:32 Faetbwac 阅读(34) 评论(0) 推荐(0) 编辑
摘要:【IT老齐045】RabbitMQ六种队列模式 前情提要 Producer:生产者,消息的提供者 Consumer:消费者,消息的使用者 Broker:MQ服务器,管理队列、消息及相关信息 Message:消息,程序间的通信的数据 Queue:队列,消息存放的容器,消息先进先出 Exchange:交 阅读全文
posted @ 2024-03-18 14:30 Faetbwac 阅读(10) 评论(0) 推荐(0) 编辑
摘要:HashMap 类结构 继承AbstractMap<K,V> 实现Map<K,V> Map基本方法 实现Cloneable 浅克隆 实现Serializable 序列化 成员变量 // 默认初始化容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 阅读全文
posted @ 2024-03-14 20:11 Faetbwac 阅读(9) 评论(0) 推荐(0) 编辑
摘要:ArrayListy 类结构 继承AbstractList 实现List list基本方法 实现RandomAccess 支持随机访问(下标) for效率高于迭代器(对比LinkedList) 实现Cloneable 浅克隆 实现Serializable 序列化 成员变量 默认容量 private 阅读全文
posted @ 2024-03-14 20:10 Faetbwac 阅读(6) 评论(0) 推荐(0) 编辑
摘要:AQS AQS可以重写的方法 // 排他锁 protected boolean tryAcquire(int arg) { return super.tryAcquire(arg); } protected boolean tryRelease(int arg) { return super.try 阅读全文
posted @ 2024-03-14 20:09 Faetbwac 阅读(6) 评论(0) 推荐(0) 编辑
摘要:河北王校长JVM Class文件 文件结构 魔数(Magic Number):class文件的前4个字节是固定的魔数,用于标识文件类型为class文件。魔数的值为0xCAFEBABE。 版本信息:紧随魔数后的4个字节表示class文件的次版本号和主版本号。Java的版本号从45开始,每个新版本增加1 阅读全文
posted @ 2024-03-14 20:07 Faetbwac 阅读(29) 评论(0) 推荐(0) 编辑
摘要:volatile 作用 保障可见性(线程嗅探、MESI) 将当前处理器缓存行的数据写回到系统内存 使在其他CPU里缓存了该内存地址的数据无效 防止指令重排 在每个volatile写操作的前面插入一个StoreStore屏障。禁止volatile写之前写 在每个volatile写操作的后面插入一个St 阅读全文
posted @ 2024-03-14 20:06 Faetbwac 阅读(13) 评论(0) 推荐(0) 编辑
摘要:【IT老齐043】线上JVM OOM排查 基本信息 # 锁定进程pid jps # 查看空间占用 1秒1次 10次 jstat -gcutil pid 1000 10 Arthas curl -O https://arthas.aliyun.com/math-game.jar java -jar m 阅读全文
posted @ 2024-03-14 20:05 Faetbwac 阅读(6) 评论(0) 推荐(0) 编辑
摘要:【IT老齐042】生产环境JVM参数与垃圾回收GC 最大堆和最小堆大小 GC收集器 新生代(年轻代)大小 JVM选项规则 +代表开启/-代表关闭 java -version 标准选项,任何版本JVM/任何平台都可以使用 java -Xms10m 非标准选项,部分版本识别 java -XX:+Prin 阅读全文
posted @ 2024-03-14 20:04 Faetbwac 阅读(15) 评论(0) 推荐(0) 编辑
摘要:【IT老齐040】MySQL自增主键 业务主键更浪费空间 业务主键无顺序,可能会造成写入数据时需要更长组织索引 业务主键如果是字符串,在分库分表时,无法直接取模运算 阅读全文
posted @ 2024-03-14 20:02 Faetbwac 阅读(5) 评论(0) 推荐(0) 编辑
摘要:【IT老齐039】应用发布与持续集成(CI) 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(4) 评论(0) 推荐(0) 编辑
摘要:【IT老齐038】MQ中间件实现可靠性投递 可靠性保证 发送阶段,遇到高延迟,Producer会多次重发消息,直到Broker ack确认,过程中Broker会自动去重,超时Producer产生异常,应用进行捕获提示。 存储阶段,Broker先刷盘再ack确认,即便ack失败消息不会丢失,多次重试直 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(4) 评论(0) 推荐(0) 编辑
摘要:【IT老齐037】禁用JDK序列化 兼容性差,不支持异构系统 安全性,未经过加密,易被篡改 性能差,占用空间大 其他方案 第三方的序列化方法能解决复杂对象的循环引用问题:要现在本地解决循环引用再考虑序列化问题。Gson碰到循环引用直接报错,Jackson可以设置迭代层级,但会导致对象关系不完整 Sp 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【IT老齐036】MySQLS索引选择性陷阱 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决 说明:索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引 索引选择性陷阱 命中的索引值超过总量25%,就可能产生索引选择性陷阱,导致全表扫描 以Explain执 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【IT老齐035】蓝绿、红黑、灰度发布 尽可能减少服务停机时间 控制新版本带来的质量风险 全量发布 蓝绿部署 红黑部署 与蓝绿部署相比,红黑部署可以充分利用了云计算的弹性伸缩优势,从而获得了两个收益:简化了流程;避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题 增量发布 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(25) 评论(0) 推荐(0) 编辑
摘要:【IT老齐033】Docker一键发布Nginx-Tomcat-MySQL应用集群 创建虚拟网段 docker network create -d bridge my-bridge MySQL容器 docker run -p 3306:3306 --network my-bridge --name 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(9) 评论(0) 推荐(0) 编辑
摘要:【IT老齐032】Docker容器化 镜像: 镜像是文件,是只读的,提供了运行程序完整的数据是应用程序的集装箱 容器: 镜像的运行环境,迷你的linux操作系统,由Docker负责创建,容器之间彼此隔离 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(2) 评论(0) 推荐(0) 编辑
摘要:【IT老齐031】微服务架构设计 分布式架构的发展过程 什么是微服务架构 所谓微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并以轻量级的机制(通常是HTTP RESTful API)的方式进行通信,这些服务围绕着业务能力所建立的,并且可以由完全自动化的部署 阅读全文
posted @ 2024-03-14 20:01 Faetbwac 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【IT老齐030】MySQL MVCC机制 在MySQLInnoDB存储引擎下,RC、RR基于MVCC(多版本并发控制) 进行并发事务控制 MVCC是基于“数据版本”对并发事务进行访问 场景 UNDO_LOG版本链 UNDO LOG版本链不是立即删除,MySQL确保版本链数据不再被“引用”后再进行删 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(5) 评论(0) 推荐(0) 编辑
摘要:【IT老齐029】MySQL脏读、幻读、不可重复读 讲解脏读、不可重复读、幻读的区别与出现场景 脏读指读取到其他事务正在处理的未提交数据 不可重复读指并发更新时,另一个事务前后查询相同数据时的数据不符合预期 幻读指并发新增、删除这种会产生数量变化的操作时,另一个事务前后查询相同数据时的不符合预期 通 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(11) 评论(0) 推荐(0) 编辑
摘要:【IT老齐028】Redis Cluster集群模式 Cluster模式是Redis3.0开始推出 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接 官方要求:至少6个节点才可以保证高可用,即3主3从;扩展性强更好做到高可用 各个节点会互相通信,采用gossip协议交换节 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(14) 评论(0) 推荐(0) 编辑
摘要:【IT老齐027】经典Web高可用架构 dns解析域名轮询到nginx服务器来保证资源高利用率 vip+keepalived实现ip漂移来保证高可用 nginx负载均衡到tomcat实现高可用 DNS轮询的缺点 只负责IP轮询获取,不保证节点可用 DNSIP列表变更有延时 外网IP占用严重 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【IT老齐026】分布式架构公共表 被其他业务模块共享的基础数据表,被称为公共表 比如:系统用户表、行政区划、组织机构、系统配置 问题 假如用户表有4000万数据,在查询时不小心没有索引,导致磁盘io直接拉满,其他表访问就会出现高延迟 方案 实时数据,将公共表下沉为基础服务 业务模块上浮为业务服务 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(6) 评论(0) 推荐(0) 编辑
摘要:【IT老齐025】JWT续签 情况 不允许改变Token令牌实现续签 允许改变JWT实现续签 refresh_token和access_token的设计最根本的原因是因为 token验证服务器 和 token分发服务器 是分离的,换句话说 refresh_token 从来没有发送到真正执行验证的业务 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(91) 评论(0) 推荐(0) 编辑
摘要:【IT老齐024】前后端分离JWT Json Web Token (JWT) JWT是一个经过加密的,包含用户信息的且具有时效性的固定格式字符串 组成 JWT的创建与校验 具体方案 网关统一校验 JWT校验无感知,验签过程无侵入 执行效率低,适用于低并发企业级应用 应用认证 控制更加灵活,有一定代码 阅读全文
posted @ 2024-03-14 20:00 Faetbwac 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【IT老齐023】禁止存储过程 历史原因 银行业务以数据为核心 Oracle、DB2—统江湖,存储过程与语言无关 预算充足采购小型机满足性能要求 改造动力 技术方案被Oracle、DB2绑定 阅读全文
posted @ 2024-03-14 19:59 Faetbwac 阅读(4) 评论(0) 推荐(0) 编辑
摘要:【IT老齐022】禁止三表join 产品要求 mycat 性能 改造成本 依赖数据源特性获取数据,数据迁移改造困难 解决方案 方案 优点 缺点 in查询 简单 只支持inner join 数据量小 反范式 简单 字段冗余 数据集市 简单 空间占用高,弱一致性 阅读全文
posted @ 2024-03-14 19:59 Faetbwac 阅读(4) 评论(0) 推荐(0) 编辑
摘要:【IT老齐021】乐观锁 并发问题 悲观锁 乐观锁 更新失败处理 前端提示更新失败 spring-retry重试 阅读全文
posted @ 2024-03-14 19:59 Faetbwac 阅读(2) 评论(0) 推荐(0) 编辑
摘要:【IT老齐044】慢SQL优化 表结构 CREATE TABLE `a`( `id` int(11) NOT NULL AUTO_INCREMENT, `seller_id` bigint(20) DEFAULT NULL, `seller_name` varchar(100) CHARACTER 阅读全文
posted @ 2024-03-14 19:59 Faetbwac 阅读(21) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示