kafka和redis区别_redis和caffeine

莫娜号 1

大数据培训课程都包含哪些内容

88. redis 的使用场景?

大数据培训课程内容一般都是从基础知识讲起,并且课程内容与企业实际需求相匹配、理论与实战相结合这样学员在培训机构学完后找工作才比较容易,一般主要学习Ja语言基础、HTML、CSS、Ja、JaWeb和数据库、Lnux基础、Hadoop:生态体系、Spark:生态体系等课程内容。如需大数据培训选择【达内教育】。

kafka和redis区别_redis和caffeinekafka和redis区别_redis和caffeine


kafka和redis区别_redis和caffeine


简单来讲是学习Ja、数据结构、关系型数据库、linux系统作、hadoop离线分析、Storm实时计算、spark内存计算以及实课程。复杂的话,就是每个大的知识点里都包含着很多小的知识点,这可以参考(青牛的课程)。

老男孩教育的大数据培训课程内容包括:Ja、Linux、Hadoop、Hive、Avro与Protobuf、ZooKeeper、HBase、Phoenix、Redis、Flume、SSM、Kafka、Scala、Spark、azkaban、Python与大数据分析等

1阶段:J52. 什么是动态资源,什么是静态资源a

2阶段:JaEE核心

3阶段:Hadoop生态体系

4阶段:大数据spark生态体8.phoenix系

大数据精准才最重要的。

玩转Redis的高可用(主从、哨兵、集群)

所谓的高可用,也叫 HA(High Availability),是分布式系统架构设计中必须考虑的因素之一,它是保证系统SLA的重要指标。Redis 高可用的主要有三种模式: 主从模式 , 哨兵模式和集群模式 。

Redis 提供了 Redis 提供了(replication)功能,当一台 redis 数据库中的数据发生了变化,这个变化会被自动地同步到其他的 redis 机器上去。

Redis 多机器部署时,这些机器会被分成两类,一类是主( ),一类是从(sle )。一般 主可以进行读、写作 ,而 从只能进行读作 。一个主可以有多个从,但是一个从只会有一个主,也就是所谓的 一主多从结构 。

· 支持主从,主机会自动将数据同步到从机,可以进行读写分离;

· Master 是以非阻塞的方式为主 Sles 提供服务。所以在 Master-Sle 同步期间,客户端仍然可以提交查询或修改请求;

· Sle 同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis 则返回同步之前的数据。

· Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的 IP 才能恢复;

· 主机宕机,宕机前有部分数据未能及时同步到从机,切换 IP 后面还会引入数据不一致的问题,降低了系统的可用性;

· Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂;

· Redis 的主和从中的50. 访问一个网站的流程数据是一样的,降低的内存的可用性

实际生产中,我们优先考虑哨兵模式。这种模式下, 宕机,哨兵会自动选举 并将其他的 sle 指向新的119. zabbix的工作进程 。

在主从模式下,redis 同时提供了哨兵命令 redis-sentinel ,哨兵是一个的进程,作为进程,它会运行。其原理是哨兵进程向所有的 redis 机器人发送命令,等待 Redis 响应,从而运行的多个 Redis 实例。一般为了便于决策选举,使用 奇数个哨兵 。多个哨兵构成一个哨兵集群,哨兵直接也会相互通信,检查哨兵是否正常运行,同时发现 战机哨兵之间会进行决策选举新的

哨兵模式的作用:

· 通过发送命令,让 Redis 返回其运行状态,包括主和从;

哨兵很像 kafka 集群中的 zookeeper 的功能。

· 哨兵模式是基于主从模式的,所有主从的优点,哨兵模式都具有。

· 主从可以自动切换,系统更健壮,可用性更高。

· 具有主从模式的缺点,每台机器上的数据是一样的,内存的可用性较低。

· Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。

Redis 集群模式本身没有使用一致性 hash 算法,而是使用 slots 插槽 。

Redis 哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 都存储相同的数据,很浪费内存,所以在 redis3.0 上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,对数据进行分片,也就是说每台 Redis 上存储不同的内容;每个都会通过集群总线(cluster bus),与其他的进行通信。 通讯时使用特殊的端口号,即对外服务端口号加 10000。例如如果某个 node 的端口号是 6379,那么它与其它 nodes 通信的端口号是 16379。nodes 之间的通信采用特殊的二进制协议。

