Я работаю на «главном» сервере вместе с 4 «ведомыми».
Хозяин - это http, на котором запущен сервер приложений rails, а ведомые - это экземпляры ec2, выполняющие скрипт.* Ведомые устройства отправляют http-запрос мастеру, на который мастер отвечает json-запросом элемента в базе данных. До того, как запрос будет обработан, мастер должен установить для поля с именем -sent- значение "ИСТИНА" , чтобы элемент больше не обслуживался.
Шаги:
- Запрос на получение.
- Поиск элемента из базы данных.
- В поле отправлено в значение true.
- Отправка JSON обратно из элемента базы данных.
Проблема
Я вижу в выходных данных сценариев оболочки, что, хотя данные обслуживаются, иногда одна и та же вещь подается двум подчиненным вв то же время.
class Places < ActiveRecord::Base
def sentout
self.update_attributes(:sent => "True")
end
def self.worker
@a = Places.select("id,address,city").where("sent is null").first
@a.sentout
return @a.to_json
end
end
С точки зрения, это то, что происходит:
def index
@a = Places.worker
render :json => @a
end
В соответствии с этим, независимо от того, сколько рабов у меня запрашивают данные для обработки, это должно составлять УНИКАЛЬНЫЕ данные (отправленное поле равно ""), но я вижу одни и те же элементы в выходных данных 2 сценариев, что означает, что иногда подчиненные машины в конечном итоге обрабатывают одну и ту же вещь дважды.
Этоправильный подход к этой проблеме?Я новичок в этом и пытаюсь использовать наиболее логичный подход.
Буду признателен за любую помощь, которую я пытаюсь решить самостоятельно.