Консультация № 190559
13.02.2017, 13:02
0.00 руб.
0 10 0
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Есть сервис, на котором одни люди, создают разного рода задания другим людям в Вконтакте.

Например: Один пользователь создал задание другим пользователям - поставить лайк под фотографией, за это он платит N-ю сумму балов (внутренняя валюта сервиса) тем, кто это задание выполнил и получил за это баллы.

Далее, необходимо, что бы тот кто задание выполнил, не отменил свое действие, а если и отменил, то, что бы сервис это заметил, и наказал, принудительным списанием баллов в пользу создателя задания.

Вот в общем-то и суть вопроса: как сделать, что бы сервис мог в течение длительного времени, без существенной нагрузки на сервер, отслеживать нарушителей и наказывать в соответствии с правилами.

Какие есть варианты реализации?

P.S. Сам не програмист, так, что пожалуйста, делитесь мыслями на доступном для дилетанта языке, что бы я потом мог объяснить идею механизма програмисту.

Обсуждение

давно
Посетитель
7438
7205
13.02.2017, 14:07
общий
13.02.2017, 14:09
Адресаты:
Все во многом зависит от реализации.
Например, если все данные хранятся в базе, то можно добавить еще одно поле, говорящее о том, что задание выполнено.
При выполнении задания помечать значением, говорящем о том, что "выполнено".
Если от исполнителя приходит запрос на отмену, то проверять значение этого поля.
Далее все просто: если поле = "выполнено", то накладать штраф.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400926
5
13.02.2017, 14:30
общий
Цитата: Лысков Игорь Витальевич
Если от исполнителя приходит запрос на отмену, то проверять значение этого поля.


Тут такой нюанс, что как таковой запрос от исполнителя не приходит. Т.е. Скажем, он поставил в ВК лайк под фотграфией, получил за это баллы, всё. Далее, он может спокойно этот лайк в ВК снять. И задача состоит в том, что бы сервис смог отследить данное действие.

А т.к. пользователей много (десятки тысяч), то и нагрузка на сервер при постоянном мониторинге будет большая. Потому, ищу решение, что бы можно было отслеживать каждого, в течение длительного времени, без существенной нагрузки на сервер.

Моя мысль была такая, что бы сервис вел базу по каждому созданному заданию, в которой есть данные о том, кто это задание выполнил и когда. В дальнейшем, думал, как вариант, сервис бы проверял, скажем раз в неделю эту базу, и сравнивал с данными api Вконтакте на разногласия, и тем самым вычислял бы нарушителей.

Но повторюсь, т.к. я дилетант, это весьма поверхностная идея, потому и пытаюсь найти лучшее решение у более компетентных людей.
давно
Посетитель
7438
7205
13.02.2017, 14:46
общий
Адресаты:
Опять все упирается в реализацию.
Я смутно представляю, как проверяется, что лайк под фото поставлен или снимается?
Можно ли привязать какое-то действие (тот же лайк) к чему-то другому (к проверке сервиса)
Т.е. хотелось бы сделать, чтобы проверка делалась в момент действия. Тогда постоянные проверки будут ненужны.
Моя мысль была такая, что бы сервис вел базу по каждому созданному заданию, в которой есть данные о том, кто это задание выполнил и когда.
И я о том же.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400926
5
13.02.2017, 15:18
общий
Цитата: Лысков Игорь Витальевич
Я смутно представляю, как проверяется, что лайк под фото поставлен или снимается?


Через Api Vkontakte

Цитата: Лысков Игорь Витальевич
Можно ли привязать какое-то действие (тот же лайк) к чему-то другому (к проверке сервиса)


Оно так и сделано, когда человек выполняет задание, сервис получает данные о выполненном действии черет Api Vkontakte, таким образом и происходит проверка, выполнено задание или нет. Если выполнено, человек получает за его выполнение баллы, если нет, не получает.


Цитата: Лысков Игорь Витальевич
Т.е. хотелось бы сделать, чтобы проверка делалась в момент действия.