对客户端来说,整个 cluster 被看做是一个整体,客户端可以连接任意一个 node 进行作,就像作单一 Redis 实例一样, 当客户端作的时候 key 没有分配到该 node 上时,Redis 会返回转向指令,指向正确的 node,这有点儿像浏览器页面的 302 redirect 跳转。

根据,集群部署至少要 3 台以上的 ,使用 3 主 3 从六个的模式。

在 Redis 的每一个上,都有这么两个东西, 一个是插槽(slot),它的的取值范围是:0-16383, 可以从上面 redis-trib.rb 执行的结果看到这 16383 个 slot 在三个 上的分布。还有一个就是 cluster,可以理解为是一个集群管理的插件,类似的哨兵。

当我们的存取的 Key 到达的时候,Redis 会根据 crc16 的算法对计算后得出一个结果,然后把结果和 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的,然后直接自动跳转到这个对应的上进行存取作。

为了保证高可用, redis-cluster 集群引入了主从模式 ,一个主对应一个或者多个从。当其它主 ping 主 1 时,如果半数以上的主与 1 通信超时,那么认为 1 宕机了,就会启用 1 的从 sle 1,将 sle 1 变成主继续提供服务。

如果 1 和它的从 sle 1 都宕机了,整个集群就会进入 fail 状态,因为集群的 slot 映射不完整。 如果集群超过半数以上的 挂掉,无论是否有 sle,集群都会进入 fail 状态。

redis-cluster 采用去中心化的思想 ,没有中心的说法,客户端与 Redis 直连,不需要中间层,客户端不需要连接集群所有,连接集群中任何一个可用即可。

对 redis 集群的扩容就是向集群中添加机器,缩容就是从集群中删除机器,并重新将 16383 个 slots 分配到集群中的上(数据迁移)。

扩缩容也是使用集群管理工具 redis-tri.rb。

扩容时,先使用 redis-tri.rb add-node 将新的机器加到集群中,这是新机器虽然已经在集群中了,但是没有分配 slots,依然是不起做用的。在使用 redis-tri.rb reshard 进行分片重哈希(数据迁移),将旧上的 slots 分配到新上后,新才能起作用。

缩容时,先要使用 redis-tri.rb reshard 移除的机器上的 slots,然后使用 redis-tri.rb add-del 移除机器。

采用去中心化思想,数据按照 slot 存储分布在多个,间数据共享,可动态调整数据分布;

高可用性:部分不可用时,集群仍可用。通过增加 Sle 做 standby 数据副本,能够实现故障自动 failover,之间通过 gossip 协议交换状态信息,用投票机制完成 Sle 到 Master 的角色提升;

降低运维成本,提高系统的扩展性和可用性。

1.Redis Cluster 是无中心的集群架构,依靠 Goss 协议(谣言传播)协同自动化修复集群的状态。但 GosSIp 有消息延时和消息冗余的问题,在集群数量过多的时候,之间需要不断进行 PING/PANG 通讯,不必须要的流量占用了大量的网络资源。虽然 Reds4.0 对此进行了优化,但这个问题仍然存在。

2.数据迁移问题

Redis Cluster 可以进行的动态扩容缩容,这一过程,在目前实现中,还处于半自动状态,需要人工介入。在扩缩容的时候,需要进行数据迁移。

而 Redis 为了保证迁移的一致性,迁移所有作都是同步作 ,执行迁移时,两端的 Redis 均会进入时长不等的阻塞状态,对于小 Key,该时间可以忽略不计,但如果一旦 Key 的内存使用过大,的时候会接触发集群内的故障转移,造成不必要的切换。

主从模式: 挂掉后,需要手动指定新的 ,可用性不高,基本不用。

集群99. memcache有哪些应用场景模式:数据量比较大,QPS 要求较高的时候使用。 Redis Cluster 是 Redis 3.0 以后才正式推出,时间较晚,目前能证明在大规模生产环境下成功的案例还不是很多,需要时间检验。

Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?

RabbitMQ:具有发布确认功能,保证消息被发布到服· 然而一个哨兵进程对 Redis 进行,也可能会出现问题,为此,我们可以使用多个哨兵进行。各个哨兵之间还会进行,这样就形成了多种哨兵模式。务器

