究竟什么时候该使用MQ?
任何脱离业务的组件引入都是耍流氓。引入一个组件,最先该解答的问题是,此组件解决什么问题。MQ,互联网技术体系中一个常见组件,究竟什么时候不使用MQ,究竟什么时候使用MQ,MQ究竟适合什么场景,是今天要分享的内容。MQ是什么?消息总线(MessageQueue),后文称MQ,是一种跨进程的通信机制,用
Istio流控,服务发现,负载均衡,核心流程是如何实现的?
前情提要:《ServiceMesh究竟解决什么问题?》《Istio究竟是什么?》《Istio分层架构设计?》Istio架构体系中,流控(TrafficManagement)虽然是数据平面的EnvoyProxy实施的,但整个架构的核心其实在于控制平面的Pilot。灰度发布的过程在《Istio,灰度发布
Istio,灰度发布从未如此轻松!!!
三个问题,回顾前情提要。ServiceMesh解决什么问题?SM本质是业务服务与底层技术体系的解耦:一个进程实现业务逻辑(不管是调用方,还是服务提供方),biz,即上图白色方块一个进程实现底层技术体系,proxy,即上图蓝色方块画外音:负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放
Istio分层架构?80%%的人有误解
ServiceMesh(3)前篇:《ServiceMesh究竟解决什么问题》《什么是Istio,ServiceMesh最流行落地》Istio是ServiceMesh的产品化落地:它帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全它帮助微服务分层解耦,解耦后的prox
Istio究竟是干嘛的?
ServiceMesh(2)上一篇介绍了《ServiceMesh究竟解决什么问题?》,当微服务架构体系越来越复杂的时候,需要将“业务服务”和“基础设施”解耦,将一个微服务进程一分为二:一个进程实现业务逻辑,biz,即上图白色方块一个进程实现底层技术体系,proxy,即上图蓝色方块,负载均衡、监控告警
ServiceMesh究竟解决什么问题?
SM,第一篇服务网格(ServiceMesh)这两年异常之火,号称是下一代微服务架构,接下来两个月,准备系统性的写写这个东西,希望能够让大家对最新的架构技术,有个初步的了解。画外音:我的行文的风格了,“为什么”往往比“怎么样”更重要。互联网公司,经常使用的是微服务分层架构。画外音:为什么要服务化,详
100亿数据,非“双倍”扩容,如何不影响服务,数据平滑迁移?
上次《百亿级数据DB秒级平滑扩容!》之后,很多朋友提问,说如果不是“双倍”扩容,能否做到平滑迁移,不影响服务呢?适用什么场景?互联网有很多“数据量较大,并发量较大,业务复杂度较高”的业务场景,其典型系统分层架构如下:(1)上游是业务层biz,实现个性化的业务逻辑;(2)中游是服务层service,封
炸!亿级数据DB秒级平滑扩容!!!
一步一步,娓娓道来。一般来说,并发量大,吞吐量大的互联网分层架构是怎么样的?数据库上层都有一个微服务,服务层记录“业务库”与“数据库实例配置”的映射关系,通过数据库连接池向数据库路由sql语句。如上图所示,服务层配置用户库user对应的数据库实例ip。画外音:其实是一个内网域名。该分层架构,如何应对
互联网公司为啥都不用MySQL分区表?
一分钟系列潜在场景如何?当MySQL单表的数据量过大时,数据库的访问速度会下降,“数据量大”问题的常见解决方案是“水平切分”。MySQL常见的水平切分方案有哪些?(1)分库分表;(2)分区表。画外音:我C,没听过分区表,有朋友惊叹。什么是分库分表?把一个很大的库(表)的数据分到几个库(表)中,每个库
炸!业界难题,跨库分页的几种常见方案
为什么需要研究跨库分页?互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息;(2)京东下单过多时,拉取第N页订单;(3)浏览58同城,查看第N页帖子;这些业务场景对应的消息表,订单表,帖子表分页拉取需求,都有这样一些共同的特点:(1)有个业务主键id,msg_id,or
3篇长文讲“自增ID”,大部分人仍然搞错了!?
花了3篇文章聊InnoDB自增ID的机制,《批量删除数据,常见的大坑!》中的作业题,仍然90%%的人答错,有点出乎意料。作业题是这样的:实验步骤如上图:第一步:建表,设定自增列;第二步:指定id=1插入,锚定第一行是id是1;第三步:不指定id,依赖自增机制,插入3行;画外音:此时id应该变为2,3
自增主键,三类插入测验答案,在这里。
《三类插入与自增键的关系》一文,基本解答了《自增键四道测验题》,仍有水友要求贴答案,原理都解释了,copy语句执行下,真的难么?画外音:你们赢了,我还是贴一下执行结果。实验一、自增键初始值测验droptablet1;createtablet1(idintnotnullauto_increment,n
主键,聚集索引,不是一个东西!
《主键,五个小习题》昨天挖的坑,今天填一下。练习一:建表时,可不可以不声明主键?(1)createtableuser(namevarchar(10))engine=innodb;(2)insertintouservalues('shenjian');(3)insertintouservalues('
主键,不少人以为自己懂了,却不透彻...
MySQL是被广泛应用的数据库,InnoDB又是用得最广的存储引擎,主键又是对InnoDB性能影响最大的因素之一,主键选择对,可以极大提升性能。InnoDB选择什么列作为主键,有一些最佳实践:(1)不能为空的列;(2)不能重复的列;(3)很少改变的列;画外音:行是按照聚集索引物理排序的,如果主键频繁
索引,一文搞定 | 数据库系列
前段时间写数据库内核比较多,最近又有朋友问索引的应用了,其实相关索引应用之前或多或少写过,只是可能不这么系统,这一篇简单总结一下,并系统性补充一些概念。画外音:本文基于MySQL5.6。什么是聚集索引,非聚集索引?详见《聚集索引,普通索引的差异》。索引底层数据结构如何?详见《数据库索引,到底是什么做
DBA防跑路,是不是备份最重要? | 数据库系列
前几天又看到新闻,某厂用户数据又丢了,据说是实习生的锅。数据安全性,是DBA最重要的职责,没有之一,今天系统性的说一下MySQL的备份。画外音:估计不是DBA和OP对这个问题也不太关注,权当了解知识吧。MySQL的备份分两大类:(1)物理备份(PhysicalBackup)(2)逻辑备份(Logic
MySQL表锁,以为自己懂了,结果一个答对的都没有!!!
关于MySQL的如下问题,你能准确的答出来么?(1)和行锁相比,表锁有什么优势?(2)频繁groupby的业务,用MyISAM更好,还是InnoDB更好,为什么?(3)某个session占有了表写锁,有另外N个session又要对表进行写操作,MySQL是如何处理的?(4)某个session释放了表
频繁插入(insert)的业务,用什么存储引擎更合适? | 数据库系列
MySQL表锁知识系统性梳理。哪些存储引擎使用表锁?MySQL,除InnoDB支持行锁外,MySQL的其他存储引擎均只使用表锁,例如:MyISAM,MEMORY,MERGE等。表锁有什么好处?(1)表锁占用内存少很多,行锁的数量与行记录数相关,非常耗内存;(2)如果业务经常读写表中很大一部分数据时,
数据库,主键为何不宜太长长长长长长长长?
继续回答星球水友提问:沈老师,我听网上说,MySQL数据表,在数据量比较大的情况下,主键不宜过长,是不是这样呢?这又是为什么呢?这个问题嘛,不能一概而论:(1)如果是InnoDB存储引擎,主键不宜过长;(2)如果是MyISAM存储引擎,影响不大;先举个简单的栗子说明一下前序知识。假设有数据表:t(i
如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列
《迅猛定位低效SQL?》留了一个尾巴:selectid,namewherename='shenjian'selectid,name,sexwherename='shenjian'多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?哪些场景,可以利用索引覆盖来优化