当前搜索:

[置顶] 《RabbitMQ实战指南》笔误及改进记录

近日笔者出了一本新书——《RabbitMQ实战指南》,里面的校稿都是自己独自完成的,一共进行了15边,但还是会有漏网之鱼。本篇博文用来记录现在发现的一些笔误,一是给购书的朋友一个参考,以防被笔误所迷惑;二是提供一个记录笔误的地方,方便再次印刷修改之用,这样也能进一步的完善这一本书。小伙伴们也可以提供一些新发现的笔误之处,这里都会记录,为了鼓励大家,发现笔误最多的几位小伙伴可以免费获得下次印刷的新书。...
阅读(272) 评论(4)

[置顶] kafka数据可靠性深度解读

1 概述Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark等都支持与Kafka集成。Kafka凭借着自身的优势,越来越受到互联网企业的青睐,唯品会也采用Kafka作为其内部核心消息引擎之一。Kafka作为一个商业...
阅读(10218) 评论(39)

[置顶] RabbitMQ之消息确认机制(事务+Confirm)

概述在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失的话,...
阅读(12014) 评论(8)

[置顶] 消息中间件(Kafka/RabbitMQ)收录集

本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能。 这里会持续收录相关知识,包括安装、部署、使用示例、监控、运维、原理等。 所有新撰写的与中间件有关的文章都会收录与此,注意保存本文链接。Last Update Time: 2017-11-15 18:46 Update Content:...
阅读(2044) 评论(12)

[置顶] 数据库相关中间件收录集

数据库中间件这里主要介绍互联网行业内有关数据库的相关中间件。数据库相关平台主要解决以下三个方面的问题: 为海量前台数据提供高性能、大容量、高可用性的访问 为数据变更的消费提供准实时的保障 高效的异地数据同步 应用层通过分表分库中间件访问数据库,包括读操作(Select)和写操作(update, insert和delete等,DDL, DCL)。写操作会在数据库上产生变更记录,MySQL的变更记录叫b...
阅读(8194) 评论(0)

[置顶] 攻破JAVA NIO技术壁垒

现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。再者,现在互联网的面试中上点level的都会涉及一下NIO或者AIO的问题(AIO下次再讲述,本篇主要讲述NIO),掌握好NIO也能帮助你获得一份较好的offer。 驱使博主写这篇文章的关键是网上关于NIO的文章并不是很多...
阅读(20142) 评论(18)

[置顶] Spring知识点提炼

1. Spring框架的作用 - 轻量:Spring是轻量级的,基本的版本大小为2MB - 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 - 面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 - 容器:Spring包含并管理应用中对象的生命周期和配置 - MVC框架: Spring-MVC - 事...
阅读(15833) 评论(4)

[置顶] 设计模式:开篇

最近在整理设计模式这个系列,这里做一下全局的概括。本系列的文章对于初识设计模式的朋友也许不太适应,对于那些了解过或者使用过设计模式的人比较适应,本系列的文章对设计模式的关键点做了一个终结性的陈述,也列举了相关例子方便理解和记忆,但是并没有循序渐进的讲解。譬如,在适配器模式中,博主阐述了适配器的定义、类图、案例等,但是并没有阐述类似“比如你买了一个港版的iphone6s,但是大陆的插座不并适合,需要一...
阅读(3449) 评论(2)

[置顶] Java集合框架:总结

最近博主对于Java集合框架这个系列做了一个整理,主要包括: Map系:HashMap, LinkedHashMap, TreeMap, WeakHashMap, EnumMap; List系:ArrayList, LinkedList, Vector, Stack; Set系:HashSet, LinkedHashSet, TreeSet; 工具类:Collections,Arrays 不过并没有...
阅读(2745) 评论(9)

Kafka监控架构设计

目前的Kafka监控产品有很多,比如Kafka Manager、 Kafka Monitor、KafkaOffsetMonitor、Kafka Web Console、Burrow等,都有各自的优缺点,就个人而言用的最多的还是Kafka Manager,不过这些并不是十分的完美。如果有条件,自定义实现一套符合自身公司业务特色与发展的监控系统尤为重要。本文主要讲述笔者个人对Kafka监控架构的认知与想...
阅读(178) 评论(0)