Kafka、ActiveMQ、RabbitMQ、RocketMQ 都是流行的消息队列中间件,它们各有优缺点。以下是一些总结和区别:

- Kafka:高吞吐量、低延迟、高可用性、分布式、持久化存储、多租户支持等 。

- ActiveMQ:支持JMS1.1和J2EE 1.4规范,具有良好的面向企业级应用程序的特性,如负rabbitMQ支持or的queue,主queue失效,or queue接管。载均衡、可靠性、安全性等 。

- RabbitMQ:支持多种消息协议,如AMQP、STOMP等,具有良好的可扩展性和灵活性,支持多种语言和作系统 。

- RocketMQ:支持事务消息、顺序消息、延时消息等多种消息类型,具有良好的可扩展性和性能 。

想问下准备参加大数据培训班,选择哪里?

Hadoop是大数据开发的重要框架,其核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与作!

尽量选择有实力的规模较大的学校,规模大的培训机构学生报名多,办学时间较长的一定会比较有保障,比如光环大数据,开76. Binlog工作模式有哪些?各什么特点,企业如何选择?班比较快,有自己的专职教师,对于大数据培训的过程注重企业项目实战的锻炼,对于学员自身数据分析能力是实打实进行提升,毕业会由全程项目老师指导、阶段考核、综合训练~

RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键。

大数据培训班很多,一般来说都是北上广比较好,希望你可以多看几家对比一下。

软件开发中的Kafka和数据库的关系是什么呢?

2、创建2个消息,aa和bb

首先明确说明Kafka不是数据库,它没有schema,也没有表,更没有索引。

1.它仅仅是生产消息流、消费消息流而已。从这个角度来说Kafka的确不像数据库,至少不像我们熟知的关系型数据库。

那么到底什么是数据库呢?或者说什么特性使得一个系统可以被称为数据库?经典的教科书是这么说的:数据库是提供 ACID 特性的,我们依次讨论下ACID。

1、持久性(durability)

我们先从最容易的持久性开始说起,因为持久性最容易理解。在80年代持久性指的是把数据写入到磁带中,这是一种很古老的存储设备,现在应该已经绝迹了。目前实现持久性更常见的做法是将数据写入到物理磁盘上,而这也只能实现单机的持久性。当演进到分布式系统时代后,持久性指的是将数据通过备份机制拷贝到多台机器的磁盘上。很多数据库厂商都有自己的分布式系统解决方案,如GreenPlum和Oracle RAC。它们都提供了这种多机备份的持久性。和它们类似,Apache Kafka天然也是支持这种持久性的,它提供的副本机制在实现原理上几乎和数据库厂商的方案是一样的。

2、原子性(atomicitmount -t ntfs-3g /dev/sdbc /mydatay)

数据库中的原子性和多线程领域内的原子性不是一回事。我们知道在Ja中有AtomicInteger这样的类能够提供线程安全的整数作服务,这里的atomicity关心的是在多个线程并发的情况下如Redis是一个key-value存储系统,其出现很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,它提供了Ja,C/C++,C#,PHP,JaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便,大数据开发需掌握Redis的安装、配置及相关使用方法。何保证正确性的问题。而在数据库领域,原子性关心的是如何应对错误或异常情况,特别是对于事务的处理。如果服务发生故障,之前提交的事务要保证已经持久化,而当前运行的事务要终止(abort),它执行的所有作都要回滚,最终的状态就好像该事务从未运行过那样。举个实际的例子,

第三个方法是采用基于日志结构的消息队列来实现,比如使用Kafka来做,如下图所示:

在这个架构中app仅仅是向Kafka写入消息,而下面的数据库、cache和index作为的consumer消费这个日志——Kafka分区的顺序性保证了app端更新作的顺序性。如果某个consumer消费速度慢于其他consumer也没关系,毕竟消息依然在Kafka中保存着。总而言之,有了Kafka所有的异质系统都能以相同的顺序应用app端的更新作,

3、隔离性(isolation)

在传统的关系型数据库中最强的隔离级别通常是指serializability,国内一般翻译成可串行化或串行化。表达的思想就是连接数据库的每个客户端在执行各自的事务时数据库会给它们一个象:仿佛每个客户端的事务都顺序执行的,即执行完一个事务之后再开始执行下一个事务。其实数据库端同时会处理多个事务,但serializability保证了它们就像单独执行一样。举个例子,在一个系统中,每个新用户都需要注册一个的用户名。一个简单的app实现逻辑大概是这样的:

