Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >队列工作器的同步访问

队列工作器的同步访问
EN

Stack Overflow用户
提问于 2013-03-01 01:42:16
回答 2查看 531关注 0票数 1

我目前正在编写一个服务,它使用蒸汽Web爬行DotA 2匹配。因为我希望我的解决方案是可伸缩的,所以我希望允许同时缓冲和处理爬行作业。这就是为什么一想到排队:

所有组件都应该能够在不同的计算机/VM上运行(没有内存内同步或进程间同步)。爬行工作可能是这样的:

代码语言:javascript
运行
AI代码解释
复制
Job 1: Crawl match 1234 with options ABC
Job 2: Crawl match 2345 with options BCD

由于数据的性质,指向同一匹配的多个作业可能会排队(例如,两个玩家玩同一游戏)。因此,我需要一些队列无法提供的同步机制(爬虫不能尝试同时写入相同匹配的数据)。

我的实际问题是:是否有一种模式可以用于同步需要访问相同数据的队列工作人员?

我想到的一种方法是引入另一种服务,允许爬行器进行Lock匹配(这需要在从数据库读取或写入匹配数据之前完成):

但这将带来一大堆新的问题和要求:

  • 如何缩放控制器?
  • 如果控制器崩溃了呢?
  • 如果队列工作人员不解锁匹配怎么办?
  • ..。

如果感兴趣的话,下面是我可能使用的技术:

  • 队列:用于Windows的服务总线
  • 服务:.NET Web
  • DB: Server 2012
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-01 02:29:59

这听起来像是预订系统,网上订票系统有这样的问题-

代码语言:javascript
运行
AI代码解释
复制
user asks for tickets
system offers specific tickets
user thinks a while and maybe pays, during that think time system cannot offer tickets to anyone else
eventually user buys, rejects or maybe just times out
system updates ticket availability

问:在您的系统中,如果两个参数相同的爬虫同时进行搜索,如果它们不能同时更新结果,这是否是一个问题?我问这个问题的原因是,我认为爬行操作本身类似于用户思考时间,这是一个长时间运行的操作,在其持续时间内持有数据库锁是不合理的。

我建议的方案是乐观锁定,通过数据库和数据库的超越,因此不需要单独的控制器--您的DB是一个单一的故障点,最终是一个可伸缩性的瓶颈,但是您可以通过对DB进行一些分区来解决这个问题。

你需要某种控制器。但不一定是单身。同样,通过数据库锁来中介实例。我看到的大问题是可靠地捕捉失败的爬虫。在“蓝天”场景中,很容易维护运行爬虫的DB表。在我看来,失败的情况是非常棘手的。

我不知道诀窍是否是对数据库进行分区,每个分区对应于一个带有自己控制器的“工作组”。只要控制器是活动的,它就可以启动工作,并对查询进行监管,这样就不会在其工作组中出现重复的情况。在完成任何爬虫时,都会有“就绪”消息排队,结果合并服务会将数据从分区中提取到主服务器。

票数 1
EN

Stack Overflow用户

发布于 2013-03-01 06:23:47

如果需要将队列中的一组/一组消息关联起来,则可以使用会话进行关联。此外,使用具有多个订阅的单个主题可以根据订阅上设置的不同筛选器对消息进行分区。以下信息可能会有所帮助:

  1. (从我的博客) http://abhishekrlal.wordpress.com/2012/02/07/enterprise-integration-patterns-with-service-bus-part-1/
  2. http://code.msdn.microsoft.com/windowsazure/Brokered-Messaging-Session-41c43fb4

您可能需要将上述示例中的引用更新到AzureSDK1.8,因为这正是支持Windows服务总线1.0的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15154645

