rocketmq官方中文文档.pdf

所需积分/C币:40 2017-07-24 10:20:40 1.61MB PDF

rocketmq官方中文文档.pdf
项目开源主页:htts:/ github. com/alibaba/ RocketMQ 目录 1前言 ·音量 2产品发展历史… 3专业术语 消息中间件需要解决哪些问题? Publish/Subscribe............ 4.2 Message Priority………… 4.3 Message order… 445 4.4 Message Filter. 4.5 Message Persistence…………………… 46 Message reliablity 4。看。看 47 Low Latency Messaging. 48 At least once Exactly Only Or 垂。香。;d。。p;d。 410 Broker的 Buffer满了怎么办?.. 411回溯消费.…… 412消息堆积……… 413分布式事务… 14定时消息… 415消息重试 5 RocketMQ Overview........................... 0 RocketMQ是什么?… 52 RocketMQ物理部署结构…… 53 RocketMO逻辑部署结构…. 12 6 RocketMQ存储特点… 零拷贝原理…13 62文件系统… 数据存储结构 项目开源主页:htts:/ github. com/alibaba/ RocketMQ 存储目录结构 5 数据可靠性… 7 RocketMQ关键特性…… 7.1 单机支持1万以上持久化队列… 16 刷盘策略 18 721异步刷盘 垂看看。。b中垂看。e曲申d。。。垂看音普番看·非鲁垂垂看垂 p看看·。。p音·看。垂。音。香看。。自鲁垂看。 72.2同步刷盘 .19 73 消息查询… 731按照 Message ld查询消息…… 20 732按照 Message Key查询消息 …20 4服务器消息过滤… 7.5 长轮询PuI ∴22 76顺序消息 ··.·········.····.·····.4 垂。垂 22 761顺序消息原理… 762顺序消息缺陷… 22 77 事务消息 78发送消息负载均衡. 79订阅消息负载均衡. 710单队列并行消费… 711发送定时消息 甲着号要 712消息消费失败,定时重试 713HA,同步双写异步复制 7.14单个M进程也能利用机器超大内存…… 2 715消息堆积问题解决办法 项目开源主页:htts:/ github. com/alibaba/ RocketMQ 8 RocketMQ消息过滤 81简单消息过滤… ·音量 82高级消息过滤…… 28 9 RocketMQ通信组件 9 91网络协议… 9.2 心跳处理 …30 93连接复用… 9.4 超时连接 10 RocketMQ服务发现( Name server) 客户端使用指南 31 客户端如何寻址 自定义客户端行为 …32 1121客户端AP形式 .················.···.B··· 2 1122客户端的公共配置 123 Producer配置…,, 124 PushConsumer配置…… 5 PullConsumer配置… 34 113 Message数据结构… 针对 Produ 11.32 Consumer 甲着号要 12 Broker使用指南…… 121 Broker配置参数… 35 12.2 Broker集群搭建.…… 。 123 Broker重启对客户端的影响 40 项目开源主页:htts:/ github. com/alibaba/ RocketMQ 13 Producer最佳实践 发送消息注意事项 40 13,2消息发送失败如何处理… 13.3选择 oneway形式发送…, 42 134发送顺序消息注意事项 14 Consumer最佳实践 42 141消费过程要做到幂等(即消费端去重) 42 2 消费失败处理方式 43 143消费速度慢处理方式……… 143.1提高消费并行度… …43 143.2批量方式消费 …………44 143.3跳过非重要消息 1434优化每条消息消费过程 垂垂。看d垂垂看垂p申看d。 5 144 消费打印日志 145利用服务器消息过滤,避免多余的消息传输 附录A参考文档、规范. 46 项目开源主页:https://github.com/alibaba/rocketmq 1前言 本文档旨在描述 RocketMQ的多个关键特性的实现原理,并对消息中间件遇到的各种问题进行总结,阐述 RocketMQ如何解决这些冋题。文中主要引用了JMS规范与 CORBA Notification规范,规范为我们设计系统指明了 方向,但是仍有不少问题规范没有提及,对于消息中间件又至关重要。 RocketMQ并不遵循任何规范,但是参考了 各种规范与同类产品的设计思想。 2产品发展历史 大约经历了三个主要版本迭代 Metaq( Metamorphosis )lx 由开源社区kime2008维护,开源社区非常活跃。 https:/github.com/killme2008/metamorphosis 二、 Meta2x 于2012年10月份上线,在淘宝内部被广泛使用。 三、 RocketMQ3X 基于公司内部开源共建原则, RocketER项只维护核心功能,且去除了所有其他运行时依赖,核心功能最 简化。每个BU的个性化需求都在 RocketMQ项目之上进行深度定制。 RocketMQ向其他BU提供的仅仅是 Jar包,例如要定制—个 Broker,那么只需要依赖 rocketing- broker这个jar包即可,可通过AP|进行交互 如果定制 client,则依赖 rocketmq-client这个jar包,对其提供的api进行再封装。 开源社区地址 https:/github.com/alibaba/rocketmq 在 RocketMQ项目基础上衍生的项目如下 ■com: taobao metal v30= RocketMC+淘宝个性化需求 为淘宝应用提供消息服务 项目开源主页:https://github.com/alibaba/rocketmq ■ com.alipay. zpullmsg v1。= RocketMQ+支付宝个性化需求 为支付宝应用提供消息服务 ■coma|baba.commonmqⅥ1.o=Notify+RocketMQ+B2B个性化需求 为B2B应用提供消息服务 3专业术语 ■ Producer 消息生产者,负责产生消息,一般由业务系统负责产生消息 ■ Consumer 消息消捷者,负责消费消息,一般是后台系统负责异步消费。 Push consumer Consumer的一种,应用通常向 Consumer对象注册一个 Listener接囗,一旦收到消息, Consumer对象立 刻回调 Listener接口方法 Pull consumer Consumer的一种,应用通常主动调用 Consumer的拉消息方法从 Broker拉消息,主动权由应用控制。 Pr。 ducer Group 一类 Producer的集合名称,这类 Producer通常发送一类消息,且发送逻辑一致。 Consumer Group 一类 Consumer的集合名称,这类 Consumer通常消费一类消息,且消费逻辑一致。 Broker 消息中转角色,负责存储消息,转发消息,一殷也称为 Server。在JMS规范中称为 Provider 广播消费 一条消息被多个 Consumer消费,即使这些 Consumer属于同一个 Consumer Group,消息也会被 Consumer Group中的每个 Consumer都消费一次广播消费中的 Consumer Group概念可以认为在消息划分方面无意 义。 在 CORBA Notification规范中,消费方式都属于广播消费。 在MS规范中,相当于 JMS publish /subscribe model 项目开源主页:https://github.com/alibaba/rocketmq 集群消费 一个〔 onsumer Group中的 Consumer实例平均分摊消费消息。例如某个 Topic有9条消息,其中一个 Consumer Group有3个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息。 在 CORBA Notification规范中,无此消费方式。 在JMS规范中, JMS point-to-point model与之类似,但是 RocketMQ的集群消费功能大等于PTP模型。 因为 RocketMQ单个 Consumer Group内的消费者类似于PTP但是一个 Topic/Queue可以被多个 Consumer Group 消费。 顺序消息 消费消息的顺序要同发送消息的顺序一致,在 RocketMC中,主要指的是局部顺序,即一类消息为满足顺 序性,必须 Producer单线程顺序发送,且发送到同一个队列,这样 Consumer就可以按照 Producer发送 的顺序去消费消息。 普通顺序消息 顺序消息的一种,正常情况下可以保证完全的顺序消息,但是一旦发生通信异常, Broker重启,由于队列 总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致。 如果业务能容忍在集群异常情况(如某个 Broker宕机或者重启)下,消息短暂的乱序,使用普通顺序方 式比较合适。 ■严格顺序消息 顺序消息的一种,无论正常异常情况都能保证顺序,但是牺牲了分布式 Failover特性,即 Broker集群中只 要有一台机器不可用,则整个集群都不可用,服务可用性大大降低。 如果服务器部署为同步双写模式,此缺陷可通过备机自动切换为主避免,不过仍然会存在几分钟的服务不 可用。(依赖同步双写,主备自动切换,自动切换功能目前还未实现) 目前已知的应用只有数据库 binlog同步强依赖严格顺序消息,其他应用绝大部分都可以容忍短暂乱序,推 荐使用普通的顺序消息。 Message Queue 项目开源主页:https://github.com/alibaba/rocketmq 在 RocketMQ中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限是指队列中的毎个存储 单元都是定长,访问其中的存储单元使用 Offset来访问, offset为 java long类型,64位,理论上在100 年内不会溢出,所以认为是长度无限,另外队列中只保存最近几夭的数据,之前的数据会按照过期时间来 删除。 也可以认为 Message Queue是一个长度无限的数组,ofet就是下标。 4消息中间件需要解决哪些问题? 本节阐述消息中间件通常需要解决哪些问题在解决这些问题当中会遇到什么困难 RocketMQ是否可以解决 规范中如何定义这些问题。 4.1 Publish/ Subscribe 发布订阅是消息中间件的最基本功能,也是相对于传统RPC通信而言。在此不再详述。 4.2 Message Priorit 规范中描述的优先级是指在一个消息队列中,每条消息都有不冋同的优先级,一般用整数来描述,优先级高的消 息先投递,如果消息完全在一个内存队列中,那么在投递前可以按照优先级排序,令优先级髙的先投递。 由于 RocketMQ所有消息都是持久化的,所以如果按照优先级来排序,开销会非常大,因此R。 cketMQ没有特 意支持消息优先级,但是可以通过变通的方式实现类似功能,即单独配置一个优先级高的队列,和一个普通优先级 的队列,将不同优先级发送到不同队列即可。 对于优先级问题,可以归纳为2类 n)只要达到优先级目的即可,不是严格意义上的优先级,通常将优先级划分为高、中、低,或者再多几个级 别。每个优先级可以用不同的 topIc表示,发消息时,指定不同的 topic来表示优先级,这种方式可以解决 绝大部分的优先级问题,但是对业务的优先级精确性做了妥协。 2)严格的优先级,优先级用整数表示,例如σ~65,这种优先级问题一般使用不同 topIc解决就非常不合

...展开详情

评论 下载该资源后可以进行评论 3

xjyr 这个是2015年1月份文档 不是最新的
2018-03-08
回复
落叶翩翩 文档简单易懂
2018-03-05
回复
yuexiahandao 很好,是官方的文档,应该是以前的
2017-09-20
回复
img
  • 分享王者

    成功上传51个资源即可获取

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源