saas 应用程序中的 azure 通知
notification in saas application over azure
我们正在开发基于 SaaS 的应用程序(在 Azure 上构建)。在此应用程序中,Web 服务器和 App 服务器在所有租户之间共享,但它们的数据库是独立的 (Sql Azure)。
现在需要实现通知服务,可以根据事件订阅生成通知。系统可以生成不同类型的事件(如帐户锁定等),用户可以为这些事件配置通知规则。通知可以是邮件和短信的形式。
我们计划实施事件队列。事件通知程序将在此队列上推送一个偶数。通知引擎将订阅这个队列。每当它收到一个新事件时,它会检查是否有针对此类事件配置的通知规则。如果是,它将创建一个通知,结果为 emails/sms。这些 emails/sms 可以存储在数据库中或推送到另一个队列。不同的后台进程(工作者角色)可以处理这些电子邮件。
这是我的查询。
我们应该为所有租户保留一个队列(用于事件)还是为不同的租户创建单独的队列。如果我们保留一个队列,我们可以共享一个订阅者服务来订阅这个队列。我们可以轻松地扩展这台机器。
由于每个租户都有不同的数据库,我们可以将他们的电子邮件存储到他们各自的数据库中,并使用一些服务,我们可以汇集数据库并在定义的时间间隔后发送电子邮件。但我不确定在这种情况下我们将如何共享订阅者代码。
我们可以将邮件存储在 nosql 数据库中(就像 table 存储在 azure 中)。订阅者(window service/worker 角色)可以汇集此 table 并在定义的时间间隔后发送邮件。同样,缩放在这里也是一个挑战。
我们可以将电子邮件存储在队列中(例如 RabbitMQ)。工作者角色可以订阅这个队列。如果我们为所有租户保留一个队列,则工作人员角色的扩展应该不是任何问题。
请就这些要点提供您的意见。
提前致谢
我不会按租户而是按功能来划分队列。因此,队列处理程序特定于它们正在处理的消息类型。
IE:订单处理队列、账户设置队列等
当你想根据它们进行扩展并且你想 sync/add/remove 当客户来来去去时,按租户创建队列是一个/令人头疼的管理问题。所以,我会避免这种情况
最终,如果没有 CloudMonix(我帮助构建的商业产品)等自动扩展服务,基于多个队列的扩展将变得更加困难
HTH
我们正在开发基于 SaaS 的应用程序(在 Azure 上构建)。在此应用程序中,Web 服务器和 App 服务器在所有租户之间共享,但它们的数据库是独立的 (Sql Azure)。
现在需要实现通知服务,可以根据事件订阅生成通知。系统可以生成不同类型的事件(如帐户锁定等),用户可以为这些事件配置通知规则。通知可以是邮件和短信的形式。
我们计划实施事件队列。事件通知程序将在此队列上推送一个偶数。通知引擎将订阅这个队列。每当它收到一个新事件时,它会检查是否有针对此类事件配置的通知规则。如果是,它将创建一个通知,结果为 emails/sms。这些 emails/sms 可以存储在数据库中或推送到另一个队列。不同的后台进程(工作者角色)可以处理这些电子邮件。
这是我的查询。
我们应该为所有租户保留一个队列(用于事件)还是为不同的租户创建单独的队列。如果我们保留一个队列,我们可以共享一个订阅者服务来订阅这个队列。我们可以轻松地扩展这台机器。
由于每个租户都有不同的数据库,我们可以将他们的电子邮件存储到他们各自的数据库中,并使用一些服务,我们可以汇集数据库并在定义的时间间隔后发送电子邮件。但我不确定在这种情况下我们将如何共享订阅者代码。
我们可以将邮件存储在 nosql 数据库中(就像 table 存储在 azure 中)。订阅者(window service/worker 角色)可以汇集此 table 并在定义的时间间隔后发送邮件。同样,缩放在这里也是一个挑战。
我们可以将电子邮件存储在队列中(例如 RabbitMQ)。工作者角色可以订阅这个队列。如果我们为所有租户保留一个队列,则工作人员角色的扩展应该不是任何问题。
请就这些要点提供您的意见。
提前致谢
我不会按租户而是按功能来划分队列。因此,队列处理程序特定于它们正在处理的消息类型。
IE:订单处理队列、账户设置队列等
当你想根据它们进行扩展并且你想 sync/add/remove 当客户来来去去时,按租户创建队列是一个/令人头疼的管理问题。所以,我会避免这种情况
最终,如果没有 CloudMonix(我帮助构建的商业产品)等自动扩展服务,基于多个队列的扩展将变得更加困难
HTH