前言
内容来自B站IT老齐架构300讲内容。
101结合操作系统如何理解java代码怎么运行
102 某读书会Redis 大Key引发的线上事故分析总结
分类:【Redis】
定义:大key是,超过百kb的键值对。
产生问题: 单线程指令队列积压严重,降低吞吐量。
优化思路:
- 技术角度:将大key拆分为小key。
- 业务角度:业务调优,调整展示数量。
103 10分钟大白话Oauth2.0执行流程
分类:【Oauth2.0】
104 懒人神器,一行命令为你程序引入监控系统
分类:【监控】【SkyWalking】
https://skywalking.apache.org/downloads/
https://www.apache.org/dyn/closer.cgi/skywalking/9.3.0/apache-skywalking-apm-9.3.0.tar.gz
105 爆肝14小时只为2个硬币,一份复制粘贴就可以的,MySQL MGR高可用架构踩坑实录
分类:【MySQL】【MGR】
文档:后续粘贴。
106 领导让你出报表,MySQL不好弄,ES聚合功能了解下!
分类:【ES】【】
Bucket和Metric
107 不用MQ如何保障消息传递的可靠性
重试,补偿
spring-retry
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@EnableRetry
@Service
public class RetryServiceImpl implements RetryService {
private static final Logger logger = LoggerFactory.getLogger(RetryServiceImpl.class);
@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(value = 1000))
@Override
public void retry() {
logger.info("retry......");
int a = 1 / 0;
}
@Recover
public void saveDb(Throwable t) {
logger.info("存入DB:{}", t.getMessage());
}
}
INFO 20572 --- [nio-9000-exec-1] c.e.s.c.r.service.impl.RetryServiceImpl : retry......
INFO 20572 --- [nio-9000-exec-1] c.e.s.c.r.service.impl.RetryServiceImpl : retry......
INFO 20572 --- [nio-9000-exec-1] c.e.s.c.r.service.impl.RetryServiceImpl : retry......
INFO 20572 --- [nio-9000-exec-1] c.e.s.c.r.service.impl.RetryServiceImpl : 存入DB:/ by zero
定时任务每N分钟跑一边。
108 智商没问题就能看懂!利用一致性Hash解决MySQL分库扩容难题
分类:【MySQL】【一致性Hash】
传统hash:id % 3
传统hash存在问题:当数据扩容时,会产生问题。
一致性hash:顺时针归属某台服务器。
存在问题:数据倾斜。
引入虚拟节点解决数据偏斜问题。
109 服务化架构、SOA、微服务到底有什么关系?
分类:【架构】
110 看不懂你捶我,ProxySQL实现MySQL读写分离的原理
分类:【MySQL】【ProxySQL】
是什么 ?
原理待补充
111 什么是高可用架构的脑裂问题,Redis如何解决的?
分类:【Redis】【脑裂】
是什么:
现象:数据丢失。
主服务器和sentinel网络出现了问题,会重新选举出master节点,
最大努力解决方案:
- min-slaves-to-write 配置主库进行数据 同步时最小从库数量
- min-slaves-max-log设置主从库之前数据复制的最大延迟
112 高频面试题,MySQL读写分离后,先写后查如何保障一致性?
分类:【MySQL】【读写分离一致性】
问题描述: 在读写分离模式下,同方法先写后读或并发写读如何保障一致性。
解决方案:
- 【先写后查】避免代码层面的先写后查,如果是并发写读则无效。(只能解决同方法先写后读)
- 【临时方案】写后休眠,预留主从复制时间,缺点时间不好评估。(不推荐使用)
- 【走主库】如果是服务直连主从,代码层面走主库,如果是代理中间件则需要支持走主库。
- 【MGR全同步复制】同步后查询。
简单方案:根据业务对一致性的要求选择是否有必要走主库。
114 时代在进步,使用Redis6客户端缓存解决多级缓存一致性难题!
分类:【Redis】【缓存】
问题:服务创建本地缓存后,分布式缓存和本地缓存的同步
本地缓存实现方案
Redis Pub Sub
Redis6的实现,待补充。
115 我为什么不建议利用Docker部署MySQL数据库
分类:【MySQL】【Docker】
数据层面:从应用场景上,数据存储节点是少量而稳定的,大多数场景并没有灵活扩容的需求。
技术层面:MySQL是有状态的,无法轻易水平扩容。docker挂载容器独占,扩容容器无法挂载。
116 如何优雅的保存mysql数据变更历史?
分类:【MySQL】
问题:例如订单的四种状态全部存储。
工具:阿里的canal
存储数据库MongoDB
将订单id%n将json写入分片
github canal
117 遇到瞬时流量洪峰如何保障系统不会被瞬时击垮?
分类:【Sentinel】
使用前提:业务允许丢请求。
场景:整点秒杀、春运抢票等等场景。
工具:Sentinel
使用:流控规则采取预热模式,warm up,逐渐提升阈值来给系统留出缓冲时间。
Sentinel使用参考:Spring Cloud + Sentinel实现服务流量控制、熔断降级
118 DDD
119 工作实例,几万行Excel批量导入如何优化?
分类:【Excel导入】【并发优化】
120 MySQL什么时候需要分库分表,又有哪些新问题?
单表数据量超过1000w,或者单表数据文件 .ibd文件超过20GB。
分表方法:
范围法:假设有300个数据,1-100 第一个表,101-200第二个表,201-300第三个表。
哈希法:id取模3,进行分表。
单库多表:有效缩小磁盘的扫描范围。
多库多表:提高并行能力。
挑战:
分布式事务问题,跨库join关联查询,跨节点分页查询问题,全局主键id问题,扩容问题。
121 用一个金融案例解释为什么需要分布式锁?
参考 深入浅出分布式锁
122 不只setnx,两张图说清Redisson的Redis分布式锁实现
123 爆赞!商品秒杀巧用Redis与Lua预防库存超卖~
超卖现象:N个商品,不能出现N+M的现象。
125 眼不瞎就能发现慢SQL瓶颈,Visual Explain可视化执行计划快速上手
126 不用端口映射,更易维护,Macvlan让Docker容器可以IP直连
127 用好了性能直接起飞,基因法与倒排索引在MySQL分库分表的应用
128 15年YRD项目上线即崩溃,浅析DDOS攻击的攻与防
129 Redis在项目中的设计规范、内存保障与安全选项
130 好货分享,猿辅导直播平台业务服务器架构有哪些战术设计?
132 写了份傻瓜文档,20分钟上手阿里Canal数据同步中间件
分类:【Canal】
133 牛逼!200毫秒干到10毫秒,利用MySQL JSON特性优化千万级文库表
134 请简述RocketMQ消息存储与检索原理
136 写了份傻瓜文档,20分钟上手高可用神器KeepAlived
137 我为什么今年会押宝服务网格Service Mesh与Google Istio
138 为什么我也赞同低代码LowCode是行业毒瘤!
139 分布式架构设计,RPC与REST两种通信方式该怎么选?
选择rpc的几个考量,性能、对内。
选择rest几个考量,简单,对外。