首页
学习
活动
专区
工具
TVP
发布

漫漫架构路

专栏作者
115
文章
89532
阅读量
31
订阅数
5. 缓存模块
对于缓存功能,相信大家都十分熟悉了。一旦我们发现系统的性能存在瓶颈需要优化时,可能第一时间想到的方式就是加缓存。缓存本质上是一种空间换时间的技术,它将计算结果保存在距离用户更近、或访问效率更高的存储介质中,进而降低请求处理耗时,提升系统性能。
张申傲
2023-10-12
1330
4. 数据源模块
在日常开发中,我们经常会接触到池化技术,这是一种非常经典的设计思想。简单来说,池化技术指的是:将一些创建过程较为繁琐的重量级对象,统一维护在一个对象池中进行管理,每次使用对象时都从池中获取,使用完成后再归还给对象池进行回收。
张申傲
2023-10-12
1510
3. 日志模块(下)
在日志模块的上篇中,我们详细拆解了 MyBatis 是如何整合第三方日志框架,实现了完善的日志功能的。那么在本节中,我们再来具体分析下:为了实现“将日志功能优雅地嵌入到核心流程中,实现无侵入式地日志打印”这一目标,MyBatis 内部做了怎样的设计。
张申傲
2023-10-12
1440
2. 日志模块(上)
无论对于业务系统还是中间件来说,日志都是必不可少的基础功能。完善、清晰地日志可以帮助我们观测系统运行的状态,并且快速定位问题。现在让我们站在 MyBatis 框架开发者的角度,来简单做一下日志功能的需求分析:
张申傲
2023-10-12
1950
0. 开篇词 —— 风物长宜放眼量
我是一名工作了6年的 Java 工程师,日常主要工作就是业务功能开发,但是业余时间喜欢研究一些开源框架和流行的技术。我本人是经典 ORM 框架 MyBatis 的 Contributor,同时也是微服务框架 Nacos 的核心 Contributor 和 gorm 的Contributor。
张申傲
2023-10-12
1150
探寻容器的本质
要想理解容器的本质,我们先来聊聊是容器技术。广义上来说:容器技术 = 动态的容器 + 静态的镜像 + 远端的仓库。容器、镜像和仓库构成了容器技术的三要素,其中最核心的概念就是容器。简单来说,镜像就是把应用程序运行所依赖的环境、配置等打包成的一个文件;而仓库则是保存和管理这些镜像的地方。这两个概念我们后面的章节会详细展开,本节就先来说一下容器。
张申傲
2022-09-28
3310
开篇——初识云原生
作为云原生专栏的开篇,本节不会介绍具体的技术,而是先浅谈下我自己对于云原生的一些体感。
张申傲
2022-09-28
2950
Web 应用防火墙
Web 应用防火墙(Web Application Firewall, WAF)通过对 HTTP(S) 请求进行检测,识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击,保护 Web 服务安全稳定。
张申傲
2022-08-30
3.1K0
Redisson 分布式锁执行流程
https://github.com/redisson/redisson/blob/master/redisson/src/main/java/org/redisson/RedissonLock.java
张申傲
2022-05-11
2230
Fork/Join框架
Fork/Join框架是JDK7提供的一个用于并行执行任务的框架,其基本思路就是将一个较大的任务,按照一定规则,划分成若干个逻辑相同的子任务并发执行。待子任务执行后,再汇总每个任务的结果,最后返回最终的结果。例如,我们要对10000个元素求和,可以拆分成10个子任务,每个子任务计算1000个元素的和,最后将所有子任务的结果加起来,就是最终结果。
张申傲
2022-05-06
1930
根据 DAU 估算 QPS 的一般思路
根据 DAU 估算流量和容量的一般思路 以 DAU = 1000w 为例: PV 按照日访问量为日活的10倍计算,PV = 1000w * 10 = 1亿 均值QPS 均值 QPS = 访问量/时长 = 1亿/(246060) = 1160 峰值 QPS 峰值 QPS 按照均值的10倍预估 = 11600。考虑到静态资源流量的放大效应,按照放大10倍计算,系统峰值 QPS = 116000 容量 考虑高可用、异地多活等策略,容量x2,QPS = 232000 未来发展 按照未来半年业务增长1.5倍
张申傲
2021-12-07
1.1K0
垃圾收集器总结
垃圾收集器总结 常用垃圾收集器对比 垃圾收集器 串行/并行/并发 新生代/老年代 算法 目标 适用场景 Serial 串行 新生代 复制 低延迟优先 单 CPU 环境下的 Client 模式 Serial Old 串行 老年代 标记-整理 低延迟优先 单 CPU 环境下的 Client 模式、CMS 的后备预案 Parllel Scavenge 并行 新生代 复制 吞吐量优先 在后台运算而不需要太多交互的业务 Parallel Old 并行 老年代 标记-整理 吞吐量优先 在后台运算而不需要太多交互的业务
张申傲
2021-12-07
2980
熔断机制——断路器状态机
断路器状态流转过程: 断路器初始状态为 CLOSED,此时服务可用正常调用; 当调用失败的次数达到阈值时,熔断状态从 CLOSED 切换到 OPEN 状态。一般在实现时,如果调用成功一次,就会重置调用失败次数; 当断路器处于 OPEN 状态时,我们会启动一个超时计时器,当计时器超时后,状态切换到 HALF_OPEN 半打开状态。你也可以通过设置一个定时器,定期地探测服务是否恢复; 在断路器处于 HALF_OPEN 状态时,请求可以达到后端服务,如果累计一定的成功次数后,状态切换到 CLOSED;如果仍然出现
张申傲
2021-12-07
4740
Kafka和RocketMQ的消息复制实现对比
消息队列 复制基本单位 复制方式 可用性 一致性 RocketMQ(原生) Broker 同时支持同步双写和异步复制 不支持主从自动切换,无法保证可用性 可以保证消息一致性 Kafka Partition 异步复制 基于Zookeeper实现主从自动切换,保证高可用 可通过配置 ISR 保证一致性 并不存在一种完美的消息复制策略,都是在高性能、高可用和一致性之间做出权衡。
张申傲
2020-11-24
4580
缓存读写模式
上面的 Cache Aside 下,业务应用需要同时维护 Cache 和 DB 两个数据存储方,过于繁琐,于是就有了 Read/Write Through 模式。在这种模式下,业务应用只关注一个存储服务即可,业务方的读写 Cache 和 DB 的操作,都由存储服务代理。
张申傲
2020-09-08
9750
系统常用指标经验值(持续更新)
系统常用指标经验值(持续更新) 一. 数据库相关 MySQL 单实例,读写 QPS 通常只有千级别(3000~6000),经过优化的查询语句,在性能较好的机器上,读 QPS可接近 1w。 MySQL 执行一次普通的查询或者修改操作,平均耗时在 10~100ms 级别。 慢查询:针对用户端的查询操作,slow_query 建议设置在 1s 以内。 二. 缓存相关 单机 Memcached 的读写 QPS 可以达到 10w~100w 级别,读写平均耗时在 1ms 以内。 单机 Redis 的读写 QPS 10w
张申傲
2020-09-07
5880
MySQL 主从架构原理
上图展示的是 MySQL 的主从切换流程。在 State-1 中,客户端的读写都直接访问节点 A,而节点 B 是 A 的备库,只是将 A 的更新都同步过来,到本地执行。这样可以保持节点 B 和 A 的数据是相同的。当需要切换的时候,就切成状态 2。这时候客户端读写访问的都是节点 B,而节点 A 是 B 的从库。
张申傲
2020-09-03
1K0
MySQL的锁
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。
张申傲
2020-09-03
5390
MySQL日志系统
通过上述流程可以很明显看出,更新操作采用了两阶段提交算法,主要是为了保证 redo log 和 binlog 的数据一致性。两阶段提交是跨系统维持数据逻辑一致性时常用的一个方案。
张申傲
2020-09-03
1.1K0
MySQL整体架构
Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等)。所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
张申傲
2020-09-03
6650
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
【玩转EdgeOne】征文进行中
限时免费体验,发文即有奖~
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档