首页 » PHP教程 » 设置装备摆设appache支撑php技巧_一文带你深入解读面向做事的分布式架构常见消息中心件产品介绍

设置装备摆设appache支撑php技巧_一文带你深入解读面向做事的分布式架构常见消息中心件产品介绍

访客 2024-12-17 0

扫一扫用手机浏览

文章目录 [+]

本节将对市情上常见的中间件产品做详细的先容。

Apache ActiveMQ

Apache ActiveMQ支持多种措辞客户端(Java、C、C++、C#、Ruby等),支持多种协议(HTTP、TCP、SSL、NIO、UDP等)以及良好的Spring支持。

设置装备摆设appache支撑php技巧_一文带你深入解读面向做事的分布式架构常见消息中心件产品介绍

1.Apache ActiveMQ简介

设置装备摆设appache支撑php技巧_一文带你深入解读面向做事的分布式架构常见消息中心件产品介绍
(图片来自网络侵删)

Apache ActiveMQ是Apache出品的、最盛行的、能力强劲的开源总线以及支持企业集成模式的做事器。
ActiveMQ实行速率快,并且支持跨措辞的客户端和协议。
ActiveMQ是一个完备支持JMS 1.1和JaveEE 1.4规范的JMS Provider实现。
JMS在当今的Java EE运用中间仍旧扮演着分外的角色。

2.ActiveMQ特性

ActiveMQ包含以下特性。

·支持跨措辞和协议来编写客户端。
措辞包括Java、C、C++、C#、Ruby、Perl、Python、PHP等。
个中支持的协议如下。

·OpenWire协议:支持Java、C、C++、C#等高性能客户端。

·Stomp协议:支持利用C、Ruby、Perl、Python、PHP、ActionScript/Flash、Smalltalk等编写客户端。
·AMQP v1.0。

·MQTT v3.1用于链接IoT环境。

·完备支持JMS客户端和Message Broker的企业集成模式。

·支持高等特性,诸如Message Groups、Virtual Destinations、Wildcards和Composite Destinations。

·完备支持JMS 1.1和Java EE 1.4规范的瞬态(Transient)、持久化、XA以及事务。

·轻松集成至Spring的运用中,并可以利用Spring的XML配置机制。

·通过了常见Java EE做事器(如TomEE、Geronimo、JBoss、GlassFish和WebLogic)的测试,个中通过JCA 1.5资源适配器的配置,可以让ActiveMQ自动支配到任何兼容Java EE 1.4的商业做事器上。

·支持多种插件化的传送协议——in-VM、TCP、SSL、NIO、UDP、多播、JGroups和JXTA。

·支持通过高性能的Journal来让JDBC供应高速的持久化。

·从设计上担保了高性能的集群、客户端/做事器模式、点对点通信。

·支持RESTful API来供应与技能无关、措辞无关的基于Web的API通信。

·支持Ajax。

·支持CXF和Axis,因此ActiveMQ可以很随意马虎地为这两种Web做事栈供应可靠的通报。

·可以很随意马虎地调用内嵌JMS provider进行单元测试。

RabbitMQ

RabbitMQ用Erlang写成,以高性能、健壮以及可伸缩性著称。

1.RabbitMQ简介

RabbitMQ是由LShift供应的一个AMQP(Advanced MessageQueuing Protocol)的开源实现,用以高性能、健壮以及可伸缩性著称的Erlang写成(因此也继续了这些优点)。

须要把稳的是,由于RabbitMQ是运行在Erlang环境中的,以是要确保在RabbitMQ安装前先安装好Erlang。

2.RabbitMQ特点

RabbitMQ具有以下特点。

·可靠:RabbitMQ供应了多种功能,让我们可以权衡性能与可靠性,包括持久性、传输确认、发布者证明以及高可用性。

·灵巧的路由:在到达行列步队前会通过exchange(交流机)进行路由。
RabbitMQ将几个内置的exchange类型作为范例的路由逻辑。
对付更繁芜的路由可以绑定多个exchange,乃至写自己的exchange类型作为插件。

·集群:在本地网络上多个RabbitMQ做事器可以聚拢一起,形成一个单一逻辑broker。

·联邦(Federation):对付须要更加疏松和许可比集群做事器更不可靠的连接,RabbitMQ供应了联邦模型(Federation Model)。

·高可用的行列步队:行列步队可以在多台打算机集群中配置为镜像,确保纵然在发生硬件故障的情形下,你的信息仍旧是安全的。

·多协议:支持在各种通报协议中传输。
比如AMQP 0-9-1、STOMP、MQTT、AMQP 1.0、HTTP等。

·多样的客户端:包括了险些你能想到的任何一种措辞的RabbitMQ客户端,例如Java/Spring、.NET、Ruby、Python、PHP、Objective-C/Swift、Node.js、C/C++、Go、Erlang、Haskell、OCaml等。
·大略易用的管理界面:基于浏览器的Web管理界面,可以监视和掌握代理的每一个方面。

·跟踪:支持跟踪,方便查找问题。

·插件系统:支持多种插件,以及可以编写自己的插件。

·商业支持:供应商业支持、培训、咨询。

Apache RocketMQ

当市情优势行的开源项目无法知足自身业务发展的须要时,企业将不得不走上自研道路。
RocketMQ的涌现也是如此。
RocketMQ出身于阿里巴巴,如今已在环球被广泛采取。

2016年11月,阿里巴巴将RocketMQ捐赠给了Apache基金会进行孵化。
从此,RocketMQ“走出国门”,成了更加国际化的一款中间件产品。

1.RocketMQ简介

RocketMQ是阿里巴巴出品的一款低延迟、可靠、可扩展、易于利用的面向的中间件,支撑着阿里巴巴集团弘大的业务增长。

RocketMQ是基于MetaQ的一个开源分支,险些重写了MetaQ所有的核心组件,可以说是MetaQ的下一代产品。
RocketMQ同时也是阿里云的ONS云做事的核心组件,每天可处理上千亿条,做事于阿里内部上千个运用,顺利通过了淘宝、天猫“双11”等大匆匆磨练。

RocketMQ供应了多种功能。

·支持Pub/Sub和P2P模型。

·在同一个行列步队中具有可靠的FIFO和严格的通信顺序。

·长pull queue模型,也支持push消费办法。

·在单个行列步队中具备堆积上亿条的能力。
·覆盖多种协议,如JMS、MQTT、HTTP2等。

·每个至少投递一次的通报语义(Message DeliverySemantics)来担保分布式支配架构高可用。

·支持Docker镜像来进行隔离测试和云隔离集群。

·供应用于配置、丈量和监控的功能丰富的管理界面。

·全链路跟踪。

·生产者事务机制,使得生产者和本地数据库事务能在一个原子操作里面进行处理。

·调度交付,类似JMS 2规范的延迟交付。

2.RocketMQ物理支配构造

RocketMQ物理支配构造如图7-1所示。

图7-1 RocketMQ物理支配构造

RocketMQ网络支配特点如下。

·Name Server是一个险些无状态节点,可集群支配,节点之间无任何信息同步。

·Broker支配相对繁芜,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。
Master与Slave的对应关系通过指定相同的BrokerName、不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。
Master也可以支配多个。
每个Broker与Name Server集群中的所有节点建立长连接,定时注册Topic信息到所有Name Server。

·Producer与Name Server集群中的个中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息,并向供应Topic做事的Master建立长连接,并且定时向Master发送心跳。
Producer完备无状态,可集群支配。

·Consumer与Name Server集群中的一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息,并向供应Topic做事的Master、Slave建立长连接,并且定时向Master、Slave发送心跳。

Consumer既可以从Master订阅,也可以从Slave订阅,订阅规则由Broker配置决定。

3.RocketMQ逻辑支配构造

RocketMQ逻辑支配构造如图7-2所示。

图7-2 RocketMQ逻辑支配构造

·Producer Group:用来表示一个发送的运用。
一个ProducerGroup下包含多个Producer实例,可以是多台机器,也可以是一台机器的多个进程,或者是一个进程中的多个Producer工具。
一个Producer Group可以发送多个Topic,Producer Group的浸染如下。

·标识一类Producer。

·可以通过运维工具查询这个发送的运用下有多个Producer实例。

·发送分布式事务时,如果Producer中途意外宕机,Broker会主动回调Producer Group内的任意一台机器来确认事务状态。

·Consumer Group:用来表示一个消费的运用。
一个ConsumerGroup下包含多个Consumer实例,可以是多台机器,也可以是多个进程,或者是一个进程的多个Consumer工具。
一个Consumer Group下的多个Consumer以均摊办法消费信息,如果设置为广播办法,那么这个Consumer Group下的每个实例都消费全部数据。
须要把稳的是,同一个Consumer Group中的Consumer实例必须有相同的topic subscription。
可以说,Consumer Group的观点,变相地实现了领域著名的点对点和广播通信模式。

本文给大家讲解的内容是分布式系统核心:面向做事的分布式架构,常见中间件产品先容下篇文章给大家讲解的是分布式系统核心:面向的分布式架构,通信常用模式;以为文章不错的朋友可以转发此文关注小编;感谢大家的支持!
标签:

相关文章