Показать сообщение отдельно
Старый 08.10.2012, 01:29
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 13  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
В джаве даже циклы в отдельных потоках выполняются
То есть, если мне нужно 10К пользователей онлайн держать - нужно расчитывать на сервер с 8 гигами оперативной памяти? У меня при меньшем количестве банально не инциализируется пул потоков - JVM выдает сообщение, что мало памяти. Кроме того, время от времени бывает что сервер падает с ошибкой вроде "The crash happened outside the Java Virtual Machine in native code". Пошарился на формуах - говорят, что либо использую слишком много памяти, либо кончились свободные порты - последнее навряд ли, но так уж мне ответили .
А что касается платежей - написал сейчас класс для чтения http запросов на сокетах, и хочу протестировать одну фичу. При помощи iptables можно настроить редирект с одного порта на другой. Может кто-то знает, как при этом указать диапазон IP-адресов, для которых будет выполняться это правило? Чтобы все, кроме ВК, работало нормально с веб-интерфйесом, а запросы от ВК перенаправлялись уже Java-серверу.

P.S. Вроде нашел решение:
-A PREROUTING -s 188.0.64.152/32 -p tcp -m tcp --dport 801 -j DNAT --to-destination :80
-A POSTROUTING -s 188.0.64.152/32 -p tcp -m tcp --dport 801 -j SNAT --to-source :80

В примере данные для 188.0.64.152 с 801 порта перенаправляются на 80 - сделал так для теста, поставил свой IP, при обращении к 801 порту увидел веб-интерфейс. Теперь осталось только узнать, с одного ли IP приходят запросы информации о товаре с ВК. А картинку для товара, как я понимаю, будет запрашивать уже клиент, со своим IP.

Добавлено через 7 часов 32 минуты
Вопрос к тем, кто уже сделал/разобрался. Я верно понял алгоритм(рассмотрим простой случай - перевод голосов):
1. Приходит order_status_change
2. Смотрим статус, если chargeable идем дальше
3. Проверяем, нет ли этого order_id в нашей БД, если нет - добавляем и отправляем подтверждение, если есть - просто отправляем пакет с подтверждением(в документации написано, что оно может приходить несколько раз)?

Интересно, где в такой схеме лучше всего производить покупку товара, то есть модификацию записи о наличии товара/размере счета пользователя в БД. По прибытии пакета chargeable явно не вариант - пользователь может нажать на кнопку "Оплатить", и быстро закрыть окно оплаты - в итоге клиенту придет только onOrderCancel, и все. Скорее всего, нужно после отработки на стороне клиента onOrderSuccess отправлять на сервер подтверждение с order_id и app_order_id(возможно - еще и UID пользователя), опять смотреть в БД - есть ли там такой платеж, и только после этого переводить игровую валюту/выдавать товар. Верно ли я понял, или нужно все делать не так?


Последний раз редактировалось C4Grey; 08.10.2012 в 09:09.