建筑 Laravel NATS: Laravel 的现代、生产-预备 NATS 集成 在建立分布式系统时,最大的挑战之一是使服务能够可靠地进行通信,而不会产生紧密的接合.
拉拉维尔对排队,活动,广播,以及工作都有出色的支持,但对于NATS,生态系统相对有限.
这就是为什么我建造了Laravel NATS。
Laravel NATS并非只是围绕一个现有的PHP客户端的又一包,而是旨在提供Laravel-First开发者的经验,同时暴露出NATS对现代事件驱动架构的全部力量.
我会在文章中解释为什么我建造了Laravel NATS 何必考虑NATS Laravel NATS 如何工作特性, 使其制作现成的代码例 是什么使得这个一揽子方案不同于现有的解决方案 什么是纳茨?
NATS是一个轻量级,高性能的通信系统,为云母应用所设计.
与传统队列不同的是,NATS专注于: 极低潜伏高通量 简单发布/订阅消息请求/Reply APIs JetStream sustainable 横向可扩展性而不是应用程序直接调用: 应用程序发布事件:每个服务变得独立.
Laravel为什么需要更好的NATS套件 大部分现有套件几乎直接暴露了基本的PHP客户端.
这意味着开发者仍然必须理解:客户端生命周期连接序列化订阅队列消费者JetStream APIs Laravel开发者期望有不同的东西.
我们习惯了API: Laravel NATS的目标是让NATS感觉同样自然.
安装Laravel NATS装置是直截了当的。
然后配置环境:就是这样。
出版信息出版活动应当简单.
Laravel NATS提供现代外观.
注意如何没有连接管理 。
没有手工编码 。
没有锅炉板。
刚刚发表。
订阅订阅事件同样简单.
这使得Laravel应用程序几乎可以立即对事件作出反应.
为什么是NatsV2?
软件包支持两个音轨: Legacy APIs Modern NatsV2 新的应用程序应该总是使用NatsV2,因为它是围绕较新的客户端而构建的,同时保持了Laravel的友好.
提供:更清洁的API改善可维护性 长期兼容性 更容易迁移路径 生产特性 最大的目标之一是"让NATS发挥作用".
目标是使其生产准备就绪。
包含的一些功能有: 配置验证错误配置的通讯系统难以调试.
Laravel NATS 在连接建立前验证配置.
TLS生产卫士在生产中传出不安全的信息可能会成为一个严重的安全问题.
Laravel NATS包括可选的TLS执行来防止意外的不安全部署.
具有多种服务的可选ACL支持应用程序通常需要受控访问.
该套件提供可选的ACL集成来保证通信安全.
分布式系统不可避免地重试消息。
无一能:可能意外地产生出三笔支付.
Laravel NATS包括可选的一能支持,这样重复交付就不会成为重复的商业行动.
观察性 我特别兴奋的是观察力 当您可以通过您的服务响应请求时, 消息变得更容易调试 。
Laravel NATS 支持: 追踪请求头 W3C Trace Control 可选可观察性集成 这使得分布式调试明显容易.
队列驱动支持 包还包含一个专门的队列驱动程序.
Laravel应用公司与其将NATS仅仅视为另一个运输层,不如将其作为队列生态系统的一部分使用.
这允许开发人员继续使用熟悉的Laravel队列工作流程,同时在下方利用NATS.
页眉支持版本1.6引入了页眉帮助.
示例: 信头可以通过: tr