BES服务器推送机制分析(三)

作者:  邓明轩

 

 

 

M DS/BES 中的 送队

 

 

MDS /BE S    线 MDS /BE S 推送务端 合适 到手 后才 除。

MDS /BE S 队列是 MD S 件, 应用 器端 求, 是否 以对于 M DS 送的 M DS /BE S 送队 列。

MDS /BE S 队列 省为   1 00 0 是说   MD S /BE S 服务

器在   1 0 0 0 深度 端修

同时   MDS / BE S   推送 推送 时间 省为 1 0 个推 MDS / BE S 务器 1 0 分钟

这个 员在 推送 如下:


 

 

 

推送 改界

 

 

对于 论是 列后 是推 据在 ,说 情况 的各态中 淡蓝 态为 态为 态的 终止


 

 

  MDS /BE S 收到 推送 标用 没有   5 处于暂时 失败

据放 入等 送的 试发 1 0 0 0 的一 失败 用的

然后   MDS / BE S   将数 ,如 备处 机状 MDS /BE S 发送 送数 据变 MDS / BE S 器会 向应 确认消息 据从 队列 意,   MDS / BE S   务器 向应 消息 成功   2 0 0 体是

返回成功 2 0 0 返回失败 40 0 还取 决于因素 我们 章节

如果   MDS / BE S   将数 时候 数据 时失 态的 的队 位置 一个只能 5 失败 的数 据或 说明 MDS / BE S 总共 时失

如果   5   条数 据处 MDS /BE S   收到 该用 的推 数据 每一 的推 会占 用推 1 00 0 都被的时 MDS /BE S 服务 接收 新的 户。

处于 待” 器上   1 0 述,

时间 1 0 状态 的数 过期 状态

  MDS /BE S   用服 这种 认消 代表失败 40 0 1 0 新进 入网 息到 MDS / BE S 服务 经上线 MDS /BE S 务器 会将 失败”和 “等待 数据转成“尝试发送状态 ,重新发送该数据。 要注意的是   1 0   分钟 等待过程中 MDS /BE S 接收 网络息, MDS /BE S 服务 试重 和“ 据。

 

根据 出以

1 当用 线 送会 被马 只在 很短 时间 占用 1 00 0 一个 置。

2   当用线 时, 个用 器在     1 0   分钟 最多


可以 10 0 5 数据 其中 5 “暂 时失 1 0 0 0 条在 等待 中。

3   如果 据发   MDS / BE S 服务   1 0 内重 MDS /BE S

服务 到手 端。

4 如果 MDS / BE S 待队 用户 5 占用 等待队列

5 如果   MDS /BE S   的等 待队 个用 MD S /BE S   务器 户的 送。

 

 

总结 保证 MDS / BE S 工作要保 MDS / BE S 服务 器的 满。

 

手持设备端对 送数 的处理

 

 

M DS /BE S 应用 会将 设备 程序 设备 要一个队列 存数据,则客户端应程序在提前一条数据新到达的据就会直 接丢 的是 列有多深 列行 被系 经过 实手备端 实也 在队 列深   1 0 而且 映在 用层 其中 开发 员注 个队 。关 据队

如图 程序 R 如图 标有   R   形所 示,如果 有更 持设 会被 1 0 条数 据可 中, 1 1 0 。此 被推 设备 的数 圆形 1 1 12 1 3 对于 而言 数据 1 1 1 2 1 3 经被 端不 数据 情况 1 1 0 可以 继续 提取 1 1 1 2 1 3 则丢 了。 对于 送到设备 端的   1 4 15 ,假 网络没有 被推


