首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

异步编程 - 14 异步、分布式、基于消息驱动的框架 Akka

---- Akka概述 Akka 是一个开源的并发、分布式、基于消息驱动的框架,用于构建高可伸缩性、可靠性和并发性强的应用程序。...以下是 Akka 框架的关键概念和特点: Actor 模型:Akka 的核心构建块是 Actor,它是一种轻量级并发原语。...Akka 提供了透明的消息传递,使得在分布式环境中发送消息就像在本地一样简单。 容错性:Akka 强调容错性,允许开发人员构建可靠的系统。...每个Actor有自己的地址,通过地址相互发送消息来通信,消息是异步传递的。 Actor模型允许构建分布式系统,不限于单个JVM内。...---- 小结 总的来说,Akka 是一个强大的框架,适用于构建高度并发、分布式、可伸缩和容错性强的应用程序。它在金融、社交媒体、在线游戏等领域得到广泛应用,是构建响应式系统的有力工具。

1.2K40

分布式消息队列

分布式消息队列’包含两个概念 一是‘消息队列’,二是‘分布式’ 那么就先看下消息队列的概念,和为什么需要分布式 消息队列的定义 “消息”指进程间传送的数据 “队列”是在消息的传输过程中保存消息的容器...,放入队列,短信发送模块从队列中获取消息进行处理 消息队列的好处 (1)提高系统响应速度 使用了消息队列,生产者一方,把消息往队列里一扔,就可以立马返回响应用户了,无需等待处理结果 (2)保证消息的传递...如果发送消息时接收者不可用,消息队列会保留消息,直到成功地传递它 (3)解耦 只要消息格式不变,即使接收者的接口、位置、或者配置改变,也不会给发送者带来任何改变 消息发送者无需知道消息接收者是谁...,使得系统设计更清晰 为什么需要分布式消息队列 (1)多系统协作需要分布式 例如消息队列中的数据需要在多个系统间共享,所以需要提供分布式通信机制、协同机制 (2)可靠 消息会被持久化到分布式存储中...,这样避免了单台机器存储的消息由于机器问题导致消息的丢失 (3)可扩展 分布式消息队列,会随着访问量的增加而方便的增加处理服务器

