vaizard / glued-integrations
集成管理器。
dev-main
2024-07-01 23:43 UTC
Requires
- php: ^8.3
- ext-apcu: *
- ext-bcmath: *
- ext-curl: *
- ext-gd: *
- ext-gmp: *
- ext-imap: *
- ext-json: *
- ext-mbstring: *
- ext-mysqli: *
- ext-pdo: *
- ext-pdo_pgsql: *
- ext-readline: *
- ext-soap: *
- ext-xml: *
- league/openapi-psr7-validator: ^0.22.0
- nyholm/psr7: ^1
- nyholm/psr7-server: *
- php-di/php-di: ^7
- psr/http-message: ^1
- ramsey/uuid: ^4
- sabre/event: ^6
- slim/http: ^1
- slim/slim: ^4
- vaizard/glued-lib: dev-main
- zeuxisoo/slim-whoops: ^0.7
Requires (Dev)
Suggests
- ext-xdebug: For dev only
This package is auto-updated.
Last update: 2024-10-01 00:14:51 UTC
README
IF是Glued的集成框架,消息队列和调度器。
实现概述
if微服务
是一组作为独立git项目glued-if-service_name
实现的方法,用于与外部服务交互部署
是由if__deployments
表中的一行/对象定义的if微服务
的配置和授权上下文操作
是一个存储在if__actions
表中的deployment:microservice.method
映射,通过调用API端点(webhook)或由IF调度器触发操作状态
使用if__actions_states
创建一个有状态的历史记录调度器
实现为一组类似于cron的规则,包含一些额外功能(例如ttl),存储在if__scheduler
表中,并关联一个生产者,该生产者将定期填充消息队列,并运行订阅此队列的运行时守护程序,这些守护程序将启动工作进程(执行webhook API调用)消息队列
实现为配置了客户端可以订阅的消息队列的if__mq_queue
表消息
实现为if__mq_messages
表,该表将队列映射到消息有效负载和消息头(例如ttl,请求,回复等)通知
使用pg_notify功能实现,可以进一步通过rabbitmq扩展日志
默认使用monolog库实现
集成
IF协调if微服务
,这些服务简化了与其他任何服务的集成。
- 每个
if微服务
实现与远程/外部服务
的交互。 - 每个
if微服务
都有相关的部署
(一组描述if微服务
使用的属性),例如- 部署元数据(例如名称,描述等)
- 部署连接(例如远程主机,认证令牌,速率限制等)
- 部署RBAC规则*(例如谁可以使用if微服务)
if微服务
实现的方法(例如对外部服务的CRUD操作)与部署关联为操作
(操作是可以在部署配置上下文中运行的if微服务方法)。操作- 可以按需运行(例如提供缓存数据转换接口,例如glued-if-ares_gov_cz)
- 可以按计划运行(由调度器执行)
- 可以相互交互(通过消息队列)
*) RBAC由glued-core的授权代理提供
调度器
tbd
消息队列
消息队列大致受到RabbitMQ的启发,以便在内置的基于PostgreSQL的队列和Rabbit之间实现轻松过渡。缩进的MQ用法是
- 将计划任务分发到工作进程,
- 促进松散耦合微服务之间的通信
- 确保向用户发送内部通知并单独交付(带或不带用户确认)
IFMQ在作为类似RabbitMQ的消息代理时,实现了以下概念
生产者
/ 负责生成消息的代码 - php实现是glued-lib的一部分队列
/ '消息目的地'通过if__queues
表实现消费者
/ 订阅队列的客户端交换
/ 负责将消息传递到队列的代码 - 直接(单播),fanout(多播),header(基于规则的多播)
消息可以是