4、一致性(consistency)

说说一致性。按照Kelppmann大神的原话,这是一个很奇怪的属性:在所有ACID特性中,其他三项特性的确属于数据库层面需要实现或保证的,但只有一致性是由用户来保证的。严格来说,它不属于数据库的特性,而应该属于使用数据库的一种方式。坦率说次听到这句话时我本人还是有点震惊的,因为从没有往这个方面考虑过,但仔细想想还真是这么回事。比如刚才的注册用户名的例子中我们要求每个用户名是的。这种一致性约束是由我们用户做出的,而不是数据库本身。数据库本身并不关心或并不知道用户名是否应该是的。针对Kafka而言,这种一致性又意味着什么呢?Kelppmann没有具体展开,

希望能帮到你,谢谢!

Redis Stream类型的使用

16363626125-0 某个消息的具体的ID,这个 g3 消费者组中的消息都是 大于> 这个id的消息。

最近在看 redis 这方面的知识,发现在 redis5 中产生了一种新的数据类型 Stream ,它和 kafka 的设计有些类似,可以当作一个简单的消息队列来使用。

解释:

指定指定Stream的大小比模糊指定Stream的大小会稍微多少消耗一些性能。

~ 模糊指定流的大小,可以看到指定的是1,实际上已经到了3.

使用redis的事务作,获取到同一毫秒产生的多条数据,时间戳一样,序列号不一样

-: 表示最小id的值

+: 表示i想了想,基本需要以下知识点吧:d的值

