04 2021 档案

摘要:1.MySQL MylSAM 和 InnoDB存储引擎的区别是啥? myisam,不支持事务,不支持外键约束,索引文件和数据文件分开,这样在内存中可以缓存更多的索引,对查询的性能会更好,适用于那种少量插入、大量查询的场景。 innodb是现在最常用的存储引擎,是mysql5.5之后的默认存储引擎。主 阅读全文
posted @ 2021-04-28 16:43 双城孙宇 阅读(73) 评论(0) 推荐(0) 编辑
摘要:1.你能聊聊TCPIP四层网络模型吗?OSI七层网络模型也说一下! 设想一下,各个电脑厂商,比如IBM、苹果啥的,都弄自己的协议,结果就苹果电脑和苹果电脑自己可以通信,和IBM电脑就不可以通信,这不是尴尬么。所以搞一个国际通行的协议,大家都按照这个来,所有电脑都可以通信,不是很好么。 此时就必须搞一 阅读全文
posted @ 2021-04-26 21:30 双城孙宇 阅读(122) 评论(0) 推荐(0) 编辑
摘要:#1.JVM中有哪几块内存区域?Java 8之后对内存分代做了什么改进? JVM最常用的内存区域有三块 栈内存,堆内存和永久代。栈内存是线程每个线程独享的,堆内存是共享的,永久代中存储的是类的信息。 java8 之后将永久代中的常量池放到了堆内存中,永久代变成了metaspace(元区域)。 #2. 阅读全文
posted @ 2021-04-26 20:39 双城孙宇 阅读(94) 评论(0) 推荐(0) 编辑
摘要:#1.说说你对Spring的_IOC_机制的理解可以吗? 程序的耦合和解耦 IOC叫控制反转其目的就是为了降低程序的耦合性,使类与类之间彻底的解耦合(现在这套比较高大上的一点系统里,有几十个类都使用了@Resource或者@Autowired这个注解去标注MyService myService, 几 阅读全文
posted @ 2021-04-26 11:13 双城孙宇 阅读(70) 评论(0) 推荐(0) 编辑
摘要:#1.JavaSE多线程基础回顾 ##什么是线程?进程和线程的区别 线程是进程的执行单元,线程是操作系统能够进行运算调度的最小单位。 一个进程可拥有多个线程,而一个线程只能拥有一个父进程。 线程可独享自己的堆栈、程序计数器和局部变量;但线程必须与其父进程的其他线程共享代码段、数据段、堆空间等系统资源 阅读全文
posted @ 2021-04-24 10:31 双城孙宇 阅读(104) 评论(0) 推荐(0) 编辑
摘要:#1、HashMap的底层数据结构是什么? 在 JDK1.7 中,由“数组+链表”组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的。 在 JDK1.8 中,由“数组+链表+红黑树”组成。当链表过长,则会严重影响 HashMap 的性能,红黑树搜索时间复杂度是 O(logn) 阅读全文
posted @ 2021-04-23 21:08 双城孙宇 阅读(335) 评论(0) 推荐(0) 编辑
摘要:从分布式系统协调语义而言,是ZooKeeper做分布式锁更好一些,因为Redis本身其实是缓存,但是Redis能抗高并发,高并发场景下更好一些 zookeeper本身不适合部署大规模集群,他本身适用的场景就是部署三五台机器,不是承载高并发请求的,仅仅是用作分布式系统的协调的 Redis?ZooKee 阅读全文
posted @ 2021-04-23 09:34 双城孙宇 阅读(439) 评论(0) 推荐(0) 编辑
摘要:Redis分布式锁,很少自己撸,Redisson框架,他基于Redis实现了一系列的开箱即用的高级功能,比如说分布式锁 引入maven依赖,他示例代码就几行 比如说,苹果这个商品的id是1 redisson.lock(“product_1_stock”) key的业务语义,就是针对product_i 阅读全文
posted @ 2021-04-22 21:39 双城孙宇 阅读(221) 评论(0) 推荐(0) 编辑
摘要:下订单的环节,支付之前,创建一个订单 创建一个订单,订单里会指定对哪些商品要购买多少件,此时就需要走一个流程,校验一下库存 查库存,确认库存充足,锁定库存 这个过程必须用分布式锁,锁掉这个商品的库存,对一个商品的购买同一时间只能有一个人操作 redis和zookeeper实现分布式锁的原理,在之前面 阅读全文
posted @ 2021-04-22 20:33 双城孙宇 阅读(415) 评论(0) 推荐(0) 编辑
摘要:类似TCC事务的落地的一些东西,技术选型,业务场景需要分布式事务,结合我个人亲身经历的一个创业公司APP的一个事故,给大家介绍了一下,对于系统核心链路,为什么必须要上分布式事务 seata,github上,都会提供sample,跟dubbo,官方的同学是定义为double,spring cloud, 阅读全文
posted @ 2021-04-22 20:03 双城孙宇 阅读(309) 评论(0) 推荐(0) 编辑
摘要:#(1)数据库唯一索引 (2)基于Redis实现一套幂等性防重框架 对于插入类的操作,一般都是建议大家要在数据库表中设计一些唯一索引 你如果有一个订单被支付了,此时就要通知wms创建一个对应发货单,也是数据库里的一个表,仓库里的人会看到这个发货单,此时他就会根据发货单的信息从仓库里进行拣货,打包,封 阅读全文
posted @ 2021-04-22 18:22 双城孙宇 阅读(445) 评论(0) 推荐(0) 编辑
摘要:第一个是高并发,第二个是如何优化 Zuul网关部署的是什么配置的机器,部署32核64G,对网关路由转发的请求,每秒抗个小几万请求是不成问题的,几台Zuul网关机器 每秒是1万请求,8核16G的机器部署Zuul网关,5台机器就够了 #生产级的网关,应该具备我刚才说的几个特点和功能: (1)动态路由:新 阅读全文
posted @ 2021-04-22 12:55 双城孙宇 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:#网关的核心功能 (1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知 (2)灰度发布 (3)授权认证 (4)性能监控:每个API接口的耗时、成功率、QPS (5)系统日志 (6)数据缓存 (7)限流熔断 #几种技术选型 Kong、Zuul、N 阅读全文
posted @ 2021-04-22 10:20 双城孙宇 阅读(854) 评论(0) 推荐(0) 编辑
摘要:非常常见的一个技术面试题,但凡只要是聊到分布式这块,一定会问问你,Dubbo,Spring Cloud,服务注册中心,你们当时是怎么选型和调研的,你们最终是选择了哪块技术呢?你选择这块技术的原因和理由是什么呢? Eureka、ZooKeeper Dubbo作为服务框架的,一般注册中心会选择zk Sp 阅读全文
posted @ 2021-04-21 21:27 双城孙宇 阅读(241) 评论(0) 推荐(0) 编辑
摘要:底层架构原理是类似的 Dubbo,RPC的性能比HTTP的性能更好,并发能力更强,经过深度优化的RPC服务框架,性能和并发能力是更好一些 很多中小型公司而言,其实稍微好一点的性能,Dubbo一次请求10ms,Spring Cloud耗费20ms,对很多中小型公司而言,性能、并发,并不是最主要的因素 阅读全文
posted @ 2021-04-21 16:50 双城孙宇 阅读(371) 评论(0) 推荐(0) 编辑
摘要:问你Dubbo底层架构原理是一样的,不求你说能看过Spring Cloud的源码,单单就是说搞明白他的一些底层架构原理,也是不错的 Eureka、Ribbon、Feign、Zuul 就是优化并发冲突 如果你基于Spring Cloud对外发布一个接口,实际上就是支持http协议的,对外发布的就是一个 阅读全文
posted @ 2021-04-21 10:51 双城孙宇 阅读(77) 评论(0) 推荐(0) 编辑
摘要:这个面试题还是挺常见的,在面试突击第一季里,基本上带了一下,当时但是没有细讲,是因为当时面试突击第一季里对服务框架的原理没有做一个相对深入一点点的分析,当时主要就是讲了一些最基本的概念 人家并不是要你现场手撸一个RPC框架,也不是说让你进来了以后就是让你来研发RPC框架的 系统设计的问题,就是让你站 阅读全文
posted @ 2021-04-21 09:42 双城孙宇 阅读(235) 评论(0) 推荐(0) 编辑
摘要:两点,第一点,是核心的组件全部接口化,组件和组件之间的调用,必须全部是依托于接口,去动态找配置的实现类,如果没有配置就用他自己默认的 第二点,提供一种自己实现的组件的配置的方式,比如说你要是自己实现了某个组件,配置一下,人家到时候运行的时候直接找你配置的那个组件即可,作为实现类,不用自己默认的组件了 阅读全文
posted @ 2021-04-20 21:11 双城孙宇 阅读(72) 评论(0) 推荐(0) 编辑
摘要:如果问到Dubbo底层原理,肯定除了上一讲的底层架构,你能说出来之外,还很可能会追问几个问题,网络通信这块原理的话 netty来举例,NIO来实现的,一台机器同时抗高并发的请求 阅读全文
posted @ 2021-04-20 20:55 双城孙宇 阅读(234) 评论(0) 推荐(0) 编辑
摘要:分布式系统 拆分为了多个子系统之后,各个系统之间如何通过Spring Cloud服务框架来进行调用,Dubbo框架来进行调用 提供接口 服务注册中心: ###消费者 动态代理:Proxy 负载均衡:Cluster,负载均衡,故障转移 注册中心:Registry 通信协议:Protocol,filte 阅读全文
posted @ 2021-04-20 20:17 双城孙宇 阅读(99) 评论(0) 推荐(0) 编辑
摘要:作为合格的工程师,行业里主流的分布式服务技术栈,Dubbo和Spring Cloud两种,有的公司他是用Dubbo的,不用Spring Cloud的,有的公司是用Spring Cloud的,不用Dubbo的,他们是代表了两种主流技术栈 Java工程师,Dubbo和Spring Cloud起码是基本原 阅读全文
posted @ 2021-04-20 16:24 双城孙宇 阅读(138) 评论(0) 推荐(0) 编辑
摘要:#(1)如何实现mysql的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 #(2)MySQL主从复制原理的是啥? 主库将变更写binlog日志,然后从库连接到主库之后,从库有一个IO线程,将主库的b 阅读全文
posted @ 2021-04-20 09:35 双城孙宇 阅读(117) 评论(0) 推荐(0) 编辑
摘要:#(1)数据库自增id 这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id。拿到这个id之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用;缺点就是单库生成自增id,要是高并发的话,就会有瓶颈的;如果你硬是要 阅读全文
posted @ 2021-04-19 14:57 双城孙宇 阅读(151) 评论(0) 推荐(0) 编辑
摘要:#(1)停机扩容(不推荐) 这个方案就跟停机迁移一样,步骤几乎一致,唯一的一点就是那个导数的工具,是把现有库表的数据抽出来慢慢倒入到新的库和表里去。但是最好别这么玩儿,有点不太靠谱,因为既然分库分表就说明数据量实在是太大了,可能多达几亿条,甚至几十亿,你这么玩儿,可能会出问题。 从单库单表迁移到分库 阅读全文
posted @ 2021-04-19 11:11 双城孙宇 阅读(213) 评论(0) 推荐(0) 编辑
摘要:#(1)停机迁移方案 我先给你说一个最low的方案,就是很简单,大家伙儿凌晨12点开始运维,网站或者app挂个公告,说0点到早上6点进行运维,无法访问。。。。。。 接着到0点,停机,系统挺掉,没有流量写入了,此时老的单库单表数据库静止了。然后你之前得写好一个导数的一次性工具,此时直接跑起来,然后将单 阅读全文
posted @ 2021-04-18 21:32 双城孙宇 阅读(113) 评论(0) 推荐(0) 编辑
摘要:#(1)为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?) 说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表,也可能是光分表不分库,都有可能。我先给大家抛出来一个场景。 假如我们现在是一个小创业公司(或者是一个BAT公司刚兴起的一个新部门),现在注册用户就20万,每天活 阅读全文
posted @ 2021-04-18 16:50 双城孙宇 阅读(87) 评论(0) 推荐(0) 编辑
摘要:其实所谓的高并发,如果你要理解这个问题呢,其实就得从高并发的根源出发,为啥会有高并发?为啥高并发就很牛逼? 我说的浅显一点,很简单,就是因为刚开始系统都是连接数据库的,但是要知道数据库支撑到每秒并发两三千的时候,基本就快完了。所以才有说,很多公司,刚开始干的时候,技术比较low,结果业务发展太快,有 阅读全文
posted @ 2021-04-18 15:02 双城孙宇 阅读(570) 评论(0) 推荐(0) 编辑
摘要:#(1)两阶段提交方案/XA方案 也叫做两阶段提交事务方案,这个举个例子,比如说咱们公司里经常tb是吧(就是团建),然后一般会有个tb主席(就是负责组织团建的那个人)。 tb,team building,团建 第一个阶段,一般tb主席会提前一周问一下团队里的每个人,说,大家伙,下周六我们去滑雪+烧烤 阅读全文
posted @ 2021-04-17 21:21 双城孙宇 阅读(92) 评论(0) 推荐(0) 编辑
摘要:session是啥?浏览器有个cookie,在一段时间内这个cookie都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的session域,里面可以放点儿数据。 一般只要你没关掉浏览器,cookie还在,那么对应的那个sessio 阅读全文
posted @ 2021-04-17 19:06 双城孙宇 阅读(78) 评论(0) 推荐(0) 编辑
摘要:#(1)redis分布式锁 官方叫做RedLock算法,是redis官方支持的分布式锁算法。 这个分布式锁有3个重要的考量点,互斥(只能有一个客户端获取锁),不能死锁,容错(大部分redis节点创建了这个锁就可以) redis最普通的分布式锁的实现原理 RedLock算法 #(2)zk分布式锁 zk 阅读全文
posted @ 2021-04-17 16:31 双城孙宇 阅读(138) 评论(0) 推荐(0) 编辑
摘要:(1)分布式协调:这个其实是zk很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B消息消费之后处理了。那A系统如何知道B系统的处理结果?用zk就可以实现分布式系统之间的协调工作。A系统发送请求之后可以在zk上对某个节点的值注册个监听器,一旦B系统处理完了就修改zk那个节点的值,A立 阅读全文
posted @ 2021-04-17 14:36 双城孙宇 阅读(835) 评论(0) 推荐(0) 编辑
摘要:(1)上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用zookeeper来做,对吧 (2)然后你的消费者需要去注册中心拿对应的服务信息吧,对吧,而且每个服务可能会存在于多台机器上 (3)接着你就该发起一次请求了,咋发起?蒙圈了是吧。当然是基于动态代理了,你面向接口 阅读全文
posted @ 2021-04-17 13:53 双城孙宇 阅读(76) 评论(0) 推荐(0) 编辑
摘要:其实分布式系统接口的调用顺序,也是个问题,一般来说是不用保证顺序的。但是有的时候可能确实是需要严格的顺序保证。给大家举个例子,你服务A调用服务B,先插入再删除。好,结果俩请求过去了,落在不同机器上,可能插入请求因为某些原因执行慢了一些,导致删除请求先执行了,此时因为没数据所以啥效果也没有;结果这个时 阅读全文
posted @ 2021-04-17 13:42 双城孙宇 阅读(125) 评论(0) 推荐(0) 编辑
摘要:这个不是技术问题,这个没有通用的一个方法,这个是结合业务来看应该如何保证幂等性的,你的经验。 所谓幂等性,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确的,比如不能多扣款,不能多插入一条数据,不能将统计值多加了1。这就是幂等性,不给大家来学术性词语了。 其实保证幂等性主要是三点: ( 阅读全文
posted @ 2021-04-17 11:20 双城孙宇 阅读(153) 评论(0) 推荐(0) 编辑
摘要:spi,简单来说,就是service provider interface,说白了是什么意思呢,比如你有个接口,现在这个接口有3个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要spi了,需要根据指定的配置或者是默认的配置,去找到对应的实现类加载进来,然后用这个实现类的实例对象。 阅读全文
posted @ 2021-04-17 10:03 双城孙宇 阅读(142) 评论(0) 推荐(0) 编辑
摘要:#(1)dubbo负载均衡策略 1)random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。 2)roundrobi 阅读全文
posted @ 2021-04-16 21:03 双城孙宇 阅读(93) 评论(0) 推荐(0) 编辑
摘要:(1)dubbo支持不同的通信协议 1)dubbo协议 dubbo://192.168.0.1:20188 默认就是走dubbo协议的,单一长连接,NIO异步通信,基于hessian作为序列化协议 适用的场景就是:传输数据量很小(每次请求在100kb以内),但是并发量很高 为了要支持高并发场景,一般 阅读全文
posted @ 2021-04-16 20:12 双城孙宇 阅读(570) 评论(0) 推荐(0) 编辑
摘要:#(1)dubbo工作原理 第一层:service层,接口层,给服务提供者和消费者来实现的 第二层:config层,配置层,主要是对dubbo进行各种配置的 第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton 第四层:registry层,服务注册层,负责服务的注册与 阅读全文
posted @ 2021-04-16 19:41 双城孙宇 阅读(414) 评论(0) 推荐(0) 编辑
摘要:分布式系统,我用一句话给你解释一下,实在没时间多唠了,就是原来20万行代码的系统,现在拆分成20个小系统,每个小系统1万行代码。原本代码之间直接就是基于spring调用,现在拆分开来了,20个小系统部署在不同的机器上,得基于dubbo搞一个rpc调用,接口与接口之间通过网络通信来请求和响应。就这个意 阅读全文
posted @ 2021-04-16 16:38 双城孙宇 阅读(506) 评论(0) 推荐(0) 编辑
摘要:分布式业务系统,把原来用java开发的一个大块系统,给拆分成多个子系统,多个子系统之间互相调用,形成一个大系统的整体。假设原来你做了一个OA系统,里面包含了权限模块、员工模块、请假模块、财务模块,一个工程,里面包含了一堆模块,模块与模块之间会互相去调用,1台机器部署。 现在如果你把他这个系统给拆开, 阅读全文
posted @ 2021-04-16 14:29 双城孙宇 阅读(110) 评论(0) 推荐(0) 编辑
摘要:redis cluster,10台机器,5台机器部署了redis主实例,另外5台机器部署了redis的从实例,每个主实例挂了一个从实例,5个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒5万,5台机器最多是25万读写请求/s。 机器是什么配置?32G内存+8核CPU+1T磁盘,但是分 阅读全文
posted @ 2021-04-16 10:42 双城孙宇 阅读(198) 评论(0) 推荐(0) 编辑
摘要:这个也是线上非常常见的一个问题,就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了。 而且redis自己就有天然解决这个问题的CAS类的乐观锁方案 如果更旧,就不能用旧的数据覆盖新的数据 阅读全文
posted @ 2021-04-16 10:17 双城孙宇 阅读(88) 评论(0) 推荐(0) 编辑
摘要:你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 最经典的缓存+数据库读写的模式,cache aside pattern (1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应 (2)更新的 阅读全文
posted @ 2021-04-16 09:57 双城孙宇 阅读(93) 评论(0) 推荐(0) 编辑
摘要:缓存雪崩发生的现象 缓存雪崩的事前事中事后的解决方案 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死 事后:redis持久化,快速恢复缓存数据 统没死,对用户来说,就是可能点击几次刷不出来 阅读全文
posted @ 2021-04-15 20:58 双城孙宇 阅读(57) 评论(0) 推荐(0) 编辑
摘要:待补充。。。 阅读全文
posted @ 2021-04-15 16:44 双城孙宇 阅读(50) 评论(0) 推荐(0) 编辑
摘要:#1、RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集 如果我们想要redis仅仅作为纯内存 阅读全文
posted @ 2021-04-15 16:28 双城孙宇 阅读(569) 评论(0) 推荐(0) 编辑
摘要:就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据, 阅读全文
posted @ 2021-04-15 16:08 双城孙宇 阅读(271) 评论(0) 推荐(0) 编辑
摘要:(1)设置过期时间 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时?10分钟?这个很有用,我们自己可以指定缓存到期就失效。 如果假设你设置一个一批key只能存活1个小时,那么接下来1小时后,redis是怎么对这批key进行删除的? 答 阅读全文
posted @ 2021-04-14 16:39 双城孙宇 阅读(80) 评论(0) 推荐(0) 编辑
摘要:(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。 k 阅读全文
posted @ 2021-04-14 15:16 双城孙宇 阅读(122) 评论(0) 推荐(0) 编辑
摘要:(1)redis和memcached有啥区别 1)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这 阅读全文
posted @ 2021-04-14 13:37 双城孙宇 阅读(110) 评论(0) 推荐(0) 编辑
摘要:(1)在项目中缓存是如何使用的? 这个,你结合你自己项目的业务来,你如果用了那恭喜你,你如果没用那不好意思,你硬加也得加一个场景吧 (2)为啥在项目里要用缓存呢? 用缓存,主要是俩用途,高性能和高并发 1)高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作mysql,半天查 阅读全文
posted @ 2021-04-14 09:57 双城孙宇 阅读(392) 评论(0) 推荐(0) 编辑
摘要:在搜索这块,lucene是最流行的搜索库。几年前业内一般都问,你了解lucene吗?你知道倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布式搜索引擎——elasticsearch,简称为es。 elasticsearch设计的理念就是分布式搜索引擎,底层其实还是 阅读全文
posted @ 2021-04-13 13:48 双城孙宇 阅读(162) 评论(0) 推荐(0) 编辑
摘要:比如说这个消息队列系统,我们来从以下几个角度来考虑一下 (1)首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka的设计理念,broker → topic → partition,每个partition放一个机器,就存一部分 阅读全文
posted @ 2021-04-12 19:49 双城孙宇 阅读(114) 评论(0) 推荐(0) 编辑
摘要:你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了,或者消费的极其极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是整个这就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如rabbitmq设置了消息过期时间后就没了 阅读全文
posted @ 2021-04-12 19:27 双城孙宇 阅读(179) 评论(0) 推荐(0) 编辑
摘要:先看看顺序会错乱的俩场景 (1)rabbitmq:一个queue,多个consumer,这不明显乱了 (2)kafka:一个topic,一个partition,一个consumer,内部多线程,这不也明显乱了 那如何保证消息的顺序性呢? (1)rabbitmq:拆分多个queue,每个queue一个 阅读全文
posted @ 2021-04-12 16:50 双城孙宇 阅读(120) 评论(0) 推荐(0) 编辑
摘要:win+r打开运行,输入services.msc打开服务面板 找到Windows update服务,将常规选项卡的启动类型改为禁用,然后选择恢复选项卡,将三个失败选项都改为无操作 win+r打开运行,输入regedit打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\Cur 阅读全文
posted @ 2021-04-12 15:50 双城孙宇 阅读(1307) 评论(0) 推荐(0) 编辑
摘要:数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。 rabbitmq这种mq,一般来说都是承载公司的核心业务的,数据是绝对不能弄丢的 #(1)rabbitmq 1)生产者弄丢了数据 生产者将数据发送到rabbitmq的时候,可能数据就在半路 阅读全文
posted @ 2021-04-12 14:33 双城孙宇 阅读(125) 评论(0) 推荐(0) 编辑
摘要:回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。 首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎 阅读全文
posted @ 2021-04-11 20:54 双城孙宇 阅读(92) 评论(0) 推荐(0) 编辑
摘要:所以有水平的面试官,问的是MQ的高可用性怎么保证?这样就是你用过哪个MQ,你就说说你对那个MQ的高可用性的理解。 #(1)RabbitMQ的高可用性 RabbitMQ是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以他为例子讲解第一种MQ的高可用性怎么实现。 rabbitmq有三种模 阅读全文
posted @ 2021-04-11 19:57 双城孙宇 阅读(68) 评论(0) 推荐(0) 编辑
摘要:#1 为什么使用消息队列啊? 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么 面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处 先 阅读全文
posted @ 2021-04-11 14:14 双城孙宇 阅读(86) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示