手持 服务 数据 1 4 1 5 处理。 对于 (图 圆形所示 处理 确认 节中再作

论。

 

 

从这 果是 未必 程序提取 客户 快提 据的 客户 再被 处理 会尝

 

 

异步确认消息 应用依赖和非用依赖

 

 

手持 数据 MDS / BE S 务器 这时 MDS /BE S 器会 最初 定的   U RL   息, 告知 送数 结果 息。 息以 h t t p 协议 消息 2 0 0 代表 数据 40 0 代表 数据 败。

异步 器判 效工 员因 异步 解错使 致数 需要 息的 制。

要讨 作机 依赖 依赖 推送 和非 的异 是不 的。

 

下面 场景 使用 如果 为成 到达 手持

设备 MDS /BE S 认为 给应 2 0 0 如果 不在线 1 0 钟内 M DS /BE S 保留 1 0 备重 MDS / BE S 送该 数据

据到 MDS / BE S 服务服务 器发认消   2 00

如果 1 0 手设 接入网络数据 MDS / BE S 器会 丢弃 据, 送异认消 40 0

可以 推送 端应 在非 用依 赖的 式下 MDS /BE S 返回 2 0 0 不能 认为 。如

                                                   

MDS /BE S 已成 端应 没有 取推 送数 出的 MDS / BE S 数据 已成 4 0 0 息可 到数

如果接收   2 0 0 ,只 到了 据。

 

 

从以 依赖 用于 于可 靠性 要知 否接 赖的 式就 是为 送是 以客 成功 要在 MD S /BE S 送成 务器 确认 2 0 0

有关 确认 端接 有描

单而 序通 调用   MDSP us hI np ut St re am     ac ce pt   到, 在接 调用 ac cept   MDS /BE S   服务器


据推 服务 器发认消 400 过的 ac c ept 函数 调用 只有 In putSt r e am St re am Co nn ect io n 发送 MDS /BE S 务器 一点 息的 果。

下面 景: 如果 线 客户 端后 有程

序侦 没有会调 ac ce pt 数, MDS /BE S 会认 送失 送异认消 40 0

如果 线 端应 据后   ac ce pt   直接 连接 此时 MDS / BE S 器同 异步 确认 40 0 在这景下 使 端接 服务 因为成功

志的   ac c ept 有调 用。

如果 线 端应 据后 用了   ac c ept   并关 接, MDS / BE S 会认 应用 消息 2 0 0

对于 持设 线的 况, 果与 依赖 似, 1 0   分钟 手持 备不 网络据会 MDS /BE S MDS /BE S 服务 步确认消 40 0

如果 1 0 新接 MDS /BE S 服务 器会 设备 还是以   ac c ept   为推 数据 客户

ac ce pt ,则 MDS /BE S 向应务器 发送 2 0 0 对于 是溢数据 序能 该数

    ac cept   MDS /BE S   服务 待到     1 0   用服 送异 消息

4 0 0

一个特殊的情况是客户端应用程序在接收到数据后调用   ac cept ,但是没有关 In putSt re am St re am Co nn ect io n 。此时 M DS /BE S 务器 理数 续等待。等待 时候 1 0 钟, M DS /BE S 认为推送 应用

    4 0 0   1 0        In putSt re am    St re am Co nn ect ion 者是 网络中断, MDS /BE S 服务 用服 务器 20 0

下面 下的 例:


 

 

 

结合 况下 一些

MDS /BE S 数据 R 、数 1 数据 1 3 后出 户端 正在取数 R 此时 1 数据 1 0   被保 序在 R 续读 数据 1 数据 1 0 如果 取了 ac ce pt 产生 图中认消 R 1 认消

  1 0 断, 到达   M DS /BE S   。如 果网   10 钟内没有恢 MDS /BE S   服务器上所 等待确 认消息的记录都认识是 过期 MDS /BE S 会向 确认 4 0 0 使网 络恢 R 确认 消息 1   到确 1 0 再有

在这况下 即使 客户 用了   ac cept MDS / BE S

服务 推送 功。

 

 

根据 赖的 户端 ,在 应用 M DS /BE S 返回 2 0 0 消息 可以 数据 因为 2 0 0 确认 程序   ac ce pt   的, 在确 到后 调用   ac c ept   通知 成功 收到 据数 ac c ept 用服 务器 收。

收到 20 0 消息 可以 到数 如果接收 40 0 消息 ,只 有收

 

 

因此,应用依赖的 式更适合可靠性要应用,如果应用服   2 0 0 确认 事务 如果 4 0 0 息则 需要重发 直到 2 0 0 户端 一定 收到 需要


如何保证数据推送的可靠性

 

 

通过 ,我   MDS /BE S   服务机制 保证 推送 法完 应用

对于 了解 因素 在应 用编 障出 点进 发人 要实 现额 发, 情况 故障点的影响

 

应用依赖和非 用依赖的比较

 

 

在实 首要 赖与 择。 应用 靠性 赖的形式 赖的

MDS /BE S 器的 端应 复杂。 非应 势在 ,对 MDS / BE S   的压 力相

小。

非应 某种 广播协议 器向 端发 重客 数据 应用的推 更适 报价 这些 客户 的多 不大 不会 1 1 1 1 零七 有何 同。

应用 似于 服务 时也 关注 应用适合   O A E RP   应用 新的 能到应用 条待 整个 的停

再从 差别 额外 它的 势在 于它 应用 依赖 步还 实现 额外 MDS /BE S 确认 发。

应用 结合 重发 据可 性的 最好 法。

 

M DS 接收线程限制的处理

 

 

不管使 ,应 MD S 线 不过 现在 正常 HT TP 求可 十毫 成,少量 HTTP 于构

需要 端的程序 中不 态组 会浪 h t t p 资源 织好 HT TP 接后 数据

此外 推送线 避免 启动 的线

程进 造成 况。

从网 用服 器与 MDS /BE S   器之 是避 种问方法 的范 间可 送线


长的 MDS / BE S 有足原有 的连 使 用了 法调 要对 务器

现网 以组 当然 数据 重发 塞。

 

M DS 推送队列限制的处理

 

 

相对 M DS 列限 制造 败比 M DS 接收 更常 已经 是周 机, 于推列中 填满   MDS /BE S   应新 期时 有新 有大 新占

对于 MD S ,直 数进 的, 员可 期时

过期 不正 管理 于将 期时间被 大后 数据 时间 MD S 送队 被占

所以 行调 期时 待数 据占用队列的 间就越 MD S   推送队列 占满 可能性就越小 但是, 期时间也 过小 会导 使应 多的重发 比如间调 1 钟, 道都 败。

对于 向是     100 0   整到     20 0 0 。此

MDS /BE S 间可 大队 列深 会让 MDS /BE S   器保 占用 对服 更大 列深 运行 用。

从应 应用 MD S 是尽 送。 送第 数据 其它 的时 间间

对于 MD S 应用 服务 MDS /BE S 回的 5 0 3 错误 进行处理 5 0 3 错的重发 同样 考虑 重发 行判 用户 重发 数据。

 

手持设备端接 队列的处

 

 

手持 从文 据测 手持 备端 目前 调整 序设 手持 列。

开发 手持 可溢 从接 列出 无法 在客 要注 推送 数据 过程 杂的 快读 条数 据。 和计 线程 成。

因为溢出数据对客 用而言不可见,所溢出时在客户端应不会有异 常。 务器 知道


对于 除了 机制 行补 充。

 

 

应用依赖的客 户端

 

 

对于 ac ce pt I np ut St re am

  St re am Co nn ect io n 闭。

如之 使 依赖使   MDS /BE S   务器 步确 是否 应用 要保 调用 ac cept 数。

另外 如果   In putSt re am   St re am Co nn ect io n 关闭 ac cept 发出 确认

  MDS / BE S      In putSt re am    St re am Co nn ect io n     ca t ch        In putSt re am    St re am Co nn ect io n 闭处

 

异步确认消息 处理

 

 

异步 据是 端应 使 消息 首先 要保 接收所有 MDS /BE S 器发 息。

异步是一 HTTP 接收 过程 面是 异步

R eceiv e d not ifi ca t io n: G ET / HT TP / 1 . 1

Us er -Ag en t : RIM M DS CS A cc ept : * /*

X - RIM-P us h-ID : pus hI D: 20 8 1 7 7 3 7 6 8

X - RIM-P us h-D e s t in a t io n: m m t e s t @ bj.s e arb.c n

X - RIM-P us h-S t a t us : 40 0

Hos t : lo c al ho s t :77 78

 

中最 键是 获取属   X - RIM-P us h-S t a t us 该属 的值 断数 是成

2 00 4 0 0 X - RIM-P us h-ID 也非 定该 确认 对哪 的。

如果 认消 ,则 X - RIM-P us h-ID   新组

 

 
 

 

 

BlackBerry SDK下载

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值