Как уже описал выше, проверка как раз и происходит во время выполнения задания.

Но человеку, после выполнения, ничего не мешает взять и снять этот лайк.

Соответственно, мне нужно, что бы данное действие было замечено сервисом.

Как я уже описал выше, сделать базу не проблема, но нужно придумать эффективный механизм, который не будет сильно жрать ресурсы сервиса, и сможет проверять - не снял ли пользователь лайк, поставленный несколько дней/недель/месяцев тому назад.
давно
Посетитель
7438
7205
13.02.2017, 15:53
общий
Адресаты:
Как уже описал выше, проверка как раз и происходит во время выполнения задания
Раз происходит проверка, то наверняка проверяется есть лайк или снятие лайка.
Вот и предлагаю продолжить следить за лайком столько, сколько надо. Если это реально сделать, то было бы самый раз.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400926
5
13.02.2017, 16:26
общий
Цитата: Лысков Игорь Витальевич
Вот и предлагаю продолжить следить за лайком столько, сколько надо. Если это реально сделать, то было бы самый раз.


Чисто технически, это сделать реально, но как я уже пояснил, пользователей десятки тысяч, самих заданий, с такими вот лайками еще больше, и если сервис будет постоянно мониторить всю эту кучу, то сервер просто рухнет.

Но я рад, что Вы пытаетесь вникнуть в суть. Думаю, Вы уже близки к понимаю, того, что мне нужно.

Как Вы видите, реализовать мониторинг 24\7 невозможно, потому, я ищу альтернативу, которая позволила бы замечать нарушения (отмену поставленного лайка), пусть и не сразу, и наказывать.

Как вариант, я думал, может привязать проверку , не отменен ли лайк, к какому-то событию. Например, вход (логин) пользователя на сервис, или при попытке потратить пользователем заработанные баллы при создании задания. Или быть может еще добавить сюда какое-то расписание, не знаю как будет лучше, затем сюда и пришел.
давно
Посетитель
7438
7205
13.02.2017, 20:10
общий
13.02.2017, 20:12
Адресаты:
если сервис будет постоянно мониторить всю эту кучу
Я не предлагаю "мониторить эту кучу", а реагировать только в момент лайка/отмены от лайка или каких-то других заданий. Загрузки на сервер никакой!
Человек нажимает, сервис ловит нажатие и принимает решение, что делать: засчитать, отказать , проигнорировать или наказать...
Я бы думал именно в таком направлении...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400926
5
15.02.2017, 18:47
общий
Цитата: Лысков Игорь Витальевич
Я не предлагаю "мониторить эту кучу", а реагировать только в момент лайка/отмены от лайка или каких-то других заданий. Загрузки на сервер никакой!
Человек нажимает, сервис ловит нажатие и принимает решение, что делать: засчитать, отказать , проигнорировать или наказать...
Я бы думал именно в таком направлении...


Так сделать не получится. Что бы сервис поймал отмену лайка, он должен сделать запрос на api Vkontakte, апи даст ответ, была ли отмена, и на основе ответа, сервис принимает решение. Потому, сервис должен периодически повторять проверку. Но, таких вот лайков, а следовательно и запросов в общей сложности очень и очень много.
Например, 100 пользователей, совершающих 100 лайков в течение месяца, это 300 000 запросов от сервиса к api vkоntakte, и это только лайки, и только на примере 100 постоянных пользователей. И количество только растет. От сюда и вся сложность создания механизма проверки.
давно
Посетитель
7438
7205
16.02.2017, 11:41
общий
Адресаты:
Мои советы на этом закончились.
Поговорите еще со своим программистом. Может у него есть какие-то мысли на этот счет.
Все-таки он знает систему изнутри.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400926
5
16.02.2017, 11:45
общий
Цитата: Лысков Игорь Витальевич
Мои советы на этом закончились.
Поговорите еще со своим программистом. Может у него есть какие-то мысли на этот счет.
Все-таки он знает систему изнутри.


Благодарю, за уделенное мне время.
Форма ответа