(: 表示开区间

直接写 毫秒 不写后面的序列号即可。

start 和 end 的值写的一样即可获取单挑数据。

使用 count 进行限制

使用方式和 XRANGE 类似,略。

需求: 往Stream中加入3条消息,然后删除第2条消息

注意:

需要注意的是,我们从Stream中删除一个消息,这个消息并不是被真正的删除了,而是被 标记为删除 ,这个时候这个消息还是占据着内容空间的。如果所有Stream中所有的消息都被标记删除,这个时候才会回收内存空间。但是这个Stream并不会被删除。

查看St106.kafka中的broker 是干什么的ream中元素的长度

注意:

如果 xlen 后方的 key 不存在则返回0,否则返回元素的个数。

上方的意思是,保留 stream-key 这个Stream中的2个消息。

minid 是删除比这个id小的数据,本地测试的时候 没有测试出来 ,略。

XREAD 只是读取消息,读取完之后并不会删除消息。 使用 XREAD 读取消息,是完全与消费者组的,多个客户端可以同时读取消息。

count 限制单次读取的消息,因为当前读取可能没有这么多。

即读取队列尾的下一个消息,在非阻塞模式下始终是 nil

注意:

1、创建Stream的名称是 stream-key

$ 表示从一个元素消费,不包括Stream中的一个元素,即消费的消息。

也可以通过 xautoclaim 来实现。

1、

2、

Linux运维工程师会面试哪些

给大家分享一些Linux面试题的笔记,从负载均衡、nginx、MySQL、redis、kafka、zabbix、k8s等方面拆解 Linux 知识点。用来对个人技术点进行查漏补缺。

目录:

1. 磁盘使用率检测(用shell脚本)

2. LVS 负载均衡有哪些策略?

3. 谈谈你对LVS的理解?

4. 负载均衡的原理是什么?

5. LVS由哪两部分组成的?

6. 与lvs相关的术语有哪些?

7. LVS-NAT模式的原理

8. LVS-NAT模型的特性

9. LVS-DR模式原理

10. LVS-DR模型的特性

11. LVS三种负载均衡模式的比较

12. LVS的负载调度算法

13. LVS与nginx的区别

14. 负载均衡的作用有哪些?

15. nginx实现负载均衡的分发策略

16. keepalived 是什么?

17. 你是如何理解VRRP协议的

18. keepalived的工作原理?

20. 如何解决keepalived脑裂问题?

22. nginx做负载均衡实现的策略有哪些

23. nginx做负载均衡用到哪些模块

24. 负载均衡有哪些实现方式

25. nginx如何实现四层负载?

26. 你知道的web服务有哪些?

27. 为什么要用nginx

28 . nginx的性能为什么比apache高?

29 . epoll的组成

30 . nginx和apache的区别

31. Tomcat作为web的优缺点?

32. tomcat的三个端口及作用

33. fastcgi 和cgi的区别

35. 什么是反向,什么是正向,以及区别?

36. Squid、Varinsh、可扩展性:可线性扩展到 1000 多个,可动态添加或删除;Nginx 有什么区别?

37. nginx是如何处理请求的

38. nginx虚拟主机有哪些?

39. nginx怎么实现后端服务的健康检查

40. apache中的Worker 和 Prefork 之间的区别是什么?

41. Tomcat缺省端口是多少,怎么修改

42. Tomcat的工作模式是什么?

43. Web请求在Tomcat请求中的请求流程是怎么样的?

44. 怎么Tomcat的内存使用情况

45. nginx的优化你都做过哪些?

46. Tomcat你做过哪些优化

47. nginx的session不同步怎么办

48. nginx的常用模块有哪些?

49. nginx常用状态码

51. 三次握手,四次挥手

53. worker支持的并发数是什么?

54. Tomcat和Resin有什么区别,工作中你怎么选择?

55. 什么叫网站灰度发布?56.. 统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

57. nginx各个版本的区别

58. nginx版本

60. nginx默认配置文件

61. location的规则

62. 配置nginx防盗链

64. MySQL主从原理

65. MySQL主从存在哪些问题?

66. MySQL的方法

68. 判断主从延迟的方法

69. MySQL忘记root密码如何找回

70. MySQL的数据备份方式

71. innodb的特性

72. varchar(100) 和varchar(200)的区别

73. MySQL主要的索引类型

75. 如何加强MySQL安全,请给出可二、什么叫CDN?行的具体措施?

77. 生产一主多从从库宕机,如何手工恢复?

78. MySQL中MyISAM与InnoDB的区别,至少5点

79. 网站打开慢,请给出排查方法,如是数据库慢导致,如何排查并解决,请分析并举例?

81.误执行drop数据,如何通过xtrabackup恢复?

82. 如何做主从数据一致性校验?

83. MySQL有多少日志

84. MySQL binlog的几种日志录入格式以及区别

85. MySQL数据库cpu飙升到500%的话他怎么处理?

86. redis是单线程还是多线程?

87. redis常用的版本是?

89. redis常见的数据结构

90. redis持久化你们怎么做的?

. 主从实现的原理

92. redis哨兵模式原理

93. memcache和redis的区别

94. redis有哪些架构模式?

95. 缓存雪崩?

96. 缓存穿透

97. 缓存击穿

10. Kafka中的消息是否会丢失和重复消费?8. redis为什么这么快

100. memcache 服务特点及工作原理

101. memcached是如何做身份验证的?

102. mongoDB是什么?

103. mongodb的优势

104. mongodb使用场景

105. kafka 中的ISR,AR代表什么,ISR伸缩又代表什么

107. kafka中的 zookeeper 起到什么作用,可以不用zookeeper么

108. kafka follower如何与leader同步数据

109. kafka 为什么那么快

111. 为什么Kafka不支持读写分离?

112. 什么是消费者组?

113. Kafka 中的术语114. kafka适用于哪些场景

115. Kafka写入流程:

116. zabbix有哪些组件

118. 一个系统的运行流程

120. zabbix常用术语

121. zabbix自定义发现是怎么做的?

122. 微信报警

123. zabbix客户端如何批量安装

124. zabbix分布式是如何做的

125. zabbix proxy 的使用场景

126. promeus工作原理

127. promeus组件

128. ELK工作流程

129. logstash的输入源有哪些?

130. logstash的架构

131. ELK相关的概念

132. es常用的插件

134. zabbix你都哪些参数

135. MySQL同步和半同步

136. CI/CD

137 K8S指标

138. k8s是怎么做日志的

139. 【运维面试】k8s中serv和ingress的区别

140. k8s组件的梳理

141. 关于tcp/IP协议

142. 谈谈你对CDN的理解

Linux基础

运维的命令

基础服务:LAMP或LNMP :Apache/Nginx,MySQL,PHP/Python/Perl LAMP FTP DNS SAMBA EMAIL NTP DHCP……

运维平台工具:Nagios Puppet Zabbix Cacti SaltStack……

脚本能力:Shell, Python,Perl...

底层知识:Linux C,内核

防火墙配置,如 iptables, ipset……

各类型,如塔式、机架式、刀片式详细的结构,优缺点……

答:如果当前目录为"/tmp" ,那么这个目录下的东西会全部删除 (默认不包含隐藏文件)

如果当前目录为"/",那么系统上的数据将会丢失,且无法启动,系统崩溃(谨慎使用这个命令)

答:即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度

三、/mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?

答:/mnt一般用于挂载外接设备/root是一个目录,是root用户的家目录/boot目录是/目录下的一个子目录

四、用虚拟机安装了一台Linux系统,突然想克隆一台,克隆后发现无法上网,如何解决?

答:编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-0,将HWADDR和MAC地址这两行删除。修改文件/etc/udev/rules.d/70-persistent-net.rules,删除之前0所在的行,将下一行1修改为0

五、查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

答: find / -name txt -mtime +30 -type f -size +20k -perm a=x -exec cp {} /data/backup/

六、有一块移动硬盘,上面有300G数据,如何快速cp到linux?

答:设硬盘在上识别为 sdbc

mkdir /mydata

(可能需要安装ntfs-3g_ntfsprogs)

七、在这个月内,每天的早上 6 点到 12 点中,每隔 2 小时创建一个test.txt文件,内容为ok,如何实现?

答:crontab -e 进入编辑模式,添加以下内容 0 6-12/2 4 /bin/touch test.txt (以4月为例启动服务 serv crontab start;chkconfig crontab on

八、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1

答:- iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

九、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

答: cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -1

十、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整作命令?

答: tcpdump -nn tcp port 80

rocketmq和kafka区别

kafka每个topic的partition都是一个目录,每个partition34. nginx常用的命令的数11. SSM据就放到对应的目录下面。而rocketmq存储数据的时候是将所有topic的数据存放到一个文件CommitlogHBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。中,当文件大小超过1G,就向下一个文件中写。

而rocketmq存储数据的时候是将所有topic的数据存放到一个文件Commitlog中,当文件大小超过1G,就向下一个文件中写。同时,Broker会为每一个主题维护各自的ConsumerQueue文件,文件中记录了该主题消息的索引,包括在Commitlog中的偏移位置,消息大小及校验和,以便于在消费时快速的定位到消息位置。ConsumerQueue的维护是异步进行的,不影响消息生产的主流程,即使ConsumerQueue没有及时更新的情况下,服务异常终止,下次启动时也可以根据Commitlog文件中的内容对ConsumerQueue进行恢复。这样的文件结构也就决定了,kafka的IO吞吐量会特别高(多topic并发写),但同样也会受制于topic个数过多的IO切换问题。而rocketMQ恰恰相反,由于所有topic的数据都是记录在一个文件当中,所以topic较少时性能相比kafka交慢,但topic较多时,rocketmq的性能几乎时没有影响的。

接收订单用redis做缓存好还是rabbit做消息队列好

59. 关于nginx access模块的面试题

具体对比

xadd 命令 返回的是数据的id, xx-yy (xx指的是毫秒数,yy指的是在这个毫秒内的第几条消息)

可靠消费

Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理

RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费

可靠发布

Reids:不提供,需自行117. zabbix的两种模式实现

高可用

Redis:采用主从模式,读写分离,但是故障转移还没有非常完善的解决方案

RabbitMQ:集群采用磁盘、内存,任意单点故障都不会影响整个队列的作

持久化

Redis:将整个Redis实例持久化到磁盘

RabbitMQ:队列,消息,都可以选择是否持久化

消费者负载均衡

Redis:不提供,需自行实现

RabbitMQ:根据消费者情况,进行消息的均衡分发

队列

Redis:不提供,需自行实现

RabbitMQ:后台可以某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)

流量控制

Redis:不提供,需自行实现

RabbitMQ:过载的情况,对生产者速率会进行限制,保证服务可靠性

出入队性能

对于RabbitMQ和Redis的入队和出队作,各执行100万次,每10万次记录一次执行时间。

测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。

最后修改时间:
塞尔达传说食谱:重现海拉尔的传奇风味
上一篇
4开是a4纸吗? 4开纸是a4纸的一半吗
下一篇

相关文章