`
javayestome
  • 浏览: 1041531 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SNS广播的问题

阅读更多

广播的问题

* 快速有效跟踪友邻动态
* 最近的动态,而非所有动态

* 合并重复信息
* 减少刷屏的影响

通常lifestream解决方案
twitter的方式
Twitter is, fundamentally, a messaging system.

整个系统的后台是一个巨大的异步消息队列,每条广播被放大N倍发送出去,N为你的follower.

谁在这么做?
twitter/xiaonei(?)/联络家/

twitter方案
优点:

1. 查看一个人关注的所有广播时,只有单个数据源
2. 可以删掉自己不想看的广播(校内)
3. 逻辑简单,只会看到关注后对方的广播(twitter)
4. 可以发送私信(只发给一个人)

缺点:

1. 延迟,联络家那边说会有分钟级别的延迟
2. 发送出去的消息没办法清除掉
3. 如果sns不够活跃,会有大量的无用功

通常lifestream解决方案
minifeed的方式

每个用户维护自己的feed列表,当需要显示自己关注的所有的feed时,从多个feed处拿到数据并merge.

谁在这么做?
douban/51/friendfeed/facebook(?)

minifeed的方式
优点:

1. 相应快,发出广播后友邻实时看到
2. 自己可以删除自己的单条广播
3. 对于cache的利用率高,每条广播在系统中都只有一条
4. 添加了一个友邻后马上能够看到他以前的广播

缺点:

1. 查看关注的广播时,需要通过cache/db取得多份数据,可能导致大量的cache/db访问。
2. 不便于发给单个人的广播 (暂时我们没有需求)

广播的类型

1. 收藏
2. 评论
3. 日记
4. 相册
5. 推荐
6. 我说
7. 小组
8. 讨论
9. 友邻
10. .....................

广播隐私

* 收藏/小组/友邻/活动隐私:

要不全部能看,要不全部都不能看到,采用bits控制
过滤时根据bits的值决定时候否显示这一大类的广播

* 日记/相册/推荐隐私

允许单条设置隐私,采用bits+type控制。“广播隐私设置”设置是否放入广播,再根据日记/相册/推荐的隐私设置决定type.

过滤时需要逐条检查type.

豆瓣的广播实现

* 所有的数据在miniblog表,id号递增,时间排序容易
* 对于每个人,在memcache中维护他最近1个礼拜的广播(id,type) 列表(合并/过滤都在这个列表上进行)
* 当需要查看1个礼拜前的广播时,直接查db
* 单条广播在memcache中单独为一个key
* 查看友邻广播时,首先拿到所有友邻的广播(id,type)列表,按id排序合并,去掉不能看到的type,然后过滤,合并。

广播合并
以天 为单位合并广播

* 同种action的合并(同看了一本书,同加入了一个小组)

* 同一个人的同种行为合并(消除刷屏的危险)
o 合并一个人当天所有的同类型行为(收藏,照片)
o 合并一个人连续的同类型行为(推荐)

不同的页面 首页/友邻广播/个人广播, 采用不同的合并策略

分享到:
评论

相关推荐

    Laravel开发-laravel-sqs-sns

    然后,你可以在Laravel中创建一个监听SQS队列的工作进程,这将接收并处理SNS广播的消息。 在Laravel中定义队列工作类,继承自`Illuminate\Queue\InteractsWithQueue`等基类,实现`handle()`方法来处理接收到的消息...

    基于安卓Android的SNS社交网络客户应用需求调研报告范本.pdf

    但米聊同样存在一些问题,如不支持消息推送,每次打开都需要重新登录,且界面设计中的一些辅助工具占用了过多空间。 随着互联网领域的发展,以Facebook为代表的SNS引发了新的网络潮流。在国内,新浪微博以其独特的...

    Python库 | cdk_sns_notify-0.0.84-py3-none-any.whl

    通过SNS,应用程序可以广播消息到多个订阅者,如其他AWS服务、HTTP/S webhook、电子邮件、短信等。cdk_sns_notify库可能是为了简化在AWS CDK中配置和操作SNS主题、订阅和通知的流程。 使用这个库,开发者可以轻松地...

    PyPI 官网下载 | cdk-sns-notify-0.0.63.tar.gz

    "cdk-sns-notify"通过SNS将消息广播到多个接收者,这体现了分布式系统中的事件驱动设计模式,有助于提升系统的可扩展性和容错性。 3. **云原生(Cloud Native)**:云原生是一种构建和运行应用程序的方法,强调利用...

    Laravel开发-laravel-sqs-sns-subscription-queue .zip

    SNS可以用来广播事件,例如系统状态更新、订单处理完成等,确保消息被正确地分发和处理。 **Laravel与SQS集成** 在Laravel中集成SQS,首先需要安装AWS SDK,这通常通过Composer来完成。然后,配置`.env`文件和`...

    PyPI 官网下载 | mypy-boto3-sns-1.12.6.0.tar.gz

    SNS是AWS提供的一个完全托管的消息传递服务,它能够将消息广播到多种接收端,如移动设备、电子邮件、HTTP endpoints或其他AWS服务。开发者可以利用SNS来构建高度可扩展的、可靠的、实时的消息传递系统。 `mypy-boto...

    aws-sns-springboot

    4. **Topic创建**:在AWS SNS中,Topic是一种逻辑实体,用于广播消息。应用可能会有一个创建或查找Topic的服务,以便其他服务或订阅者可以订阅。 5. **消息发布**:通过SNS客户端,我们可以创建消息并发布到特定的...

    Python库 | aws-cdk.aws-sns-subscriptions-0.34.0.tar.gz

    **Amazon Simple Notification Service (SNS)** 是一个完全托管的消息服务,用于发送和接收消息,支持点对点通信、广播模式以及与其他AWS服务的集成。SNS的核心功能包括发布消息到主题(topics),订阅者可以订阅...

    PyPI 官网下载 | cdk_sns_notify-0.0.85-py3-none-any.whl

    SNS是AWS中的一个完全托管的消息传递服务,它支持点对点消息传递、广播消息和发布/订阅模式。SNS可以帮助你轻松地将消息推送到多个目标,如其他AWS服务(如Lambda、SQS)、HTTP/HTTPS端点、电子邮件、SMS、移动应用...

    sns-server:Node.js 服务器作为 Amazon SNS 消息的 HTTP 终端节点

    3. **Amazon SNS** - 亚马逊的推送通知服务,用于广播消息到多种订阅者,如 HTTP 终端节点、电子邮件、SMS 等。 4. **HTTP 协议** - 服务器如何接收和响应 SNS 的 HTTP 请求。 5. **JSON Web Tokens (JWT)** - 可能...

    基于安卓Android的SNS社交网络客户应用需求调研报告.doc

    米聊的优点在于其丰富的社交功能,如找朋友、广播类似微博的功能,以及发送涂鸦和位置信息。但是,它存在一些用户体验问题,如不支持自动保存账号,需要每次手动登录,且聊天界面的推荐助手占用空间过大,且无消息推...

    基于安卓Android的SNS社交网络客户应用需求调研报告范本.docx

    米聊的找朋友功能丰富,可连接人人网和MSN,还支持广播类似微博的功能。但米聊的问题在于不保存账户信息,每次使用需登录,且界面设计中存在不便用户操作的部分。 2. **产品预想** - **背景**:随着科技发展,特别...

    基于安卓android的sns社交网络客户应用需求调研报告-本科论文.doc

    米聊支持查找附近的人、人人网和MSN好友,广播功能类似微博,但不支持消息推送,且登录界面不够友好,经常需要手动登录。 二、产品预想 2.1 课题背景 随着科技的快速发展,智能手机已经成为了信息传播的重要载体。...

    于基安卓android的sns社交网络客户应用需求调研报告--大学毕设论文.doc

    米聊的优点包括强大的找朋友功能、广播系统类似微博、丰富的表情包和位置信息分享。但其缺点在于不保存账号信息,每次需要手动登录,且对话界面的辅助工具占用过多空间,不支持消息推送。 二、产品预想 2.1 课题...

    aws-lambda-sns-twilio:使用Twilio SMS的Sens SNS消息

    SNS提供可靠且可扩展的模式来广播数据,是实现微服务间通信或事件驱动架构的重要工具。 3. **Twilio**:Twilio是一家提供通信API的公司,允许开发者通过编程方式集成电话呼叫、短信、视频聊天等功能。Twilio API...

    sns-beanstalk-chat

    在sns-beanstalk-chat中,SNS可能被用来广播新消息,确保所有连接的客户端都能及时接收到新消息。开发者可以使用SNS的订阅和发布模型,将消息发送到特定的主题,并让多个订阅者接收这些消息。 Beanstalk(通常指的...

    amazon-sns:Amazon Simple Notification Service变得更简单

    SNS是一种完全托管的消息队列服务,它可以广播消息到多种接收端,包括Amazon Simple Queue Service (SQS) 队列、HTTP/HTTPS 终端节点、电子邮件、SMS以及移动设备通过平台通知。这种服务的核心特性是其发布-订阅模式...

    django-asns-receiver:Django Amaonz SNS 接收器应用程序

    SNS 是亚马逊提供的一个完全托管的消息传递服务,用于广播实时消息到订阅者,如其他 AWS 服务、HTTP/HTTPS 端点、SQS 队列或移动设备。这个 Django 应用程序确保了项目可以安全、可靠地接收并处理这些消息。同时,...

    nexmolambda:订阅 SNS 主题并使用 nexmo API 发送 SMS 的 AWS Lambda 函数

    2. **Simple Notification Service (SNS)**: SNS 是 AWS 的一个完全托管的消息传递服务,可以用于广播消息到多个订阅者,如其他 AWS 服务、HTTP/HTTPS 端点或者像 NexmoLambda 这样的 Lambda 函数。 3. **Nexmo API...

    laravel-sns

    3. 消息通知:用户间的私信、系统通知等功能,可能涉及到队列和广播系统以实现异步处理和实时通信。 4. 分享与动态:用户发布状态、图片、链接等,这部分需要处理内容的存储、展示以及评论、点赞等互动功能。 5. API...

Global site tag (gtag.js) - Google Analytics