【问题标题】:Number of channels and billing渠道数量和计费
【发布时间】:2014-07-29 01:22:42
【问题描述】:

我正在考虑构建一个应用程序来监控主要城市的公共交通巴士:

我使用 pubnub 做了一个快速原型。公共汽车有一部电话将 GPS 信号传输到一个频道,公共汽车用户有电话订阅频道。我有问题:

  1. 我正在为每条公交路线规划一个通道。这座城市有 50 条路线,因此将有 50 条路线。这是否符合最佳做法?

    1. 有列出频道的 api 吗?
  2. 我每秒钟都会向频道发送一条消息。假设有 50 条路线,每条 5 辆巴士 24 小时运行。每天将有 216000000 条消息。我一天的费用是多少?

  3. 您的 Android 客户端是否会在每次调用发布时打开网络连接?我想尽量减少传输 GPS 信号的手机使用的带宽。

  4. 公交车用户可能希望查看多辆公交车的位置。我知道最佳做法是订阅一个公共频道和一个私人频道。最好的方法是什么?

如果您能回答上述问题,我将不胜感激。

【问题讨论】:

    标签: pubnub


    【解决方案1】:

    预先完全披露 - 我为 PubNub Customer Success 工作,因此对定价相关问题的回答仅是信息性的,不应被解释为促销活动。 Asker 特别提到了 PubNub,下面提供的信息可从 PubNub 网站公开获得。

    Anant,也作为 FYI StackOverflow 通常会要求将这些问题中的每一个作为单独的线程提出。今后请尽最大努力遵守社区准则。

    1 就具体架构和设计模式策略而言,每个实现都会有所不同,尽管您提出的方法似乎是对渠道方法的合理利用。 PubNub 不限制使用的频道总数,但是作为大多数移动开发框架同时订阅超过 50 个频道的实际限制将在上限附近。添加更多内容,iOS 和 Android 都将开始表现出性能限制。如果添加新的公交线路,订阅可以管理为仅订阅附近的路线等。

    问题 1 第二个有缩进。是的,这可以通过 here_now API 完成

    2 PubNub 每百万条消息收费 1 美元(未启用 SSL),因此根据您的假设,您的消息费用为每天 216 美元。话虽如此,这里有很大的设计模式优化空间,以便总线仅在发生更改时发布新位置 - 在总线静止时重复发布是不必要的。这种优化本身会显着降低消息使用率,根据您的具体实施方法,还有其他策略可用于进一步优化。如果您预计每月需要超过 10 亿条消息,那么部署到 Global Cloud 是有意义的,这样您就可以享受 Go Cloud 上没有的批量折扣定价。

    3 PubNub 不会在每次发布时都打开一个新连接,而是保持一个活动的套接字连接打开,直到由于网络连接丢失/应用程序强制关闭而取消订阅或断开连接。在几个小时内保持此连接处于活动状态并且没有任何其他发布/订阅活动的带宽利用率通常小于 1K,具体取决于您的配置参数。 Android 支持后台线程,因此即使应用程序不在焦点上,连接也可以保持打开状态,以促进数据推送警报,可用于提示用户将应用程序带回前台以查看任何更新的信息。

    4 这个问题不清楚,假设公交车位置发布到公共频道,私人频道的目的是什么?如果您的意思是一个私人频道来接收用户选择的巴士到达的警报,那么是的,这将是一个合适的实施策略。请澄清您的意思是否不同。

    【讨论】:

    • 只是想谈谈“最佳做法是订阅一个公共频道和一个私人频道”的评论。在这种情况下,最佳做法是让每个用户/设备订阅每个唯一的公交路线通道。订阅所有这些会使您处于我们推荐的上限,但可能是一种不太可能的情况,即任何一个用户都希望了解所有 50 条路线。每个用户有一个私人频道,用于任何需要发送给该用户(不确定您的用例)的消息,包括推送通知。以及一个用于系统通知的全球渠道。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多