复制
相关文章
Django小技巧15: 使用基于类视图的Mixins
依类似的方式, 你可以在UpdateView中, 重用相同的FormMessageMixin, 并覆盖默认的form_invalid_message方法.
用户1416054
2018/12/06
1.1K0
Django小技巧15: 使用基于类视图的Mixins
Django装饰器的使用 (类视图)
为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图。
kirin
2021/02/04
1.1K0
django的类视图-11
使用函数方式定义的视图叫函数视图,虽然使用方便,便于理解,但是当一个s视图有多种请求方式的时候,变需要使用分支来编写不同请求方式对应的逻辑。
py3study
2020/01/19
7850
Django 中针对基于类的视图添加 csrf_exempt
在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问。那么对于基于类的视图,我们应该怎么办呢? 简单来说可以有两种访问来解决 方法一:在类的 dispatch 方法上使用 @csrf_exempt from django.views.decorators.csrf import csrf_exempt class MyView(View): def get(self, request): return HttpResponse("
kongxx
2018/05/14
1.6K0
Django之基于iframe的ajax
那么伪造ajax的方式即为将向服务端发送请求返回的数据返回到iframe中,再使用js从iframe中的文档中取出数据使用。
py3study
2020/01/21
1.1K0
Django 2.1.7 类视图
Django 2.1.7 创建应用模板 Django 2.1.7 配置公共静态文件、公共模板路径 Django 2.1.7 模板语言 - 变量、标签、过滤器、自定义过滤器、模板注释 Django 2.1.7 模板继承 Django 2.1.7 模板 - HTML转义 Django 2.1.7 模板 - CSRF 跨站请求伪造 Django 2.1.7 模板 - 图片验证码的实现 Django 2.1.7 模板 - 动态URL 反向解析 Django 2.1.7 模板 - 动态配置静态文件路径
Devops海洋的渔夫
2019/07/15
7010
Django 2.1.7 类视图
Django 官方推荐的姿势:类视图
在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。于是,django 把这些相同的逻辑代码抽取了出来,写成了一系列的通用视图函数,即基于类的通用视图(Generic Class Based View)。
HelloGitHub
2021/05/14
1.3K0
django 入门:通用视图类重构视图
博客:https://www.jianshu.com/p/8cdf099e974f
陈宇明
2020/12/15
9080
django 入门:通用视图类重构视图
Django(57)Generic类视图[通俗易懂]
上篇我们通过mixin可以非常方便的实现一些CURD操作。实际上针对这些mixin,DRF还进一步的进行了封装,放到generics下。有以下generic类视图:
全栈程序员站长
2022/09/19
5190
Django内置的通用类视图及实例
表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须). 属性:
菲宇
2019/06/13
3K0
Django内置的通用类视图及实例
django--ajax的使用,应用
AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)
测试开发社区
2019/09/20
8300
django--ajax的使用,应用
django--ajax的使用,应用
AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)
py3study
2018/08/03
1.1K0
django 1.8 官方文档翻译: 3-4-1 基于类的视图
视图是一个可调用对象,它接收一个请求然后返回一个响应。这个可调用对象可以不只是函数,Django 提供一些可以用作视图的类。它们允许你结构化你的视图并且利用继承和混合重用代码。后面我们将介绍一些用于简单任务的通用视图,但你可能想要设计自己的可重用视图的结构以适合你的使用场景。完整的细节,请参见基于类的视图的参考文档。
ApacheCN_飞龙
2022/11/27
8830
Django REST Framework-常用的类视图
Django REST Framework是基于Django的一个用于构建Web API的框架。它提供了许多用于构建Web API的工具和实用程序,其中最常用的是类视图。类视图是一种Django REST Framework的API视图,它是基于类的视图。它提供了一种方便的方式来编写可重用的Web API视图,并带有许多有用的内置功能。
玖叁叁
2023/04/24
7200
django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单
你自己实现这些功能经常导致许多重复的样本代码(参见在视图中使用表单)。为了避免这点,Django 提供一系列的通用的基于类的视图用于表单的处理。
ApacheCN_飞龙
2022/11/27
1.9K0
python测试开发django-62.基于类的视图(APIView和View)
django中编辑视图views.py有两种方式,一种是基于类的实现,另外一种是函数式的实现方式,两种方法都可以用。 REST框架提供了一个APIView类,它是Django View类的子类。
上海-悠悠
2019/09/16
1.5K0
python测试开发django-62.基于类的视图(APIView和View)
Django-DRF | GenericAPIView 视图类
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2020/01/16
1.2K0
Django-DRF | GenericAPIView 视图类
利用Django通用类视图(class
最近在学习Django,官方文档介绍地十分详细。但是“大而全”就难免会有些不够速成,和我们这个浮躁的互联网时代格格不入,所以我就整理了这个文档。就像coolshell说的,一泡屎的时间就可以看完。
py3study
2020/01/03
1.5K0
35. Django 2.1.7 类视图
1) 首先在应用的view.py中创建两个视图test_method和test_method_handle
Devops海洋的渔夫
2022/01/17
2950
35. Django 2.1.7 类视图
点击加载更多

相似问题

使用基于类的视图和ajax的Django应用程序?

30

用于处理AJAX响应的基于django类的视图

11

使用基于Django类的视图处理AJAX时遇到问题

10

基于Django类的视图

30

基于类的视图Django

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档