1.6K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    分布式消息队列

    作者:vincentchma,腾讯 IEG 后台开发工程师 一、消息队列的演进 分布式消息队列中间件是是大型分布式系统中常见的中间件。...单机 MQ 易于实现,但是缺点也很明显:因为依赖于单机 OS 的 IPC 机制,所以无法实现分布式消息传递,并且消息队列的容量也受限于单机资源。...利用 RPC 将数据流串起来,最好基于现有的 RPC 框架,尽量做到无状态,方便水平扩展。 存储选型,综合考虑性能、可靠性和开发维护成本等诸多因素。 消息投递,消费模式 push、pull。...消息队列的 RPC,和普通的 RPC 没有本质区别。对于负载均衡、服务发现、序列化协议等等问题都可以借助现有 RPC 框架来实现,避免重复造轮子。 存储系统 存储可以做成很多方式。...这样就组成了一个高性能的分布式消息发布和订阅系统。

    2K70

    分布式消息队列

    一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。...它使分布式通信耦合度更低,消息服务更加可靠以及异步性。 在EJB架构中,有消息bean可以无缝的与JM消息服务集成。在J2EE架构模式中,有消息服务者模式,用于实现消息与应用直接的解耦。...引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。...5.4 Kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。...Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。

    2.8K112

    消息队列RocketMQ版分布式事务消息

    消息队列RocketMQ版提供的分布式事务消息适用于所有对数据最终一致性有强需求的场景。本文介绍消息队列RocketMQ版事务消息的概念、优势、典型场景、交互流程、使用规则以及示例代码。...概念介绍 事务消息消息队列RocketMQ版提供类似XA或Open XA的分布式事务功能,通过消息队列RocketMQ版事务消息能达到分布式事务的最终一致。...半事务消息:暂不能投递的消息,生产者已经成功地将消息发送到了消息队列RocketMQ版服务端,但是消息队列RocketMQ版服务端未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状态,处于该种状态下的消息即半事务消息...分布式事务消息的优势 消息队列RocketMQ版分布式事务消息不仅可以实现应用之间的解耦,又能保证数据的最终一致性。...典型场景 在淘宝购物车下单时,涉及到购物车系统和交易系统,这两个系统之间的数据最终一致性可以通过分布式事务消息的异步处理实现。在这种场景下,交易系统是最为核心的系统,需要最大限度地保证下单成功。

    1K10

    消息可靠性、重复消息消息积压、利用消息实现分布式事务

    检查这条消息是否有被消费过,如果没有消费过,才更新数据,然后将消费状态置为已消费 但在分布式系统中,这个方法非常难以实现。...无论是增加每次发送消息的批量大小,还是增加并发都能成倍地提升发送性能 比如说,消息发送端主要接收RPC请求处理在线业务,因为所有RPC框架都是多线程支持多并发的,自然就实现了并行发送消息。...,这种情况也会拖垮整个系统的消费速度 四、如何利用事务消息实现分布式事务?...回到订单和购物车这个例子,来看下如何用消息队列来实现分布式事务 ? 首先,订单系统在消息队列上开启了一个事务。...3、RocketMQ中的分布式事务实现 在RocketMQ中的事务实现中,增加了事务反查的机制来解决事务消息提交失败的问题。

    1.2K20

    消息队列中:消息可靠性、重复消息消息积压、利用消息实现分布式事务

    检查这条消息是否有被消费过,如果没有消费过,才更新数据,然后将消费状态置为已消费 但在分布式系统中,这个方法非常难以实现。...无论是增加每次发送消息的批量大小,还是增加并发都能成倍地提升发送性能 比如说,消息发送端主要接收RPC请求处理在线业务,因为所有RPC框架都是多线程支持多并发的,自然就实现了并行发送消息。...,这种情况也会拖垮整个系统的消费速度 四、如何利用事务消息实现分布式事务?...回到订单和购物车这个例子,来看下如何用消息队列来实现分布式事务 ? 首先,订单系统在消息队列上开启了一个事务。...3、RocketMQ中的分布式事务实现 在RocketMQ中的事务实现中,增加了事务反查的机制来解决事务消息提交失败的问题。

    2K20

    KAFKA分布式消息系统

    Kafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、...高可靠交付对linkedin的日志不是必须的,故可通过降低可靠性来提高性能,同时通过构建分布式的集群,允许消息在系统中累积,使得kafka同时支持离线和在线日志处理。...每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。 3....发布消息时,kafka client先构造一条消息,将消息加入到消息集set中(kafka支持批量发布,可以往消息集合中添加多条消息,一次行发布),send消息时,client需指定消息所属的topic...为了对减小一个consumer group中不同consumer之间的分布式协调开销,指定partition为最小的并行消费单位,即一个group内的consumer只能消费不同的partition。

    1.9K60

    Kafka 分布式消息系统

    所以我还是折中一下,将标题取名为了“Kafka分布式消息系统”。 1....存储:在一个分布式、容错的集群中安全地存储流式数据。 1.1 消息系统 上面的三个作用,第一条就讲到,kafka是一个消息系统。那么什么是消息系统?它解决了什么样的问题?...1.4 存储:在一个分布式、容错的集群中安全地存储流式数据 默认情况下,Kafka中的数据可以保存一周。...扩展知识:CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。...4.4 Zookeeper Zookeeper是一个分布式服务注册、发现、治理的组件,大数据生态系统中的很多组件都有用到Zookeeper,例如HDFS等。

    1.8K40

    分布式消息队列 Kafka

    Kafka是一个高吞吐量的、分布式消息系统,由Linkedin开发,开发语言为scala 具有高吞吐、可扩展、分布式等特点 适用场景 活动数据统计 活动数据包括页面访问量(Page View)...之后进行统计 Linkedin就是基于这类需求开发出了Kafka,所以kafka最适合的场景为: 一个日志集群,各种服务器将它们自身的日志发送到集群中进行统一汇总和存储,然后其它机器从集群中拉取消息进行分析处理...broker集群 (3)话题 Topic(可以理解为queue) (4)消费者 Consumer (5)Zookeeper集群 可以在Kafka中创建多个Topic,Producer向Topic中发送消息...,Consumer从Topic中获取消息 ?...为了高效的读写消息,topic都被切分为多个分区partition,放入不同的broker中 topic的partition类似于数据库的分表,可以根据消息的key进行分区 例如key为userid,

    1.7K50

    分布式消息队列Kafka

    或者系统中文件夹 分区:一个主题可以分若干分区,同一个分区内可以保证有序 偏移量:一个不断递增的整数值,每个分区的偏移量是唯一的 broker:一个独立的kafka服务器 MirrorMaker工具:多集群间消息复制...磁盘吞吐量、磁盘容量、内存、网络、CPU 生产者(KafkaProducer) 序列化:自定义序列化、Avro 分区:ProducerRecord对象包含了目标主题、键和值, 键有两个作用:可以作为消息的附加信息...,也可以用来决定消息改写到主题的那个分区,拥有相当键的消息会被写到同一个分区。...flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去 日志输出到flume,log4j里加上日志 业界比较典型的一中用法是: 线上数据 -> flume -> kafka...-> hdfs -> MR离线计算 或者: 线上数据 -> flume -> kafka -> storm 简单点概括 flume类似于管道,kafka类似于消息队列。

    1K20

    分布式消息队列浅析

    ,跨机通信的场景需来需多,面临的问题不仅是消息投递问题,分布式系统普适性的挑战也随着应用场景的多样性而越来越多。...消息传输模型 从消息传输模型上,大致可以抽象为以下几种: 点对点模型(Point-to-point) 基础模型中,只有一个发送者、一个接收者和一个分布式队列。...[3.png] 业界组件介绍 看下业界,开源的分布式消息队列有很多种,侧重的维度也略有不同,包括支持的消息模型也有一些差异,如果按是否有独立进程来看,可以分为两个大类: Broker Broker类的分布式消息队列...,是指有独立部署进行的分布式服务,即发送者把消息发布到Broker进程,再由Broker进程推(或者是拉)给订阅者。...ZeroMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。

    3.7K50

    分布式消息队列 RocketMQ源码解析:事务消息

    事务消息回查 3.1 Broker 发起【事务消息回查】 3.1.1 官方V3.1.4:基于文件系统 3.1.1.1 存储消息到 CommitLog 3.1.1.2 写【事务消息】状态存储(TranStateTable...概述 必须必须必须 前置阅读内容: 《事务消息(阿里云)》 2. 事务消息发送 2.1 Producer 发送事务消息 活动图如下(结合 核心代码 理解): ?...事务消息回查 【事务消息回查】功能曾经开源过,目前(V4.0.0)暂未开源。..._3.1.4 相较于普通消息,【事务消息】多依赖如下三个组件: TransactionStateService :事务状态服务,负责对【事务消息】进行管理,包括存储与更新事务消息状态、回查事务消息状态等等...处理【Half消息】时,新增【事务消息】状态存储(TranStateTable)。 ?

    1.8K60

    分布式消息系统:Kafka

    Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。...分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。...然而Kafka忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。...保存收集流数据,以提供之后对接的Storm或其他流式计算框架进行处理。很多用户会将那些从原始topic来的数据进行阶段性处理,汇总,扩充或者以其他的方式转换到新的topic下再继续后面的处理。...Strom和Samza是非常著名的实现这种类型数据转换的框架。 6.事件源 事件源是一种应用程序设计的方式,该方式的状态转移被记录为按时间顺序排序的记录序列。

    1.4K30

    分布式消息队列浅析

    ,跨机通信的场景需来需多,面临的问题不仅是消息投递问题,分布式系统普适性的挑战也随着应用场景的多样性而越来越多。...消息传输模型 从消息传输模型上,大致可以抽象为以下几种: 点对点模型(Point-to-point) 基础模型中,只有一个发送者、一个接收者和一个分布式队列。...业界组件介绍 看下业界,开源的分布式消息队列有很多种,侧重的维度也略有不同,包括支持的消息模型也有一些差异,如果按是否有独立进程来看,可以分为两个大类: Broker Broker类的分布式消息队列,...是指有独立部署进行的分布式服务,即发送者把消息发布到Broker进程,再由Broker进程推(或者是拉)给订阅者。...ZeroMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。

    2K30

    Kafka——分布式消息队列

    通过脚本启动Kafka kafka的leader的均衡机制 kafka 0.11版本改变 第三章Kafka整合flume 整合步骤 第一章 是什么 一 Kafka简介 kafka是一个高吞吐的分布式消息队列系统...Distribution – 分布式 日志的分区分布在Kafka群集中的服务器上,每个服务器处理数据并要求共享分区。每个分区都在可配置数量的服务器之间复制,以实现容错功能。...分布式:数据副本冗余、流量负载均衡、可扩展 分布式,数据副本,也就是同一份数据可以到不同的broker上面去,也就是当一份数据,磁盘坏掉的时候,数据不会丢失,比如3个副本,就是在3个机器磁盘都坏掉的情况下数据才会丢...各个group各自独立消费,互不影响 六 kafka与其他消息队列对比 RabbitMQ:分布式,支持多种MQ协议,重量级 ActiveMQ:与RabbitMQ类似 ZeroMQ:以库的形式提供,使用复杂...,无持久化 redis:单机、纯内存性好,持久化较差 kafka:分布式,较长时间持久化,高性能,轻量灵活 ---- 第二章 安装 一 集群安装 前提: 需要有zookeeper支持 因此本次将

    1.3K20

    分布式消息中间件

    消息中间件作用于不同的系统和不同的开发语言。硬件设备的监控和互联操作需要使用不同的开发语言配合才能有更方便的系统平台获取相应的资源和数据。Java的开发框架更多和更广。...分布式消息队列中间件入队消息和消费消息的方式适配不同的开发程序设计语言提供的操作接口。消息message是可以数据对象。消息的标准报文操作格式有相应的开发文档。...消息队列的构建是一种程序操作消息的数据结构。生产者和消费者的设计模式运用在该消息队列的管理方式上面。消息的生产和转发需要有消息中转中心。Rabbitmq 和kafka都是消息队列。...消息队列的消息不消费会堆积成没有使用状态。消费的消费在系统监控平台下进行。消费消息和生产消息都是需要消耗资源。系统的性能现在都是使用分布式的存储方式。...分布式集群使用主从节点和备份节点提供数据服务和备份。主节点提供对消息的主机存储服务。从节点会使用缓存记录消息。备份节点对主节点的数据进行动态的备份操作。

    17720

    浅谈分布式消息技术 Kafka

    Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx...即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。...4. leader选举 Leader选举本质上是一个分布式锁,有两种方式实现基于ZooKeeper的分布式锁: 节点名称唯一性:多个客户端创建一个节点,只有成功创建节点的客户端才能获得锁 临时顺序节点:...: out_fd作为输出(一般及时socket的句柄) in_fd作为输入文件句柄 off_t表示in_fd的偏移(从哪里开始读取) size_t表示读取多少个 「 浅谈大规模分布式系统中那些技术点...」系列文章: 浅谈分布式事务 浅谈分布式服务协调技术 Zookeeper

    56820

    NSQ分布式消息基础入门

    作者 | 陌无崖 转载请联系授权 介绍 NSQ是一个基于Go语言的分布式实时消息平台,可以大规模的运用于实时消息服务,每天可以处理数亿级别的消息,设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构...nsqd nsqd 是一个守护进程,负责接收,排队,投递消息给客户端 功能或特性 1、对订阅了同一个topic,同一个channel的消费者使用负载均衡策略(不是轮询) 2、只要channel存在,即使没有该...channel的消费者,也会将生产者的message缓存到队列中(注意消息的过期处理) 3、保证队列中的message至少会被消费一次,即使nsqd退出,也会将队列中的消息暂存磁盘上(结束进程等意外情况除外...生产者 生产者直接去nsqd去投递message 消息的生命周期 1、生产者往nsqd中发送消息,开启一个连接,发送一个带有topic和消息体的pun的命令到nsqd中 2、topic会对消息进行copy...,发送至各个channel中 3、在channel中的每条消息都会被放进队列中,直到消息被worker消费掉,如果队列超出了内存的限制,消息则会被写进磁盘中 Nsq安装 docker部署 docker-compose.yml

    1.1K10
    领券