摘要: 背景 有2种常见的多维度查询场景,分别是: 带多个筛选条件的列表查询 不含分库分表列的其他维度查询 普通的数据库查询,很难实现上述需求场景,更不用提模糊查询、全文检索了。 下面结合楼主的经验和知识,介绍初级方案、进阶方案(上ElasticSearch),大部分情况下推荐使用ElasticSearch 阅读全文
posted @ 2022-05-22 11:06 Java烘焙师 阅读(804) 评论(0) 推荐(2)
摘要: 结论 有以下几种Redis集群方案,先说结论: Redis cluster:应当优先考虑使用Redis cluster。 codis:旧项目如果仍在使用codis,可继续使用,但也推荐迁移到Redis cluster。 twemproxy:不建议使用,与codis同为proxy方案,但不如codis 阅读全文
posted @ 2022-04-30 23:46 Java烘焙师 阅读(790) 评论(0) 推荐(0)
摘要: Spring cache是一个缓存API层,封装了对多种缓存的通用操作,可以借助注解方便地为程序添加缓存功能。 常见的注解有@Cacheable、@CachePut、@CacheEvict,有没有想过背后的原理是什么?楼主带着疑问,阅读完Spring cache的源码后,做一个简要总结。 先说结论, 阅读全文
posted @ 2022-03-30 10:14 Java烘焙师 阅读(933) 评论(0) 推荐(1)
摘要: 先说结论:本地缓存优先选用caffeine,因为性能比guava cache快,api风格与之兼容、能轻松地平滑迁移,并且在spring/spring boot最新版本中已经是默认本地缓存了。下面展开讲讲本地缓存和Spring cache。 本文讨论堆内缓存,暂不讨论堆外缓存。堆内缓存是指缓存与应用 阅读全文
posted @ 2022-02-28 23:58 Java烘焙师 阅读(671) 评论(0) 推荐(0)
摘要: 要在应用中做到幂等,其实并不难,本文尝试做一个系统性的总结,欢迎一起探讨。 什么是幂等 某个操作执行一次,跟执行多次的效果一样。幂等一词来自于数学中的幂等,即f(f(x)) = f(x)。 需要保证幂等的场景 查询类的读操作,天然是幂等的,多次调用不会有副作用。需考虑以下几种写操作的情况: 调用下游 阅读全文
posted @ 2022-01-14 00:04 Java烘焙师 阅读(725) 评论(2) 推荐(0)
摘要: 为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。 #1、QPS保障目标 一开始就要明确定义QPS保障目标,以此来推算所需的服务、存储资源。可根据历史同期QPS,或者平时峰值的2到3倍估算。 压 阅读全文
posted @ 2021-12-24 00:39 Java烘焙师 阅读(900) 评论(0) 推荐(2)
摘要: 本文介绍如何应用Canal实现异步、解耦的架构,后续有空再写文章分析Canal原理和源代码。 Canal简介 Canal是用来获取数据库变更的中间件。 伪装自己为MySQL从库,拉取主库binlog并解析、处理。处理结果可发送给MQ,方便其他服务获取数据库变更消息,这一点非常有用。下面介绍一些典型用 阅读全文
posted @ 2021-11-27 00:15 Java烘焙师 阅读(1137) 评论(0) 推荐(0)
摘要: 上一篇文章介绍了MySQL主从同步的原理和应用,本文总结了MySQL主从延迟的原因和解决办法。如果主从延迟过大,会影响到业务,应当采用合适的解决方案。 MySQL主从延迟的表现 先insert或update写入更新操作,再立即select查询,但是得不到最新的结果。 可通过show slave st 阅读全文
posted @ 2021-10-16 20:49 Java烘焙师 阅读(667) 评论(0) 推荐(0)
摘要: 日常工作中,MySQL数据库是必不可少的存储,其中读写分离基本是标配,而这背后需要MySQL开启主从同步,形成一主一从、或一主多从的架构,掌握主从同步的原理和知道如何实际应用,是一个架构师的必备技能。楼主将在本文做总结,看这一篇就够了。 1、主从同步原理 主从同步架构图(异步同步) 这是最常见的主从 阅读全文
posted @ 2021-10-08 23:57 Java烘焙师 阅读(1181) 评论(0) 推荐(0)
摘要: 按楼主的经验和知识,本文总结了应用开发中的各种存储架构,从易到难,从起步到起飞。如有不对之处,欢迎留言。 1、单库 最简单的初始架构,适用于千万级以下的数据,并发量低的场景。 单库、单表 或单库、多个分表:之所以分表是为了给后续分库做预留准备 2、分库分表、读写分离 最常见的存储架构,适用于十亿级别 阅读全文
posted @ 2021-09-27 09:40 Java烘焙师 阅读(542) 评论(0) 推荐(2)