目录单体架构微服务架构服务治理之注册与发现和负载均衡服务治理之限流熔断服务治理之服务监控今天给大家分享一个话题,是关于微服务架构的服务治理的,很多小伙伴可能都觉得自己玩儿过微服务架构,然后可能也听说过服务治理,但是服务治理到底是什么,有哪些东西,服务治理到底应该怎么来做,这个可能就一头雾水了。所以今天就给大家聊聊这个微服务架构下的服务治理。单体架构首先,要说到微服务架构,那么先来讲讲,大家平时...
2022-04-24 17:37:24 5262浏览 0点赞 0回复 0收藏
前言读写分离方案上线后,订单sql查询时间再一次稳定在了300ms以下,此时对数据的增删改操作会走主库,而读请求会走从库,通过读写分离大大提升了数据读的处理能力,但遗憾的是没办法提升主库写数据的能力。新的挑战那么什么时候主库写数据的压力会过大呢其实我们之前也聊过这个问题,那就是多个业务共用一个物理数据库的,比如商品相关的表、订单相关的表和用户相关的表等,所有表都放到了一个mysql数据库中,就像这样:此时商...
2022-04-15 22:37:49 5216浏览 0点赞 0回复 0收藏
前言订单缓存方案上线之后,我们以为又开启了岁月安好的日子,但是,在一周后的某一天,DBA直接跑来了,DBA直接说:“leader让我直接找你,是这样的,上次加了缓存优化后,效果确实不错,但是我发现订单查询sql在今天的12:00至12:05之间有大量的慢sql,查询时间超过了2.5s。”这个时候,我们立马开启了排查问题模式,首先,check了一下上次加的缓存,发现缓存正常,然后接着根据DBA提供的信息搜索日志,此时,发现在这个时间段...
2022-04-15 22:31:13 5808浏览 0点赞 0回复 0收藏
前言经过前面索引和sql的优化后,现在查询速度快的飞起,然后,我们继续回归到了日常需求的开发中。3个月过后,订单表的数据已经达到5000万了,不过sql一次查询的时间,基本稳定在300ms以下。但是某个周一,leader刚开完周会就直接来找你了,直接说:“哎呀,周会上DBA找我了,说咱们订单组的sql偶尔会超过2s,DBA现在要求优化,平均时间要优化到300ms以下,不过,优化前你要先查下,为什么sql的查询时间会偶尔突增。”问题排查...
2022-04-15 22:22:10 6258浏览 0点赞 0回复 0收藏
前言上一期,我们讲解了sql优化的一般流程,不管是优化join语句、where语句、聚合函数还是排序操作,核心在于利用索引来优化sql语句,但是,大家以为我们为字段创建了索引之后,索引就一定会生效吗当然不是的,因为索引可能会失效。那索引为什么会失效呢失效之后会导致什么样的后果呢这一节,我们利用当下的问题,也就是千万级的订单表查询居然需要耗费3s的时间,通过这个问题我们来一探究竟。目前为止,我们已经初步确定问题原...
2022-04-15 21:32:27 5834浏览 0点赞 0回复 0收藏
前言通过前几期文章的积累,现在我们的理论知识已经极为扎实了,这个时候就可以动手开始sql优化了,sql优化是非常重要,因为即使再好的MySQL设计架构,也扛不住一个频繁查询的垃圾sql语句。关于sql的优化,我们也是有一定的原则和先后顺序的,大体的步骤的我们用一张流程图来看一下:总体呢,大概可以分为以下几个步骤:(1)首先,我们得要看下sql语句中是否有join语句,比如内连接查询innerjoin,外连接查询leftjoinrightjoin等...
2022-04-15 21:24:48 5330浏览 0点赞 0回复 0收藏
问题分析:为什么查询变慢呢接上期,我们知道了MySQL查询的全过程,也知道了整个过程的瓶颈在于磁盘IO,那怎么降低磁盘IO次数呢答案就是索引。正确的使用索引,我们就能有效的把磁盘IO的次数降到常数级,这样查询速度将会变得非常快,接下来让我们深入了解下MySQL的索引。无索引时,为什么查询会很慢呢在磁盘中,MYSQL存放数据的基本单位是数据页,数据是放在数据页中的,每个数据页中都有很多的数据行,如下图:可以看到,在数...
2022-04-15 21:17:39 5901浏览 0点赞 0回复 0收藏
前言接上一节,那么,一次查询的全过程是什么样的呢这个时候,我们通过各种百度和Google,然后加上自己的理解,终于搞明白了MySQL一次查询的全过程了。首先,用户想要查询订单数据时,会先发送一个查询请求,如下图所示:可以看到,当用户发送查询请求时,因为外卖订单项目是部署在Tomcat中的,Tomcat中的线程首先就会接收到用户的请求,然后把请求交给外卖订单项目。而外卖订单项目,会根据代码去数据库中查询订单的数据,不管...
2022-04-15 21:11:43 6270浏览 0点赞 0回复 0收藏
前言接上期,到现在为止,我们已经对订单系统核心接口业务流程有了一定的了解,此时我们可以接一些简单的需求做了。同时这个时候,也会有对应的产品经理来和我们对接需求,一般3个月左右,我们处理单系统的日常需求就轻车熟路了。可能在刚入职的时候,这家初创型互联网公司累积的用户量也就10万,每天活跃2万,日订单2万,如下图:对于数据库中的订单表而言,如果按照一天2万个订单数据量计算,一年也就七八百万的订单量,还是...
2022-04-15 21:05:02 5253浏览 0点赞 0回复 0收藏
前言上一期内容我们整体了解了分库分表实战项目当前使用的系统架构,也就是单库版本订单系统的系统架构。同时,我们也知道了未来要做的分库分表版本的订单系统架构。现在,我们就从单库版本的订单系统开始,一步一步的来进行优化。如果想要优化单库版本的订单系统,首先要了解目前的订单系统有哪些核心功能,核心功能的业务流程是什么。如果你刚入职了这家初创型互联网公司,而你所在的部门又刚好是做外卖APP的订单系统的,那你...
2022-04-15 19:36:40 5061浏览 0点赞 0回复 0收藏
前言各位读者朋友,大家好,这是分库分表实战的第一篇文章,首先介绍一下”基于ShardingSphere的分库分表实战“的设计思路及内容。本实战的重点是分库分表实战,比较适合1~3年工作经验的程序员朋友。实战主要以外卖APP中的外卖订单来作为本次实战的核心业务。基于外卖订单业务,儒猿技术团队开发了一个外卖订单项目,通过该项目逐步分析随着订单数据量逐步增加,系统将遇到什么问题。并以这些问题为线索逐步分析,在分库分表之...
2022-04-15 19:25:31 6152浏览 0点赞 0回复 0收藏
分享概要本次分享儒猿专栏《从零开始带你成为MySQL实战优化高手》中Mysql索引的内容。本次会先从一个数据页中如何存储和查询数据开始,拓展到多个数据页中查询数据,分析无索引查询时的低效率问题,然后通过页分裂过渡到主键目录以及索引页相关内容,见证一颗索引树是如何一步步生长起来的。最后站在更高的角度看下常见的一些索引名词、索引的优缺点以及如何才能设计出更好的索引来,开始分析前我们先来思考下如下的一些面试题...
2022-04-15 17:11:16 6502浏览 0点赞 0回复 0收藏
开篇相信广大程序员朋友经常使用MySQL数据库作为书籍持久化的工具,我们最常使用的就是MySQL中的SQL语句,从客户端向MySQL发出一条条指令,然后获取返回的数据结果进行后面的逻辑处理。尽管大家经常使用SQL语句完成工作,你是否关注过其执行的阶段,利用了哪些技术完成今天,就带大家一起看看MySQL数据库处理SQL请求的全过程。下面将会讲述如下内容:查询请求在MySQL中的处理流程MySQL中处理SQL的组件介绍,包括:连接器查询缓...
2022-04-15 17:02:26 6838浏览 0点赞 0回复 0收藏
开篇Redis作为最常用的内存数据库,通常来说数据存储在内存中,为了避免Redis服务器进程退出导致内存中的数据消失。Redis提出了持久化机制,也就是把内存中的数据保存到磁盘中,从而提高数据存储的可靠性。为此主流数据库会提供两类持久化方案,它们是“快照”存储和“日志”存储。相应地Redis提供了RDB持久化和AOF持久化与之对应。其中RDB是以快照的方式存储内存数据到磁盘上,而AOF是以日志追加的方式进行存储。下面就围绕这...
2022-04-15 16:28:10 6042浏览 0点赞 0回复 1收藏
“最高的10个”同学,或者想查找姓名是“张三”的同学,又或者是查找学号是“666”的同学等等,在这些场景中,我们来分别罗列一下一些可行的方案。一找出个子“最高的10个”同学•如果全校学生数量不多的话,把全校的同学都拉到操场由矮到高依次排队,排在最后的10个同学自然就是个子最高的。•先在各个班级内部排队比较,找出本班级内个子最高的10个同学,然后把每个班级选出来的10个人拉到操作去排队,排在最后的10个...
2022-04-15 16:16:28 6687浏览 0点赞 0回复 0收藏
“这篇文章,我们来聊一下对于一个支撑日活百万用户的高并系统,他的数据库架构应该如何设计看到这个题目,很多人第一反应就是:分库分表啊!但是实际上,数据库层面的分库分表到底是用来干什么的,他的不同的作用如何应对不同的场景,我觉得很多同学可能都没搞清楚。(1)用一个创业公司的发展作为背景引入假如我们现在是一个小创业公司,注册用户就20万,每天活跃用户就1万,每天单表数据量就1000,然后高峰期每秒钟并发请求最多...
2022-04-15 16:08:33 6544浏览 0点赞 0回复 0收藏
一、问题起源SpringCloud架构体系中,Eureka是一个至关重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的。不少初学SpringCloud的朋友在落地公司生产环境部署时,经常会问:EurekaServer到底要部署几台机器我们的系统那么多服务,到底会对EurekaServer产生多大的访问压力EurekaServer能不能抗住一个大型系统的访问压力如果你也有这些疑问,别着急!咱们这就一起去看看,Eureka作为微服务注...
2022-04-15 16:02:56 5410浏览 0点赞 0回复 0收藏
(0)写在前面面试大厂时,一旦简历上写了Kafka,几乎必然会被问到一个问题:说说acks参数对消息持久化的影响这个acks参数在kafka的使用中,是非常核心以及关键的一个参数,决定了很多东西。所以无论是为了面试还是实际项目使用,大家都值得看一下这篇文章对Kafka的acks参数的分析,以及背后的原理。(1)如何保证宕机的时候数据不丢失如果要想理解这个acks参数的含义,首先就得搞明白kafka的高可用架构原理。比如下面的图里就是表...
2022-04-15 15:56:32 6014浏览 0点赞 0回复 0收藏
1、面试真题MySQ索引的原理和数据结构能介绍一下吗b+树和b树有什么区别MySQL聚簇索引和非聚簇索引的区别是什么他们分别是如何存储的使用MySQL索引都有哪些原则MySQL复合索引如何使用2、面试官心理分析数据库是30k以内的工程师面试必问的问题,而且如果问数据库,一定是问mysql,N年前可能java工程师出去面试,oracle这块的技能是杀手锏,现在已经没人说,会oracle是加分项了,现在都是熟悉大数据hadoop、hbase等技术是加分项。3...
2022-04-15 15:51:19 5645浏览 0点赞 0回复 0收藏
一、读写锁的介绍本文我们来聊一下读写锁。所谓的读写锁,就是将一个锁拆分为读锁和写锁两个锁,然后加锁的时候,可以加写锁,也可以加读锁。如下面代码所示:如果有一个线程加了写锁,那么其他线程就不能加写锁了,同一时间只能允许一个线程加写锁。因为加了写锁就意味着有人要写一个共享数据,那同时就不能让其他人来写这个数据了。如果有线程加了写锁,其他线程就不能加读锁了,因为既然都有人在写数据了,你其他人当然不能...
2022-04-15 15:27:07 6790浏览 0点赞 0回复 0收藏