- 2024-03-26【IT老齐070】@Transactional注意
【IT老齐070】@Transactional注意场景原因经过对比排查,在支付数据原始数据报文中,由于X行上报数据中的存在备选日期(字符串类型)字段,上报后包含隐藏字符,导致生成任务时无法按预期解析,抛出ParseException导致批处理流程中断@Transactional注解的特性是方法执行成功自动
- 2024-03-26【IT老齐071】Paxos选举算法
【IT老齐072】全文检索执行原理https://lamport.azurewebsites.net/pubs/lamport-paxos.pdfPaxos算法是Lamport宗师提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。在Zookeeper中,通过Paxos算法选举出主节点,同时保证集群数据的强一致性(CP)
- 2024-03-26【IT老齐074】海量数据大页码MySQL查询
【IT老齐074】海量数据大页码MySQL查询场景分页最后数据查询慢,添加索引,索引失效SELECT *FROM blog_browse_historyORDERBY create_time LIMIT500000, 10;查询优化利用索引覆盖特性查找第50000页的起始时间,基于索引快速定位,向后取10条数据SELECT *FROM
- 2024-03-26【IT老齐072】全文检索执行原理
【IT老齐072】全文检索执行原理全文检索引擎就是对非结构化文本进行解析、搜索的技术非结构化文本的处理关键在于分词与倒排索引分词分词是指将一段文本中有用的词汇提取出来常见的中文分词算法Ngram穷举n=2语法分析+字典:按中文动名词分析推测外加分词字典维护爬
- 2024-03-26【IT老齐057】Raft选举算法
【IT老齐057】Raft选举算法用途Raft算法是分布式系统开发首选的共识算法主要在分布式集群架构下进行领导者(主节点)的确认。比如现在流行的组件Etcd、Consul、Nacos、RocketMQ、RedisSentinel底层都是采用Raft算法来确认集群中的主节点,再通过主节点向其他节点下发指令
- 2024-03-26【IT老齐058】Zookeeper解决分布式系统商品库存超卖问题
【IT老齐058】Zookeeper解决分布式系统商品库存超卖问题场景解决方案传统的synchronized是无效的,它只针对一个JVM进程内多个线程起到同步作用,对跨进程无效。利用数据库select...forupdate语句对库存进行锁定,依赖数据库自身特性,遇到跨库(分库分表)处理起来比较麻烦。利用
- 2024-03-26【IT老齐061】BASE最终一致性
【IT老齐061】BASE最终一致性CAP理论下,常用的AP方案的补全手段BasicallyAvailable(基本可用)Softstate(软状态)Eventuallyconsistent(最终一致性)基本可用就是快速实现用户的基本价值与诉求,“创建订单”后立即返回就是基本可用的体现软状态代表业务操作,没有最终完成前的中
- 2024-03-26【IT老齐062】缓存一致性
【IT老齐062】缓存一致性CacheAsidePattern禁止先删缓存,后更新数据库推荐先更新数据库,在删除缓存极端情况延迟双删
- 2024-03-26【IT老齐063】秒杀场景下解决商品库存超卖问题
【IT老齐063】秒杀场景下解决商品库存超卖问题超卖问题核心问题秒杀商品库存总量固定先到先得,瞬间并发极大,但写库量有限解决方案利用预减库存方式杜绝超卖利用Nginx+Lua在网关层面将无效请求阻挡利用MQ消息队列的限流特性保证MySQL不会被瞬间击垮APP需要额外设计
- 2024-03-26【IT老齐053】动静分离架构抗住超高并发访问
【IT老齐053】动静分离架构抗住超高并发访问架构三大分离设计读写分离动静分离前后台分离概念有效区分页面中的动静数据是优化的关键前提静态数据是无个性化数据静态文件:HTML/CSS/JS/图片低频变动数据:字典数据/地区数据/组织架构历史数据动态数据就是个
- 2024-03-26【IT老齐054】MongoDB介绍
【IT老齐054】MongoDB介绍场景特点多形性:同一个集合中可以包含不同字段(类型)的文档对象动态性:线上修改数据模式,修改是应用与数据库均无须下线数据治理:支持使用JSONSchema来规范数据模式。在保证模式灵活动态的前提下,提供数据治理能力速度优势数据库引擎只需要在
- 2024-03-26【IT老齐055】Mysql Ngram全文检索技术
【IT老齐055】MysqlNgram全文检索技术场景select*fromarticlewheretitlelikeJava%可能用到索引,看索引选择性select*fromarticlewheretitledlike%Java一定不会用到索引select*fromarticlewheretitlelike%Java%一定不会用到索引解决
- 2024-03-26【IT老齐056】日千万级订单系统的高可用、高性能架构
【IT老齐056】日千万级订单系统的高可用、高性能架构原始场景避免丢单关键逻辑不要使用读写分离的查询方式,避免从库同步延迟造成订单查询异常关键逻辑也不要使用缓存来进行订单的查询订单补偿不要粗暴地使用消息队列的方式,避免中间件引发的订单丢失接收消息处理
- 2024-03-18【IT老齐045】RabbitMQ六种队列模式
【IT老齐045】RabbitMQ六种队列模式前情提要Producer:生产者,消息的提供者Consumer:消费者,消息的使用者Broker:MQ服务器,管理队列、消息及相关信息Message:消息,程序间的通信的数据Queue:队列,消息存放的容器,消息先进先出Exchange:交换机,用于分发消息工作模式简单模式工作队列
- 2024-03-18【IT老齐047】避坑UUID主键
【IT老齐047】避坑UUID主键场景财政部金财工程平台在代理行日终结算时,经常出现磁盘的IO异常,导致经常出现高延迟对比发现在大量数据新增时磁盘IO居高不下,多次测试后发现是UUID主键在搞鬼UUID基于时间的UUID能保证不同设备UUID是唯一的在同一设备上生成UUID可能重复DC
- 2024-03-18【IT老齐046】RabbitMQ队列解决消息积压问题
【IT老齐046】RabbitMQ队列解决消息积压问题场景每天上午10点,全国2万多名客户经理集中录入上一日JK单据到BorrowSale系统,峰值能达到500单/s。但信审系统任务重,最多只支持到60单/s,每日会导致大量消息积压解决方案工作队列RabbitMQ改为工作队列模式,将消息送给9个信审系统实
- 2024-03-18【IT老齐048】Kafka高性能原因
【IT老齐048】Kafka高性能磁盘顺序读写定期批量删除指定数据页缓存Kafka避免使用JVM,直接使用操作系统的页缓存特性提高处理速度,进而避免了JVMGC带来的性能损耗。Kafka采用字节紧密存储,避免产生对象,这样可以进一步提高空间利用率零拷贝批量操作
- 2023-05-05【IT老齐020】接口幂等性
【IT老齐020】接口幂等性传统方案业务代码增加前置判断if(数据未更新){ 更新数据}缺点判断因素过多技术问题干扰业务代码通用方案幂等表架构方案nginx+lua+redis请求经过nginx转发到redis,redis查找幂等表是否存在请求id(uuid或请求hash)对应的key幂等表不存
- 2023-04-25【IT老齐014】阿里Canal实现MySQL异构数据同步
【IT老齐014】阿里Canal实现MySQL异构数据同步场景商户在后台系统添加数据,消费者需要在前台获取数据。这时候需要将后台的数据同步到es中。mysql的数据跟es存储的数据不一样,称为异构数据。原始做法:团队A在java代码中新增mysql数据时,调用团队B的接口新增es商品数据。缺点:协
- 2023-04-25【IT老齐012】外键约束
【IT老齐012】外键约束优点保证数据的完整性和一致性级联操作方便数据一致性交给数据库,代码量小缺点性能问题额外的数据一致性校验查询并发问题外键约束会启用行级锁主表写入时会进入阻塞级联删除问题多层级联删除会让数据变得不可控数据耦合问题数据库
- 2023-04-24【IT老齐010】CAP定理
【IT老齐010】CAP定理分布式架构的基本理论。指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)。C:更新操作成功后,所有节点在同一时间的数据完全一致。(复习:事务的一致性:事务前后的数据完整性保持一致)A:用户访问数据时,系统能
- 2023-04-24【IT老齐009】IP直连
【IT老齐009】IP直连问题IP直连存在强耦合问题,因为业务更新可能发生代码修改,编译,部署,走流程等。线上建议用域名代替ip地址。解决方案内部DNS建立一个域名解析服务器,直接访问数据库ip对应的域名,域名解析服务器根据配置解析该域名对应的IP返回。优点IP地址迁移变得灵活,
- 2023-04-23【IT老齐003】数据垂直分表
【IT老齐003】数据垂直分表水平分表范围法和hash法针对数据量大的存储问题垂直分表将一张大表按列切分多张小表分别存储,通过主外键关联查询数据基本情况基本数据单位为行,管理数据单位为页(默认大小16k),保存页的单位为区(默认大小1m,最大64个页)。根本原因innodb1.0
- 2023-04-22【IT老齐001】单体架构升级问题
【IT老齐001】单体架构升级问题不谈场景的架构设计都是耍流氓架构没有对不对,只有合不合适架构是宏观设计的标准框架是具体实现的规则架构是取舍的艺术场景举例系统面临大量文件读写影响服务器磁盘IO导致数据库查询高延迟初级解决方案Redis通过在内存中的高吞吐完
- 2023-04-22【IT老齐002】MySQL集群模式与应用场景
【IT老齐002】MySQL集群模式与应用场景单库模式优点简单粗暴适合数据量干万以下小型应用企业网站,创业公司首选缺点不具备可用性与并发性读写分离集群模式读写分离中间件insert、update、delete负载均衡到从库select路由到主库MySQL主从复制binlog