Kafka分区分配计算(分区器Partitions)

KafkaProducer在调用send方法发送消息至broker的过程中,首先是经过拦截器Inteceptors处理,然后是经过序列化Serializer处理,之后就到了Partitions阶段,即分区分配计算阶段。在某些应用场景下,业务逻辑需要控制每条消息落到合适的分区中,有些情形下则只要根据默认的分配规则即可。在KafkaProducer计算分配时,首先根据的是ProducerRecord中的...
阅读(256) 评论(0)

Kafka消息序列化和反序列化(下)

接上一篇:Kafka消息序列化和反序列化(上)。有序列化就会有反序列化,反序列化的操作是在Kafka Consumer中完成的,使用起来只需要配置一下key.deserializer和value.deseriaizer。对应上面自定义的Company类型的Deserializer就需要实现org.apache.kafka.common.serialization.Deserializer接口,这个接...
阅读(258) 评论(0)

Kafka消息序列化和反序列化(上)

Kafka Producer在发送消息时必须配置的参数为:bootstrap.servers、key.serializer、value.serializer。序列化操作是在拦截器(Interceptor)执行之后并且在分配分区(partitions)之前执行的。首先我们通过一段示例代码来看下普通情况下Kafka Producer如何编写:public class ProducerJavaDemo {...
阅读(286) 评论(0)

Kafka Producer拦截器

Kafka中的拦截器(Interceptor)是0.10.x.x版本引入的一个功能,一共有两种:Kafka Producer端的拦截器和Kafka Consumer端的拦截器。本篇主要讲述的是Kafka Producer端的拦截器,它主要用来对消息进行拦截或者修改,也可以用于Producer的Callback回调之前进行相应的预处理。使用Kafka Producer端的拦截器非常简单,主要是实现Pr...
阅读(317) 评论(0)

Kafka源码环境搭建

本文主要讲述的是如何搭建Kafka的源码环境,主要针对的Windows操作系统下IntelliJ IDEA编译器,其余操作系统或者IDE可以类推。1.安装和配置JDK确认JDK版本至少为1.7,最好是1.8及以上。使用java -version命令来查看当前JDK的版本,示例如下:C:\Users\hidden> java -version java version "1.8.0_112" Java...
阅读(444) 评论(0)

RabbitMQ管理(5)——集群管理

rabbitmqctl join_cluster {cluster_node} [–ram] 将节点加入指定集群中。在这个命令执行前需要停止RabbitMQ应用并重置节点。更多详细内容请参考RabbitMQ安装。rabbitmqctl cluster_status 显示集群的状态。更多详细内容请参考RabbitMQ安装。rabbitmqctl change_cluster_node_type {...
阅读(428) 评论(0)

RabbitMQ管理(4)——应用管理

本文主要阐述应用与集群相关的一些操作管理命令,包括关闭、重置、开启服务,还有建立集群的一些信息。有关集群搭建更多的信息可以参考RabbitMQ的安装及集群搭建方法。rabbitmqctl stop [pid_file] 用于停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用。如果指定了pid_file,还需要等待指定进程的结束。其中pid_file是通过调用rabbitmq-s...
阅读(225) 评论(0)

RabbitMQ管理(3)——Web端管理

前面讲述的都是使用rabbitmqctl工具来管理RabbitMQ,有些时候你是否会觉得这种方式是不是不太友好?而且为能够运行rabbitmqctl工具,当前的用户需要拥有访问Erlang cookie的权限,由于服务器可能是以guest或者rabbit用户身份来运行的,因此你需要获得这些文件的访问权限,这样就引申出来一些权限管理的问题。RabbitMQ的开发团队也考虑到了这种情况,并且开发了Rab...
阅读(536) 评论(0)

RabbitMQ管理(2)——用户管理

在RabbitMQ中,用户是访问控制(Access Control)的基本单元,且单个用户可以跨越多个vhost进行授权。针对一至多个vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。 创建用户的命令为:rabbitmqctl add_user {username} {password}。其中username表示要创建的用户名称;password表示创建用户登录的密...
阅读(573) 评论(0)

RabbitMQ管理(1)——多租户与权限

每一个RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(virtual host),简称为vhost。每一个vhost本质上是一个独立的小型RabbitMQ服务器,拥有自己独立的队列、交换器以及绑定关系等待,并且它拥有自己独立的权限。vhost就像是虚拟机与物理服务器一样,它们在各个实例间提供逻辑上的分离,允许你为不同程序安全保密地运行数据,它既能将同一个RabbitMQ的中众多客...
阅读(548) 评论(0)

RabbitMQ之惰性队列(Lazy Queue)

RabbitMQ从3.6.0版本开始引入了惰性队列(Lazy Queue)的概念。惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消息造成堆积时,惰性队列就很有必要了。默认情况下,当生产者将消息发送到Ra...
阅读(655) 评论(1)

RabbitMQ之监控(3)

确保RabbitMQ能够健康的运行还不足以让人放松警惕。考虑这样一种情况:小明为小张创建了一个队列并绑定了一个交换器,之后某人由于疏忽而阴差阳错的删除了这个队列而无人得知,最后小张在使用这个队列的时候就会报出“NOT FOUND”的错误。如果这些在测试环境中发生,那么还可以弥补。如果在实际生产环境中,如果误删了一个队列,那必然会造成不可估计的影响。此时业务方如果正在使用这个队列,正常情况下会立刻报出...
阅读(579) 评论(0)

RabbitMQ之监控(2)

本文接RabbitMQ之监控(1)。不管是通过HTTP API接口还是客户端,获取的数据都是为了提供监控视图之用,不过这一切都基于RabbitMQ服务运行完好的情况下。虽然可以通过某些其他工具或方法来检测RabbitMQ进程是否在运行(如:ps aux | grep rabbitmq),或者5672端口是否开启(如:telnet xxx.xxx.xxx.xxx 5672),但是这样依旧不能真正的评判...
阅读(1129) 评论(2)

RabbitMQ负载均衡(4)——LVS

负载均衡的方案有很多,适合RabbitMQ使用的处理HAProxy之外还有LVS。LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.6.32内核以前,使用LVS时必须要重新编译内核以支持LVS功能模...
阅读(703) 评论(0)

RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡

试想下如果前面配置的HAProxy主机192.168.0.9突然宕机或者网卡失效,那么虽然RabbitMQ集群没有任何故障,但是对于外界的客户端来说所有的连接都会被断开,结果将是灾难性的。确保负载均衡服务的可靠性同样显得十分的重要。这里就引入Keepalived工具,它能够通过自身健康检查、资源接管功能做高可用(双机热备),实现故障转移。Keepalived采用VRRP(Virtual Router...
阅读(1123) 评论(6)

RabbitMQ负载均衡(2)——HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。安装HAProxy首先需要去HAProxy的官网下载HAProxy的安装文件,目前最新的版本为...
阅读(874) 评论(6)

RabbitMQ负载均衡(1)

面对大量业务访问、高并发请求可以使用高性能的服务器来提升RabbitMQ服务的负载能力。当单机容量达到极限时,我们可以采取集群的策略来对负载能力做进一步的提升,但是这里还存在一个负载不均衡的问题。试想如果一个集群中有3个节点,那么所有的客户端都与其中的单个节点node1建立TCP连接,那么node1的网络负载必然会大大增加而显得难以承受,其他节点又由于没有那么多的负载而造成硬件资源的浪费,所以负载均...
阅读(926) 评论(0)

RabbitMQ消息追踪之rabbitmq_tracing

rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的流入流出情况。rabbitmq_tracing插件同样会对流入流出的消息做封装,然后将封装后的消息日志存入相应的trace文件之中。可以使用rabbitmq-plugins enable rabbitmq_tracing命令来启动rabbitmq_tracing插件。[root@node3 o...
阅读(1365) 评论(0)
221条 共12页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:937817次
    • 积分:10919
    • 等级:
    • 排名:第1659名
    • 原创:203篇
    • 转载:15篇
    • 译文:3篇
    • 评论:728条
    最新资讯
    内推简历请砸:
    zhuzhonghua.ideal@qq.com。

    Kafka/RabbitMQ交流可以加微信:hiddenzzh。

    欢迎支持博主新著《RabbitMQ实战指南》

    微信公众号:Kafka技术专栏
    最新评论
    博客专栏