《架构300讲》学习笔记(101-150)

前言

内容来自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】

proxySQL官网

是什么 ?

在这里插入图片描述
原理待补充

111 什么是高可用架构的脑裂问题,Redis如何解决的?

分类:【Redis】【脑裂】

是什么:
现象:数据丢失。

主服务器和sentinel网络出现了问题,会重新选举出master节点,

最大努力解决方案:

  • min-slaves-to-write 配置主库进行数据 同步时最小从库数量
  • min-slaves-max-log设置主从库之前数据复制的最大延迟

112 高频面试题,MySQL读写分离后,先写后查如何保障一致性?

分类:【MySQL】【读写分离一致性】

问题描述: 在读写分离模式下,同方法先写后读或并发写读如何保障一致性。
解决方案:

  1. 【先写后查】避免代码层面的先写后查,如果是并发写读则无效。(只能解决同方法先写后读)
  2. 【临时方案】写后休眠,预留主从复制时间,缺点时间不好评估。(不推荐使用)
  3. 【走主库】如果是服务直连主从,代码层面走主库,如果是代理中间件则需要支持走主库。
  4. 【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几个考量,简单,对外。

140 非常实用!Spring AOP与自定义注解实现共性需求

141 试试水,案例分享下我是如何分析实体与设计表关系的

142 简单粗暴,20分钟ShardingJDBC 5实现MySQL分库分表

143 利用Elasticsearch的Completion Suggester实现搜索智能提示

144 18倍效率提升,1700万MySQL单表全表扫描优化与分析

145 坑替你踩好了,CV就行,分享一份Docker与Docker Compose安装文档

146 白话讲解Redis分布式锁Redlock

147 Spring Boot 3要来了,新的技术栈给我们哪些新启示?

148 腾讯万亿级 Elasticsearch 架构实践

150 不再纠结,白话讲解Docker五种网络模式与应用场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值