- 博客(107)
- 收藏
- 关注
转载 Kafka学习笔记(7)----Kafka使用Cosumer接收消息
1. 什么是KafkaConsumer? 应用程序使用KafkaConsul'le 「向Kafka 订阅主题,并从订阅的主题上接收消息。Kafka的消息读取不同于从其他消息系统读取数据,它涉及了一些独特的概念和想法。 1.1 消费者和消费者群组 单个的消费者就跟前面的消息系统的消费者一样,创建一个消费者对象,然后订阅一个主题并开始接受消息,然后做自己的业务逻辑,但是Ka...
2018-12-03 23:17:00
415
转载 Kafka学习笔记(6)----Kafka使用Producer发送消息
1. Kafka的Producer 不论将kafka作为什么样的用途,都少不了的向Broker发送数据或接受数据,Producer就是用于向Kafka发送数据。如下: 2. 添加依赖 pom.xml文件如下: <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka --> ...
2018-11-28 23:54:00
571
转载 Kafka学习笔记(5)----Kafka的Consumer
1. Pull vs Push Producer主动的通过push将消息发布到Broker上,Consumer通过Pull的的方式从Broker消息消息。 通过Push的方式由于是一有消息就推到Broker,所以极大的保证了消息实时性,但是在某些情况下,可能由于Consumer网络,或是其他原因倒是消费速度低,此时就可能会导致Consumer堆积大量的消息,甚至在极端情况下会...
2018-11-27 22:50:00
289
转载 Kafka学习笔记(4)----Kafka的Leader Election
1. Zookeeper的基本操作 zookeeper中的节点可以持久化/有序的两个维度分为四种类型: PERSIST:持久化无序(保存在磁盘中) PERSIST_SEQUENTIAL:持久化有序递增 EPHEMERAL:非持久化的无序的,保存在内存中,当客户端关闭后消失。 EPHEMERAL_SEQUENTIAL:非持久有序递增,保存在内存中,当客户端关闭...
2018-11-26 23:33:00
309
转载 Kafka学习笔记(3)----Kafka的数据复制(Replica)与Failover
1. CAP理论 1.1 Cosistency(一致性) 通过某个节点的写操作结果对后面通过其他节点的读操作可见。 如果更新数据后,并发访问的情况下可立即感知该更新,称为强一致性 如果允许之后部分或全部感知不到该更新,称为弱一致性。 若在之后的一段时间(通常该时间不是固定的)后,一定可以感知到该更新,称为最终一致性。 1.2 Availability(...
2018-11-21 23:07:00
338
转载 Kafka学习笔记(2)----Kafka的架构
1. 架构图 一个Kafka集群中包含若干个Broker(消息实例),Kafka支持Broker横向扩展,Broker越多,吞吐量越大,同时也包含了若干个Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等)和若干个Consumer(消费者)以及一个zookeeper集群,Kafka通过Zookeeper管理集群配置...
2018-11-21 17:22:00
125
转载 Kafka学习笔记(1)----Kafka的简介和Linux下单机安装
1. Kafka简介 Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者为Consumer,此外kafka集群有多个kafka实例...
2018-11-19 22:08:00
144
转载 RabbitMQ学习笔记(6)----RabbitMQ 持久化和非持久化
持久化:将交换机或队列数据保存到磁盘,服务器宕机或重启之后依然存在。非持久化:将交换机或队列的数据保存到内存中,服务器宕机或重启之后数据将不存在。在RabbitMQ中也提供了持久化和非持久化方式。实现方式为将durable设置为false即可。在配置文件中配置交换机或队列时配置durable="false"即可,配置方式如下: <!--声明fanout的交换机-...
2018-11-19 16:38:00
300
转载 RabbitMQ学习笔记(5)----RabbitMQ整合Spring
在Spring AMQP项目中Spring也提供了对RabbitMQ的支持,这里在之前学习SpringBoot的时候也整合过,但是今天这里使用的Spring的xml配置来整个rabbit.Spring AMQP项目地址:https://spring.io/projects/spring-amqp;下面来看看使用方式。1. 引入依赖pom文件如下:<?xm...
2018-11-19 16:23:00
233
转载 RabbitMQ学习笔记(4)----RabbitMQ Exchange(交换机)的使用
1.fanout模式1.1 Publish/Subscribe(发布/订阅)结构图 上图表示一个消费者消费消息之后,不讲消息直接存储到队列,而是使用两个消费者各自声明一个队列,将各自的对应的队列与交换机绑定。这样每个消费者都读取的是自身所对应的队列的所有消息,大达到了一个生产者生产消息,所有消费者都能消费的目的。 将交换机类型设置为fanout即可实现Pu...
2018-11-16 17:34:00
163
转载 RabbitMQ学习笔记(3)----RabbitMQ Worker的使用
1. Woker队列结构图 这里表示一个生产者生产了消息发送到队列中,但是确有两个消费者在消费同一个队列中的消息。2. 创建一个生产者 Producer如下:package com.wangx.rabbitmq.worker;import com.rabbitmq.client.Channel;import com.rabbitmq.clien...
2018-11-16 15:18:00
233
转载 RabbitMQ学习笔记(2)----RabbitMQ简单队列(Hello World)的使用
1. 简单队列结构图 2. 引入依赖 pom.xml文件 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.5.0&...
2018-11-16 12:03:00
133
转载 RabbitMQ学习笔记(1)----RabbitMQ简介与安装
·1. 什么是RabbitMQ? RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。 而AMQP协议则是指:即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息...
2018-11-15 22:37:00
157
转载 RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全局搜索9876,将所有使用9876端口的地方改为9877。 在终端打开,使用:mvn -Prelease-all -DskipTests clean install命令打包,打包...
2018-11-15 00:07:00
367
转载 RocketMQ学习笔记(15)----RocketMQ的消息模式
在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式。 同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式。1. 集群消费模式 跟AciiveMQ一样,当存在多个消费者时,消息通过一定负载均衡策略,将消息分发到多个consumer中。 如图: 在RockeMQ中,通过ConsumeGro...
2018-11-14 18:02:00
179
转载 RocketMQ学习笔记(14)----RocketMQ的去重策略
1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息。 只有以上两个条件都满足情况下,才能认为消息是“Exactly Only Once”,而要实现以上两点,在分布式系统环 境下,不可避免要产生巨大的开销。所以RocketMQ 为了追求高性能,并不保证此特性,要求在业务上进行去重,也就...
2018-11-14 17:11:00
302
转载 RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试
1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败。这种消息失败重试我们可以手动设置发送失败重试的次数。 Consumer端重试: Consumer消费消息失败后,要提供一种重试机制,令消息再消费一次,Consumer消费消息失败通常可以认为有以下几种情况 1...
2018-11-14 16:11:00
242
转载 RocketMQ学习笔记(12)----RocketMQ的Consumer API简介
由于消息的消费方式有两种,所以两种方式也有不同的API:1. PushConsumer的配置 1.consumerGroup: 默认值为DEFAULT_CONSUMER,Consumer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组 2.messageModel: 消息模型,默认值为CLUSTERING,支持集群消费...
2018-11-14 14:36:00
254
转载 RocketMQ学习笔记(11)----RocketMQ的PushConsumer和PullConsumer
1. PushConsumer 推,Broker主动向Consumer推消息,它Consumer的一种,应用通常向对象注册一个Listener接口,一旦接收到消息,Consumer对象立刻回调Linstener接口方法。Push方式里,consumer把轮询过程封装了,并注册MessageListener监听器,取到消息后,唤醒MessageListener的consumeMess...
2018-11-14 10:32:00
575
转载 RocketMQ学习笔记(10)----RocketMQ的Producer 事务消息使用
1. 事务消息原理图 RocketMQ除了支持普通消息,顺序消息之外,还支持了事务消息。1. 什么是分布式事务? 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操...
2018-11-13 23:26:00
266
转载 RocketMQ学习笔记(9)----RocketMQ的Producer 顺序消息
1. 顺序消息原理图2. 什么是顺序消息? 消费消息的顺序要求同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,并且发送给到同一队列,这样Consumer就可以按照Producer发送的顺序去消费消息。 2.1 普通顺序消息 正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Brok...
2018-11-13 22:18:00
538
转载 RocketMQ学习笔记(8)----RocketMQ的Producer API简介
在RocketMQ中提供了三种发送消息的模式: 1.NormalProducer(普通) 2.OrderProducer(顺序) 3.TransactionProducer(事务)下面来介绍一下producer中的各个API的使用: 1. producerGroup:Producer组名, 默认值为DEFAULT_PRODUCER,多个Producer如果属于...
2018-11-13 20:58:00
289
转载 RocketMQ学习笔记(7)----RocketMQ的整体架构
1. RocketMQ主要的9个模块,如图: 2. 模块介绍 1. rocketmq-common:通用的常量枚举,基类方法或者数据结构,按描述的目标来分包,通俗易懂。报名有admin,consumer,filter,hook,message等。 2. rocketmq-remoting:用Netty写的客户端和服务端,fastjson做的序列化,自定义二进制协议...
2018-11-13 16:37:00
184
转载 RocketMQ学习笔记(6)----RocketMQ的Client的使用 Producer/Consumer
1. 添加依赖 pom.xml如下: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.3.1<...
2018-11-12 22:42:00
546
转载 RocketMQ学习笔记(5)----RocketMQ监控平台rocketmq-console-ng的搭建
1. 下载rocketmq-console-ng 官网地址:https://github.com/apache/rocketmq-externals 拉下来之后,使用idea打开rocketmq-console,在application.properties配置文件中修改rocketmq.config.namesrvAddr(前面集群环境下的nameserver的ip...
2018-11-12 20:05:00
381
转载 RocketMQ学习笔记(4)----RocketMQ搭建双Master集群
前面已经学习了RockeMQ的四种集群方式,接下来就来搭建一个双Master(2m)的集群环境。1. 双Master服务器环境序号 ip 用户名 密码 角色 模式(1) 47.105.145.123 root nameServer1,brokerServer1 Master1(2) ...
2018-11-11 18:02:00
165
转载 RocketMQ学习笔记(3)----RocketMQ物理结构和逻辑部署结构
1. RocketMQ的物理结构 RecketMQ网络部署的特点: Name Server是一个几乎无状态特点,可集群部署,节点之间无任何信息同步的(相对于zookeeper是较为轻量级的)。 Broker部署相对比较复杂的,Broker分为Master和Slave,一个Master可以对应多个Slave,但是多个Slave只能对应一个Master,Master...
2018-11-08 21:12:00
166
转载 RocketMQ学习笔记(1)----RocketMQ的简介
1. 什么是RocketMQ? 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 Producer、Consumer、队列都可以分布式。 Producer 吐一些队列轮流収送消息,队列集合称为Topic,Consumer 如果做广播消费,则一个consumer 实例消费返个Topic 对应的所有队列,如果做集群消费,则多个Consumer...
2018-11-08 16:57:00
197
转载 RocketMQ学习笔记(2)----Broker的集群四种方式
RocketMQ推荐了几种Broker集群方式,这里的Slave不可写,但可读,类似于Mysql主备方式1. 单个Master 这是一种风险比较大的集群方式,因为一旦Borker重启或宕机期间,将会导致这个服务不可用,因此是不建议线上环境去使用的。2. 多个Master 一个集群全部都是Master,没有Slave,它的优点和缺点如下: 优点:配置简单,单个Ma...
2018-11-07 21:15:00
300
转载 Docker学习笔记(1)----认识Docker
1. 什么Docker? Docker是一个能把开发的应用程序自动部署到容器的引擎,它使用go语言编写的开源引擎,它在github上面个的地址为:https://github.com/docker/docker. 在2013年初由dotCloud开发的基于Apache 2.0 开源授权协发行的引擎。提供一个轻量高效的应用测试,部署环境。2. Docker的目标 1....
2018-11-07 10:21:00
67
转载 ActiveMQ学习笔记(22)----ActiveMQ的优化和使用建议
1. 什么时候使用ActiveMQ 1. 异步通信 2. 一对多通信 3. 做个系统的集成,同构,异构 4. 作为RPC的替代 5. 多个应用相互解耦 6. 作为事件驱动架构的幕后支撑 7. 为了提高性能的可伸缩性2. ActiveMQ的优化 2.1 ActiveMQ的性能依赖的因素 2.2 优化建议 ...
2018-11-06 20:55:00
88
转载 ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat
1. 监控和管理Broker Web Console 方式:直接访问ActiveMQ的管理页面:http://localhost:8161/admin,默认的用户名和密码是admin/admin。具体配置在conf/jetty.xml里面,这就是我们前面例子中一直使用的方式。 Hawtio-web Management Console方式: 默认用户名密码是admin/...
2018-11-06 20:21:00
229
转载 ActiveMQ学习笔记(20)----Consumer高级特性(二)
1. Message Selectors JMS Selectors 用在获取消息的时候,可以基于消息属性和Xpath语法对消息进行过滤。JMS Selectors有SQL92语义定义。以下是个Selectors的例子: consumer = session.createConsumer(destination, "JMSType='car' AND weight > ...
2018-11-06 16:30:00
223
转载 ActiveMQ学习笔记(19)----Consumer高级特性(一)
1. Exclusive Consumer 独有消费者:Queue中的消息是按照顺序被分发到consumer的,然而,当你有多个consumers同时从相同的queue中提取消息时,你将失去这个保证。因为这些消息是被多个线程并发的处理。有的时候,保证消息按照顺序处理是很重要的。例如:你可能不希望在插入订单操作结束之前执行更新这个订单的操作。 ActiveMQ从4.x版本开始支...
2018-11-06 11:57:00
287
转载 ActiveMQ学习笔记(18)----Message高级特性(二)
1. Blob Message 有些时候,我们需要传递Blob(Binary Large Objects)消息,在5.14之前,(5.12和5.13需要在jetty.xml中手动开启)可以按照如下的方式配置使用fileserver: 配置BLOB Tansfer Policy,可以在发送方的连接URI上设置,如:tcp://localhost:61616?jms.bl...
2018-11-05 22:10:00
207
转载 ActiveMQ学习笔记(17)----Message高级特性(一)
1. Messaage Properties ActiveMQ支持很多消息属性,具体可以参考 http://activemq.apache.org/activemq-message-properties.html 常见得一些属性说明: 1. queue得消息默认是持久化得 2. 消息得优先级默认是4. 3. 消息发送时设置了时间戳。 4. 消息的...
2018-11-05 16:50:00
378
转载 ActiveMQ学习笔记(16)----Message Dispatch高级特性(二)
1. Optimized Acknowledgetment ActiveMQ缺省支持批量确认消息,由于批量确认会提高性能,如果希望在应用程序中禁止经过优化的确认方式,可以采用以下几种方式: 1. 在Connection的URI上启用Optimized AcknowledgementsActiveMQConnectionFactory factory = new A...
2018-11-05 10:25:00
131
转载 ActiveMQ学习笔记(15)----Message Dispatch高级特性(一)
1. Message Cursors 1.1 概述 ActiveMQ发送持久化消息的典型的厝里方式是:当消息的消费者准备就绪时,消息发送系统把存储的消息按批次发送给消费者,在发送完一个批次的消息后,指针的标记位置指向下一个批次的待发消息的位置,进行后续的发送操作。这是一种 比较健壮和灵活的消息发送方式,但是大多数的情况下,消息的消费者不一定一直都处于这种理想的活跃状态。 ...
2018-11-02 17:53:00
287
转载 ActiveMQ学习笔记(14)----Destination高级特性(二)
1. Visual Destinations 1.1 概述 虚拟Destination用来创建逻辑Destinations,客户端可以通过它来产生和消费消息,它会把消息映射到物理Destinations。ActiveMQ支持两种方式: 1. 虚拟主题(Virtual Topics) 2. 组合Destinations (Composite Destinations...
2018-11-02 16:32:00
167
转载 ActiveMQ学习笔记(13)----Destination高级特性(一)
1. Wildcards 1. Wildcards用来支持名字分层体系,它不是JMS规范的一部分,是ActiveMQ的扩展。 ActiveMQ支持一下三种wildcards: 1. ".": 用于作为匹配路径上名字间的分隔符 2. “*": 用于匹配路径上的任何名字(不递归) 3. ”>“: 用于递归的匹配任何以这个名字开始的desti...
2018-11-02 12:06:00
241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人