摘要:
资源隔离,两种策略,线程池隔离,信号量隔离 对资源隔离这一块东西,做稍微更加深入一些的讲解,告诉你,除了可以选择隔离策略以外,对你选择的隔离策略,可以做一定的细粒度的一些控制 1、execution.isolation.strategy 指定了HystrixCommand.run()的资源隔离策略, 阅读全文
posted @ 2019-07-28 15:59
菩提树下的丁春秋
阅读(2106)
评论(0)
推荐(0)
摘要:
(1)数据库自增id 这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id。拿到这个id之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用;缺点就是单库生成自增id,要是高并发的话,就会有瓶颈的;如果你硬是要改 阅读全文
posted @ 2019-07-28 15:57
菩提树下的丁春秋
阅读(322)
评论(0)
推荐(0)
摘要:
(1)如何实现mysql的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 (2)MySQL主从复制原理的是啥? 主库将变更写binlog日志,然后从库连接到主库之后,从库有一个IO线程,将主库的bin 阅读全文
posted @ 2019-07-28 15:57
菩提树下的丁春秋
阅读(385)
评论(0)
推荐(0)
摘要:
(1)停机扩容 这个方案就跟停机迁移一样,步骤几乎一致,唯一的一点就是那个导数的工具,是把现有库表的数据抽出来慢慢倒入到新的库和表里去。但是最好别这么玩儿,有点不太靠谱,因为既然分库分表就说明数据量实在是太大了,可能多达几亿条,甚至几十亿,你这么玩儿,可能会出问题。 从单库单表迁移到分库分表的时候, 阅读全文
posted @ 2019-07-28 15:56
菩提树下的丁春秋
阅读(333)
评论(0)
推荐(0)
摘要:
假设,你现有有一个单库单表的系统,在线上在跑,假设单表有600万数据 3个库,每个库里分了4个表,每个表要放50万的数据量 假设你已经选择了一个分库分表的数据库中间件,sharding-jdbc,mycat,都可以 你怎么把线上系统平滑地迁移到分库分表上面去 sharding-jdbc:自己上官网, 阅读全文
posted @ 2019-07-28 15:55
菩提树下的丁春秋
阅读(209)
评论(0)
推荐(0)
摘要:
(1)为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?) 说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表,也可能是光分表不分库,都有可能。我先给大家抛出来一个场景。 假如我们现在是一个小创业公司(或者是一个BAT公司刚兴起的一个新部门),现在注册用户就20万,每天活跃 阅读全文
posted @ 2019-07-28 15:54
菩提树下的丁春秋
阅读(241)
评论(0)
推荐(0)
摘要:
其实所谓的高并发,如果你要理解这个问题呢,其实就得从高并发的根源出发,为啥会有高并发?为啥高并发就很牛逼? 我说的浅显一点,很简单,就是因为刚开始系统都是连接数据库的,但是要知道数据库支撑到每秒并发两三千的时候,基本就快完了。所以才有说,很多公司,刚开始干的时候,技术比较low,结果业务发展太快,有 阅读全文
posted @ 2019-07-28 15:53
菩提树下的丁春秋
阅读(367)
评论(0)
推荐(0)
摘要:
01_单块系统里的事务 0202_分布式系统里的事务 03_两阶段提交方案 04 TCC方案 05 本地消息表方案 06 可靠消息最终一致性方案 07_最大努力通知方案 阅读全文
posted @ 2019-07-28 15:50
菩提树下的丁春秋
阅读(298)
评论(0)
推荐(0)
摘要:
1)两阶段提交方案/XA方案 也叫做两阶段提交事务方案,这个举个例子,比如说咱们公司里经常tb是吧(就是团建),然后一般会有个tb主席(就是负责组织团建的那个人)。 tb,team building,团建 第一个阶段,一般tb主席会提前一周问一下团队里的每个人,说,大家伙,下周六我们去滑雪+烧烤,去 阅读全文
posted @ 2019-07-28 15:45
菩提树下的丁春秋
阅读(346)
评论(0)
推荐(0)
摘要:
session是啥?浏览器有个cookie,在一段时间内这个cookie都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的session域,里面可以放点儿数据。 一般只要你没关掉浏览器,cookie还在,那么对应的那个sessio 阅读全文
posted @ 2019-07-28 15:44
菩提树下的丁春秋
阅读(197)
评论(0)
推荐(0)
摘要:
(1)redis分布式锁 官方叫做RedLock算法,是redis官方支持的分布式锁算法。 这个分布式锁有3个重要的考量点,互斥(只能有一个客户端获取锁),不能死锁,容错(大部分redis节点或者这个锁就可以加可以释放) 第一个最普通的实现方式,如果就是在redis里创建一个key算加锁 SET m 阅读全文
posted @ 2019-07-28 15:43
菩提树下的丁春秋
阅读(213)
评论(0)
推荐(0)
摘要:
大致来说,zk的使用场景如下,我就举几个简单的,大家能说几个就好了: (1)分布式协调:这个其实是zk很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B消息消费之后处理了。那A系统如何知道B系统的处理结果?用zk就可以实现分布式系统之间的协调工作。A系统发送请求之后可以在zk上对某 阅读全文
posted @ 2019-07-28 15:42
菩提树下的丁春秋
阅读(302)
评论(0)
推荐(0)
摘要:
其实一般问到你这问题,你起码不能认怂,因为既然咱们这个课程是短期的面试突击训练课程,那我不可能给你深入讲解什么kafka源码剖析,dubbo源码剖析,何况我就算讲了,你要真的消化理解和吸收,起码个把月以后了。 所以我给大家一个建议,遇到这类问题,起码从你了解的类似框架的原理入手,自己说说参照dubb 阅读全文
posted @ 2019-07-28 15:41
菩提树下的丁春秋
阅读(495)
评论(0)
推荐(0)
摘要:
首先,一般来说,我个人给你的建议是,你们从业务逻辑上最好设计的这个系统不需要这种顺序性的保证,因为一旦引入顺序性保障,会导致系统复杂度上升,而且会带来效率低下,热点数据压力过大,等问题。 下面我给个我们用过的方案吧,简单来说,首先你得用dubbo的一致性hash负载均衡策略,将比如某一个订单id对应 阅读全文
posted @ 2019-07-28 15:40
菩提树下的丁春秋
阅读(218)
评论(0)
推荐(0)
摘要:
这个不是技术问题,这个没有通用的一个方法,这个是结合业务来看应该如何保证幂等性的,你的经验。 所谓幂等性,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确的,比如不能多扣款,不能多插入一条数据,不能将统计值多加了1。这就是幂等性,不给大家来学术性词语了。 其实保证幂等性主要是三点: ( 阅读全文
posted @ 2019-07-28 15:39
菩提树下的丁春秋
阅读(366)
评论(0)
推荐(0)
摘要:
spi,简单来说,就是service provider interface,说白了是什么意思呢,比如你有个接口,现在这个接口有3个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要spi了,需要根据指定的配置或者是默认的配置,去找到对应的实现类加载进来,然后用这个实现类的实例对象。 阅读全文
posted @ 2019-07-28 15:38
菩提树下的丁春秋
阅读(334)
评论(0)
推荐(0)
摘要:
(1)服务治理 1)调用链路自动生成 一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧,分布式系统由大量的服务组成。那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的清楚了,因为服务实在太多了,可能几百个甚至几千个服务。 那就需要基于dubbo做的分布式系统中,对各 阅读全文
posted @ 2019-07-28 15:38
菩提树下的丁春秋
阅读(355)
评论(0)
推荐(0)
摘要:
(1)dubbo负载均衡策略 1)random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。 2)roundrobin 阅读全文
posted @ 2019-07-28 15:37
菩提树下的丁春秋
阅读(196)
评论(0)
推荐(0)
摘要:
(1)dubbo支持不同的通信协议 1)dubbo协议 dubbo://192.168.0.1:20188 默认就是走dubbo协议的,单一长连接,NIO异步通信,基于hessian作为序列化协议 适用的场景就是:传输数据量很小(每次请求在100kb以内),但是并发量很高 为了要支持高并发场景,一般 阅读全文
posted @ 2019-07-28 15:36
菩提树下的丁春秋
阅读(125)
评论(0)
推荐(0)
摘要:
(1)为什么要将系统进行拆分? 网上查查,答案极度零散和复杂,很琐碎,原因一大坨。但是我这里给大家直观的感受: 1)要是不拆分,一个大系统几十万行代码,20个人维护一份代码,简直是悲剧啊。代码经常改着改着就冲突了,各种代码冲突和合并要处理,非常耗费时间;经常我改动了我的代码,你调用了我,导致你的代码 阅读全文
posted @ 2019-07-28 15:35
菩提树下的丁春秋
阅读(184)
评论(0)
推荐(0)
摘要:
(1)dubbo工作原理 第一层:service层,接口层,给服务提供者和消费者来实现的 第二层:config层,配置层,主要是对dubbo进行各种配置的 第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton 第四层:registry层,服务注册层,负责服务的注册与发 阅读全文
posted @ 2019-07-28 15:35
菩提树下的丁春秋
阅读(555)
评论(0)
推荐(0)
摘要:
redis cluster,10台机器,5台机器部署了redis主实例,另外5台机器部署了redis的从实例,每个主实例挂了一个从实例,5个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒5万,5台机器最多是25万读写请求/s。 机器是什么配置?32G内存+8核CPU+1T磁盘,但是分 阅读全文
posted @ 2019-07-28 15:33
菩提树下的丁春秋
阅读(248)
评论(0)
推荐(0)
摘要:
一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况 串行化之后,就会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一 阅读全文
posted @ 2019-07-28 15:31
菩提树下的丁春秋
阅读(398)
评论(0)
推荐(0)
摘要:
缓存雪崩发生的现象 缓存雪崩的事前事中事后的解决方案 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死 事后:redis持久化,快速恢复缓存数据 缓存穿透的现象 缓存穿透的解决方法 阅读全文
posted @ 2019-07-28 15:28
菩提树下的丁春秋
阅读(210)
评论(0)
推荐(0)
摘要:
一、节点间的内部通信机制 1、基础通信原理 (1)redis cluster节点间采取gossip协议进行通信 跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间不断通信,保持整个集群所有节点的数据是完整的 维护集群的元数据用得,集中式,一种叫做gossip 集 阅读全文
posted @ 2019-07-28 15:22
菩提树下的丁春秋
阅读(280)
评论(0)
推荐(0)
摘要:
1、redis cluster介绍 redis cluster (1)自动将数据进行分片,每个master上放一部分数据(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的 在redis cluster架构下,每个redis要放开两个端口号,比如一个是6379,另外一个就是加10 阅读全文
posted @ 2019-07-28 15:21
菩提树下的丁春秋
阅读(211)
评论(0)
推荐(0)
摘要:
1、RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集 如果我们想要redis仅仅作为纯内存的 阅读全文
posted @ 2019-07-28 15:20
菩提树下的丁春秋
阅读(604)
评论(0)
推荐(0)
摘要:
就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解过这一块内容,redis高并发、高可用、缓存一致性 redis高并发:主从架构,一主多从,一般来说, 阅读全文
posted @ 2019-07-28 15:12
菩提树下的丁春秋
阅读(697)
评论(0)
推荐(0)
摘要:
(1)dubbo负载均衡策略 1)random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。 2)roundrobin 阅读全文
posted @ 2019-07-28 14:50
菩提树下的丁春秋
阅读(190)
评论(0)
推荐(0)
摘要:
(1)设置过期时间 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时?10分钟?这个很有用,我们自己可以指定缓存到期就失效。 如果假设你设置一个一批key只能存活1个小时,那么接下来1小时后,redis是怎么对这批key进行删除的? 答 阅读全文
posted @ 2019-07-28 14:43
菩提树下的丁春秋
阅读(239)
评论(0)
推荐(0)
摘要:
(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。 k 阅读全文
posted @ 2019-07-28 14:41
菩提树下的丁春秋
阅读(209)
评论(0)
推荐(0)
摘要:
(1)redis和memcached有啥区别 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端 阅读全文
posted @ 2019-07-28 14:40
菩提树下的丁春秋
阅读(271)
评论(0)
推荐(0)
摘要:
一个一个来看 (1)在项目中缓存是如何使用的? 这个,你结合你自己项目的业务来,你如果用了那恭喜你,你如果没用那不好意思,你硬加也得加一个场景吧 (2)为啥在项目里要用缓存呢? 用缓存,主要是俩用途,高性能和高并发 1)高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作my 阅读全文
posted @ 2019-07-28 14:39
菩提树下的丁春秋
阅读(190)
评论(0)
推荐(0)
摘要:
如果你确实干过es,那你肯定了解你们生产es集群的实际情况,部署了几台机器?有多少个索引?每个索引有多大数据量?每个索引给了多少个分片?你肯定知道! 但是如果你确实没干过,也别虚,我给你说一个基本的版本,你到时候就简单说一下就好了 (1)es生产集群我们部署了5台机器,每台机器是6核64G的,集群总 阅读全文
posted @ 2019-07-28 14:37
菩提树下的丁春秋
阅读(470)
评论(0)
推荐(0)
摘要:
,es性能优化是没有什么银弹的,啥意思呢?就是不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景。也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样。 一块一块来分析吧 在这个海量数据的场景下,如何提升es搜索的性能,也是我们之前生产环境实践经验所得 ( 阅读全文
posted @ 2019-07-28 14:35
菩提树下的丁春秋
阅读(679)
评论(0)
推荐(0)
摘要:
(1)es写数据过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点) 2)coordinating node,对document进行路由,将请求转发给对应的node(有primary shard) 3)实际的node上的primary shar 阅读全文
posted @ 2019-07-28 14:34
菩提树下的丁春秋
阅读(464)
评论(0)
推荐(0)
摘要:
起码你大概知道那个技术的基本原理,核心组成部分,基本架构构成,然后参照一些开源的技术把一个系统设计出来的思路说一下就好 比如说这个消息队列系统,我们来从以下几个角度来考虑一下 (1)首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下 阅读全文
posted @ 2019-07-28 14:33
菩提树下的丁春秋
阅读(183)
评论(0)
推荐(0)
摘要:
关于这个事儿,我们一个一个来梳理吧,先假设一个场景,我们现在消费端出故障了,然后大量消息在mq里积压,现在事故了,慌了 (1)大量消息在mq里积压了几个小时了还没解决 几千万条数据在MQ里积压了七八个小时,从下午4点多,积压到了晚上很晚,10点多,11点多 这个是我们真实遇到过的一个场景,确实是线上 阅读全文
posted @ 2019-07-28 14:32
菩提树下的丁春秋
阅读(327)
评论(0)
推荐(0)
摘要:
我们以前做过一个mysql binlog同步的系统,压力还是非常大的,日同步数据要达到上亿。mysql -> mysql,常见的一点在于说大数据team,就需要同步一个mysql库过来,对公司的业务系统的数据做各种复杂的操作。 你在mysql里增删改一条数据,对应出来了增删改3条binlog,接着这 阅读全文
posted @ 2019-07-28 14:31
菩提树下的丁春秋
阅读(213)
评论(0)
推荐(0)
摘要:
这个丢数据,mq一般分为两种,要么是mq自己弄丢了,要么是我们消费的时候弄丢了。咱们从rabbitmq和kafka分别来分析一下吧 rabbitmq这种mq,一般来说都是承载公司的核心业务的,数据是绝对不能弄丢的 (1)rabbitmq 1)生产者弄丢了数据 生产者将数据发送到rabbitmq的时候 阅读全文
posted @ 2019-07-28 14:30
菩提树下的丁春秋
阅读(208)
评论(0)
推荐(0)
摘要:
回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。 首先就是比如rabbitmq、rocketmq、kafka,都有可能会出现消费重复消费的问题,正常。因为这问题通常不是mq自己保证的,是给你保证的。然后我们挑一个kafka来举个例子,说说怎么重复消 阅读全文
posted @ 2019-07-28 14:29
菩提树下的丁春秋
阅读(263)
评论(0)
推荐(0)
摘要:
这个问题这么问是很好的,因为不能问你kafka的高可用性怎么保证啊?ActiveMQ的高可用性怎么保证啊?一个面试官要是这么问就显得很没水平,人家可能用的就是RabbitMQ,没用过Kafka,你上来问人家kafka干什么?这不是摆明了刁难人么。 所以有水平的面试官,问的是MQ的高可用性怎么保证?这 阅读全文
posted @ 2019-07-28 14:28
菩提树下的丁春秋
阅读(211)
评论(0)
推荐(0)
摘要:
先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰 解耦:现场画个图来说明一下,A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩溃中。。。再来点更加崩溃的 阅读全文
posted @ 2019-07-28 14:25
菩提树下的丁春秋
阅读(198)
评论(0)
推荐(0)

浙公网安备 33010602011771号