大家好,我是Tom哥我们都知道互联网数据有个特性,大部分场景都是读多写少,比如:微博、微信、淘宝电商,按照二八原则,读流量占比甚至能达到90%结合这个特性,我们对底层的数据库架构也会做相应调整。采用读写分离处理过程:客户端会集成SDK,每次执行SQL时,会判断是写或读操作如果是写SQL,请求会发到主库主数据库执行SQL,事务提交后,会生成binlog,并同步给从库从库通过SQL线程回放binlog,并在从库表中生成相应数据如果...
2022-04-13 20:29:20 8148浏览 0点赞 0回复 0收藏
大家好,我是Tom哥性能不够,缓存来凑一个高并发系统肯定少不了缓存的身影,为了保证缓存服务的高可用,我们通常采用RedisCluster集群模式。描述:集群部署采用了3主3从拓扑结构,数据读写访问master节点,slave节点负责备份。随便登录一台redis节点,都可以看到集群的slot的槽位分步区间,以及对应的主从节点映射关系。127.0.0.1:8001>clusterslots1)1)(integer)109232)(integer)163833)1)"127.0.0.1"2)(integer)80033)"6c574c...
2022-04-13 20:22:13 1.4w浏览 0点赞 0回复 0收藏
大家好,我是Tom哥作为一名开发同学,大家对MySQL一定不陌生,像常见的事务特性、隔离级别、索引等也都是老生常谈。今天,我们就来聊个深度话题,关于MySQL的高可用一、什么是高可用维基百科定义:高可用性(highavailability,缩写HA),指系统无中断地执行其功能的能力,代表系统的可用性程度。高可用性通常通过提高系统的容错能力来实现。MySQL的高可用是如何实现的呢首先,我们来看张图过程:开始时,处理流程主要是场景一客...
2022-04-13 20:16:54 5681浏览 0点赞 0回复 0收藏
大家好,我是Tom哥我们都知道,数据非常重要网上也经常看到一些段子,某公司程序员对工作不满,删库跑路,老板损失惨重,欲哭无泪。这不最近又爆出一例,京东到家程序员离职当天删库跑路!那么有没有什么解决方案即使数据库真的被删了,也有备份数据,能快速恢复。甚至可以做到实时热备,即使内部炸掉外部用户也感知不到,一片风平浪静。MySQL作为当下流行数据库,在数据备份、高可用方面非常有竞争力,今天,我们就重点来讲下什...
2022-04-13 20:10:15 5405浏览 0点赞 0回复 0收藏
大家好,我是Tom哥今天跟大家聊一聊MySQL的事务隔离,并通过一些实验做了些总结。光说不练,假把式,没有经过实践就没有话语权。我们都知道数据库有四种隔离级别,分别是:读未提交(READUNCOMMITTED)读已提交(READCOMMITTED)可重复读(REPEATABLEREAD)串行化(SERIALIZABLE)实验前的准备工作1、基础环境当前的数据库版本mysql>selectversion();++version()++8.0.27++1rowinset(0.00sec)当前的事务隔离级别mysql>showvariableslike...
2022-04-13 19:59:55 5824浏览 0点赞 0回复 0收藏
大家好,我是Tom哥作为一名技术从业人员,性能优化是每个人的必修课就像大学时期给漂亮妹子修电脑的绝招就是“重启电脑一样”,性能优化也有自己的必杀技你一定听过一句话:性能不够,缓存来凑!对,你没听错,就是缓存。但是,哈哈,也不是拿来主义,张手就来。这不,小王接到一个秒杀活动任务,设计技术方案,大量的数据扔到缓存里,想借助Redis的高吞吐量来抗住峰值压力。这个思路也没错,这不一评估缓存内容占用的空间大小,...
2022-04-13 19:52:18 4637浏览 0点赞 0回复 0收藏
大家好,我是Tom哥今天跟大家聊下,如果Redis某个节点宕机了,要怎么处理我们知道,Redis集群一般采用主从模式,主节点负责写,从节点负责读。从节点故障从节点主要提供读服务,为了分摊主服务器压力,一般会有多个从节点。如果是从节点故障,不算什么大问题,客户端把该故障节点屏蔽即可,仍可访问其他的主、从节点满足正常的业务功能。主节点故障如果是主节点宕机了,那就有点麻烦了,毕竟写操作是在主节点上,无法替代。这时...
2022-04-13 19:44:17 1.1w浏览 0点赞 0回复 0收藏
大家好,我是Tom哥最近跟一位读者聊天,小哥非常郁闷,公司的Redis宕机了,线上业务受到了影响,老板非常愤怒,小哥担心会不会被辞退!我也很好奇,问小哥Redis主节点挂了,还有备机啊。怎么会影响到业务呢小哥说,他们的系统架构只部署一个Redis单实例。节点挂了,数据也丢了。好吧,既然提到了备份,那今天,我们就来聊下Redis的主从同步首先,什么是主从主从也称主从集群,部署了多个Redis实例,如下图所示:其中,每个实例又...
2022-04-13 19:35:37 5327浏览 0点赞 0回复 0收藏
大家好,我是Tom哥我们知道,大部分的业务场景都是读多写少,为了利用好这个特性,提升Redis集群系统的吞吐能力,通常会采用主从架构、读写分离如上图所示:其中Master节点:负责业务的写操作Slave节点:实时同步Master节点的数据,提供读能力为了提高吞吐量,采用一主多从的架构,将业务的读压力分摊到多台服务器上上述方案,看似合理,但其实可能存在一定隐患!一、拉取过期数据Redis性能高主要得益于纯内存操作,但内存存储介...
2022-04-13 17:35:29 7957浏览 0点赞 0回复 0收藏
大家好,我是Tom哥我们都知道Redis的集群有三种方案:1、主从复制模式2、Sentinel(哨兵)模式3、RedisCluster模式当然使用随着海量数据的存储要求,单台Redis配置有限,已经满足不了我们的需求。我们考虑采用分布式集群方案。RedisCluster采用数据分片机制,定义了16384个Slot槽位,集群中的每个Redis实例负责维护一部分槽以及槽所映射的键值数据。客户端可以连接集群中任意一个Redis实例,发送读写命令,如果当前Redis实例收到...
2022-04-13 17:29:07 9761浏览 0点赞 0回复 0收藏
大家好,我是Tom哥为了便于大家查找问题,了解全貌,整理个目录,我们可以快速全局了解关于Redis缓存,面试官一般喜欢问哪些问题接下来,我们逐条来看看每个问题及答案Redis有哪些特性答案:性能高,读的速度是100000次s,写的速度是80000次s数据持久化,支持RDB、AOF支持事务。通过MULTI和EXEC指令包起来。多种数据结构类型主从复制其他特性:发布订阅、通知、key过期等Redis为什么这么快答案:完全基于内存,没有磁盘IO上的开...
2022-04-13 17:22:50 6700浏览 0点赞 0回复 0收藏
大家好,我是Tom哥为了便于大家查找问题,了解全貌,整理个目录,我们可以快速全局了解关于mysql数据库,面试官一般喜欢问哪些问题接下来,我们逐条来看看每个问题及答案MyISAM和InnoDB的区别答案:InnoDB支持事务、外键、聚集索引,通过MVCC来支持高并发,索引和数据存储在一起。InnoDB不保存表的具体行数,执行selectcount()fromtable时需要全表扫描。而MyISAM用一个变量保存了整个表的行数。InnoDB最小的锁粒度是行锁,MyISA...
2022-04-13 17:15:47 6794浏览 0点赞 0回复 0收藏
大家好,我是Tom哥Kafka消息框架,大家一定不陌生,很多人工作中都有接触。它的核心思路,通过一个高性能的MQ服务来连接生产和消费两个系统,达到系统间的解耦,有很强的扩展性。你可能会有疑问,如果中间某一个环节断掉了,那怎么办这种情况,我们称之为消息丢失,会造成系统间的数据不一致。那如何解决这个问题需要从生产端、MQ服务端、消费端,三个维度来处理1、生产端生产端的职责就是,确保生产的消息能到达MQ服务端,这里...
2022-04-13 17:08:25 7223浏览 0点赞 0回复 0收藏
大家好,我是Tom哥Kafka作为一款开源的消息引擎,很多人并不陌生,但深入其源码的同学估计不多,除非你是中间件团队消息系统维护者。但术业有专攻,市面上那么多开源框架且每个框架又经常迭代升级,花精力深入了解每一个框架源码不太现实,本文会以业务视角罗列工作中大家需要熟知的一些知识本篇文章的目录:首先,为什么使用kafka削峰填谷。缓冲上下游瞬时突发流量,保护“脆弱”的下游系统不被压垮,避免引发全链路服务“雪崩...
2022-04-13 17:02:08 5688浏览 0点赞 0回复 0收藏
大家好,我是Tom哥我们都知道,业务开发涉及到数据库的SQL操作时,一定要review是否命中索引。否则,会走全表扫描,如果表数据量很大时,会慢的要死。假如命中了索引呢是不是就不会有慢查询殊不知,我们习以为常的常识有时也会误导我们!人生好难!聊这个话题,要有一定技术基础,需了解B+树的存储结构如果不是很清楚的话,先看下之前一篇文章,有详细介绍面试题:mysql一棵B+树可以存多少条数据1、工作准备:建表,造数据首先创...
2022-04-13 16:51:03 6442浏览 0点赞 0回复 0收藏
大家好,我是Tom哥今日寄语:努力的阶段,往往是最不养生的阶段!一张千万级的数据表,删除了一半的数据,你觉得B+树索引文件会不会变小(答案在文章中!!)我们先来做个实验,看看表的大小是如何变化的做个实验,让数据说话1、首先,在mysql中创建一张用户表,表结构如下:CREATETABLEuser(idbigint(20)NOTNULLAUTOINCREMENT,usernamevarchar(128)NOTNULLDEFAULT''COMMENT'用户名',ageint(11)NOTNULLCOMMENT'年龄',addressvarchar(...
2022-04-13 16:41:59 6074浏览 0点赞 0回复 0收藏
大家好,我是Tom哥今日寄语:充满活力的新人,能让身边的人都重回初心,真是不可思议。mysql的InnoDB存储引擎一棵B+树可以存放多少行数据(答案在文章中!!)要搞清楚这个问题,首先要从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机有五大组成部分:控制器,运算器,存储器,输入设备,输出设备。其中很重要的,也跟今天这个题目有关系的是存储器。我们知道万事万物都有自己的单元体系,若干个小单体组成一个个大的个...
2022-04-13 16:33:47 7902浏览 0点赞 0回复 0收藏
缓存设计可谓老生常谈了,早些时候都是采用memcache,现在大家更多倾向使用redis,除了知晓常用的数据存储类型,结合业务场景有针对性选择,好像其他也没有什么大的难点。工程中引入RedisClient二方包,初始化一个Bean实例RedisTemplate,一切搞定,soeasy。如果是几十、几百并发的业务场景,缓存设计可能并不需要考虑那么多,但如果是亿级的系统呢首先,先了解缓存知识图谱早期的缓存用于加速CPU数据交换的RAM。随着互联网的快...
2022-04-13 16:22:13 7808浏览 0点赞 0回复 0收藏
Pulsar介绍Pulsar是Yahoo在2013年创建的,2016年贡献给了Apache基金会,目前已经是Apache的顶级项目。Yahoo、Verizon、Twitter等很多公司都在使用Pulsar来处理海量消息。Pulsar声称比Kafka更快、运行成本更低、解决了很多Kafka的痛点。Pulsar非常灵活,可以像Kafka一样作为分布式日志系统,也可以作为类似RabbitMQ这类简单的消息系统。Pulsar有多种订阅类型、传递保障、保存策略。特性内置多租户不同的团队可以使用同一个集群,...
2022-04-13 16:16:19 6469浏览 0点赞 0回复 0收藏
消息通信有两种基本模型,即发布订阅(PubSub)模型和点对点(PointtoPoint)模型,发布订阅支持生产者消费者之间的一对多关系,而点对点模型中有且仅有一个消费者。前言Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布订阅消息队列”。Kafka高效地处理实时流式数据,可以实...
2022-04-13 16:11:31 8629浏览 0点赞 0回复 0收藏