Привет всем! Нужна помощь техспецов. Хочу на смартлабе сделать вот такую табличку:
http://quote.rbc.ru/exchanges/demo/micex.0/intraday
Эта табличка у квоты обновляется автоматом раз в 5 сек.
Насколько я понял по API интерфейсу биржи, собирается она из вот таких запросов:
http://moex.com/iss/engines/stock/markets/shares/securities.xml?securities=GAZP
Как это лучше реализовать технически на стороне сервера?
На чем писать серверную часть? Как сделать так, чтобы это минимально грузило сервак и выполняло расчеты параметров по каждой бумаге?
+ я хочу ещё сохранять данные раз в 5-10 минут и делать с таким же интервалом определенные вычисления… результат которых будет в этой же табличке + сделать фильтры, по которым можно будет показывать бумаги
p.s. договор с биржей подписал
habrahabr.ru/company/dnevnik_ru/blog/167307/
nodeguide.ru/doc/modules-you-should-know/socketio/
На сервере делается пулинг данных с биржи, отслеживаются изменения в данных и по веб сокетам или другому транспорту отсылаются изменения клиентам. На клиенте можно использовать angular, backbone или react js. Серверная реализация может быть на .net + signalR или на node.js + socket.io, исходя из возможностей хостинга.
на чём угодно, я думаю это можно делать не на сервере, а на клиенте. Желательно чтобы данные с моекс приходили в json формате.
Минимизировать запросы к серверу моекс, стараться все данные выкачивать одним запросом.
По таймеру дергается скрипт, он параллельно в несколько потоков, закачиват данные с сервера майсекса, агрегирует их и засовывает в базу, либо сразу генерит страничку которую можно отдать.
Далее ПХП на уровне функционала сайта, отдает эту страничку либо строит ее из базы.
хранить нужно только будет «срезы» раз в 5-10 минут для вычислений некоторых
спасибо за рекомендации, я передам их программеру
и хорошо что ты вернулся на смартлаб
помнишь, как ты на меня обижался?:)
>помнишь, как ты на меня обижался?:)
Последний раз когда я на тебя «обижался» это было в ноябре 2012 года, когда выпилили Феникса. Просто времени в основном нет, чтобы зависать на смарт-лабе. А так я время от времени читаю, изредка коментрую, и даже посты пишут если есть чем поделится интересным.
потому что каждый расстроенный смартлабом человек — это травма для меня)
1. На SQL Server создал таблицу (скорее группу таблиц).
2. На SQL Server создал Stored procedure (на t-sql) которая делает нужные вычисления на базе таблиц из п.1
3. На .NET написал процедуру которая
3.1. Запрашивает данные по HTTP в формате XML
3.2. Парсит XML документ и записывает данные в таблицу из п.1
3.3. Вызывает процедуру из п.2
4. Создал задание по расписанию (на сервере) которое регулярно с заданной частотой выполняет процедуру п.3.
К подобного класса задачам лучше подходить обдуманно. Обдумывать максимально будущую систему в рамках которой будет работать данное решение. Фундаментальный вопрос тут — реляционная модель базы данных. Остальное — вторично. Модель данных — должна проектироваться исходя из модели семантического уровня. Несколько заумно может показаться, но делать лучше так.
обдумаем
я могу давать ток с задержкой 15 минут
Котировки меняются часто. все равно задержка 15 минут. Поэтому кмк нет необходимости городить пуш уведомления по каждому чиху, клиент должен получать все данные разом. Проще всего написать на клиенте скрипт который с определённой периодичностью получает с сервера данные в виде json и обновляет их на странице.
(сугубо моё имхо как виндовс программера)
всего 4 потока, серверу ни холодно ни жарко, хули тут делать
а вообще взяли бы в эластик загнали и получили бы в готовом виде все, осталось бы только клиентам разослать по вебсокетам или аналогичным транспортом
На MySQL (и прочих SQL) слишком дорого и бестолково по ресурсам, нужна специализированная база данных, типа InfluxDB
influxdata.com/
1. По запросу. Запрашивать в json все за раз.
Вроде оно? moex.com/iss/engines/stock/markets/shares/securities.json
2. Чем запрашивать. Любым способом. Да хоть wget по крону.
3. Где хранить. Странно, что тут еще Оракл не предложили. :) Сиквел — это медленно и дорого. Бесплатная монга для такой задачи более чем подходит. Если уж так охота именно реляционную БД, то постгре на край. Хотя я, так понял, у тебя MySql используется? Можно и в нем хранить, если цель использовать то, что есть. Но NoSQL будет эффективнее (та же монга) В общем, тут нужны требования.
4. По трафику. Откуда гигабайты? У меня получилось ~150мб/сутки несжатого трафика при запросе раз в 5 минут (0,5х12х24)
5. По нагрузке. Раз в 5 минут 0.5мб. Это большая нагрузка на биржу? Думаю, нет
Если есть вопросы, обращайся!