下载 APKPure App
可在安卓获取Softonic的历史版本
Softonic 是世界上最大的 apk 下载应用程序。
Softonic 是世界上最大的软件和应用程序发现目的地,也是世界上访问量最大的网站之一。当您需要下载某些东西时,您可能已经登陆了他们的网站——而且您不是唯一的下载者。每月有超过 1 亿用户访问 Softonic。这是一份应用程序指南,可帮助您发现最适合您设备的应用程序,为您提供评论、新闻、文章和免费下载。
CloudAMQP 在全球所有最大的数据中心提供托管的 RabbitMQ 集群,Softonic 是我们的众多客户之一。我们在伦敦举行的 2018 年 RabbitMQ 峰会上遇到了 Softonic 的开发人员 Riccardo Piccoli,他亲切地与我们分享了 Softonic 的客户故事。
本文分为两部分;第一部分是系统概述,展示了基于事件的架构的简单 RabbitMQ 用例。第二部分是深入探讨 Softonic 的内部架构——他们使用的插件和他们发送的事件示例。
一个简单的 RabbitMQ 用例
用户可以将文件上传到 Softonic。在将文件分发给其他用户之前,对所有上传的文件进行病毒扫描并收集有关文件的信息。新的二进制数据首先保存在专用服务中,并且有关上传的通知会发送到事件总线。其他服务会收集这些信息,这些信息最终会添加到网站中。在这种情况下,用户会在上传成功后立即收到通知,并且扫描事件会简单地放置在事件总线上以供其他服务处理。事件总线,也称为消息队列,允许 Web 服务器快速响应请求,而不是被迫当场执行资源密集型进程,而不是让用户等待。
扫描过程是这些服务之一。病毒扫描应用程序获取事件总线的消息,例如“ScanFile”命令,并开始处理文件。与此同时,其他用户可以将新文件上传到 Softonic,处理任务只会堆积在队列中。一旦消费应用程序处理了事件,“FileScanned”事件就会被添加回事件总线。
软件和应用程序发现门户网站 Softonic 每月有超过 1 亿用户访问,每天提供超过 200 万次下载,并且在他们的服务之间有持续的事件和命令流。 CloudAMQP 与 Softonic 进行了会面,听取了他们关于 RabbitMQ 作为微服务之间的事件总线如何为可靠、快速和有效的架构做出贡献的故事,这些架构非常适合他们的目的。
像这样的架构创建了两个简单的应用程序和发送方和接收方之间的低耦合。用户仍然可以上传文件,即使扫描应用程序正忙或正在维护。
不同的事件或命令被发布到事件总线,例如“ScanFile”命令。
Softonic 使用 RabbitMQ 作为事件总线,事件或命令只是简单地添加到队列中。
消费应用程序检索事件并开始处理事件。一些数据存储到数据库中,更多事件可能会发布回另一个事件队列(更多信息请参阅“RabbtiMQ 的内部结构”)。
消费应用程序将大量信息存储在数据库 (MySQL) 中。
当一个微服务接收到一个事件时,它可以更新自己的业务实体,这可能会导致更多的事件被发布,这正是这里的情况。
RabbitMQ的内部结构
现在是深入研究 RabbitMQ 内部架构和 Softonic 应用程序的时候了。如果您还不熟悉 RabbitMQ 的两个概念,则需要对其进行描述。 Softonic 使用一致的哈希交换插件和 RabbitMQ 分片。
异步事件 0 将被立即处理,事件 1,2 和 3 将重新发布到队列,以便其他分片消费者可以处理它们。
Last updated on 2022年12月05日
Minor bug fixes and improvements. Install or update to the newest version to check it out!