Показаны сообщения с ярлыком fly-server. Показать все сообщения
Показаны сообщения с ярлыком fly-server. Показать все сообщения

суббота, 13 декабря 2014 г.

sqlite + levelDB

Всем привет.
Для нормальной работы серверной части флайлинка я смог подобрать только один хостинг- digitalocean
т.к. он единственный кто выдает хорошие iops-ы и позволяет держать текущую нагрузку
(возможно у меня кривые руки - я ищу способы их сровнять :)

но возникла проблема с дисковым пространством т.к. база постоянно пополняется 
а SSD пока не очень дешевые и когда размер sqlite базы добрался до 12 гб я 
пересмотрел алгоритм работы флай-сервера и унес редко-используемые данные в LevelDB 
с прозрачной компрессии  snappy

В итоге получилась следующая картинка по диску: 
  • 2.7GiB [##########] /media-db-compress.leveldb 
  • 1.7GiB [######    ]  fly-server-db.sqlite
Вся серверная часть написана на С++ с использованием http://github.com/cesanta/mongoose

Подробности миграции обсуждал тут
http://www.sql.ru/forum/1118531/vybor-bd-dlya-optimalnogo-hraneniya-musorki-json-ov



суббота, 30 марта 2013 г.

fly-server почти готов...

Всем привет.
Флай-сервер планирую перевести в продуктивную ветку r501
Подробнее о функции можно посмотреть тут /search/label/fly-server
 

Отчет по нагрузке с 1 марта (функционал обкатывается только на r502-beta-xxx)

1. Всего получено запросов к серверу - 1.481.543
2. Входящий объем json запросов - 1.279.793.942 байт  (c учетом сжатия через интерфейс прошло - 671.234.309 байт)
3. Исходящий объем ответов - 7.312.796.745 байт ( c учетом сжатия - 1.852.817.363 байт)  

Ниже приведены скрины нагрузки на виртуальный хост

Работа сервера в нормальном режиме:
Эмуляция нагрузки на CPU и диск сжатием 1 гига rar-ом 
(сразу видны задержки при этом включаются в обработку новые потоки (их активное кол-во отражено звездочками)

Думаю тут есть профи-админы веб серверов с большой нагрузкой
что посоветуете - можно выпускать или что-то нужно доработать?

среда, 20 февраля 2013 г.

fly-server + mediainfo + json- оптимизация

Анализ файлов показал избыточное хранение информации предоставляемой mediainfo

1. В случаях когда в файле Audio больще 2-х атрибуты для всех блоков 0,1,2, - N как правило совпадают









2. Выполнил слияние дубликатных атрибутов в общую групп







 


3. Экономия на размере JSON пакета ~ 1Кб




Изменения попадут в следующий билд серой сборки.
и завтра постараюсь выпустить публичную бетку.
Всем спасибо за тестирование и конструктивные баг-репорты!


вторник, 29 января 2013 г.

Обмен медиа-информацие в файл-листах

Все привет!
В серой ветке начиная с r502-build build 12742 активирован обмен с fly-server-ом и фреймом просмотра файл-листов, позволяющий видеть характеристики файлов в шарах скачанных с пользователей использующие оригинальны клиенты без поддержки расширенных тэгов mediainfo
Алгоритм работы
При открытии любого файл листа клиент:
1. Просматривает видимый список файлов в ListView справа от дерева
2. Формирует get-JSON запрос на сервер для тех файлов, которых нет у него в шаре.
{
    "array": [
        {
            "size": "367742976",
            "tth": "QPIPCPFWZSZGECKSPNRVNJ44HD3PPJMF7XMS2NQ"
        },
        {
            "size": "367640576",
            "tth": "MHRRU45RGNCNROAEVAYKJEJ4IM52ZQOT6A6DZYA"
        }
    ]
}

3. Получает ответ с сервера и дополняет информационные колонки информацией.
4. Если в видимой части есть файлы находящиеся в шаре и они содержат медиа-информацию
клиент формирует второй set-JSON запрос и предает на сервер медиа-инфу по файлам.
{
   "array" : [
      {
         "media" : {
            "fly_audio" : "43mn 17s | MPEG , 192 Kbps, 2 channels",
            "fly_audio_br" : 192,
            "fly_video" : "MPEG-4 , 1 816 Kbps, 16:9, 23.976 fps",
            "fly_xy" : "720x400"
         },
         "size" : "
367742976",
         "tth" : "
MHRRU45RGNCNROAEVAYKJEJ4IM52ZQOT6A6DZYA"
      }
   ]
}
 

5. Для экономии трафика после выполнения пункта 4 массив переданных TTH сохраняется в локальной кэш-таблице (media_db.fly_send_to_server) и более по данному файлу клиент информацию на сервер не передает.
6. При скролировании списка файлов и ожиданни в течении 2 секунд. операция с шагами 1-5 автоматически повторяется для вновь появившихся файлов.

Шлите замечания.
Кто не активировал серый канал обновления тест-версию можете скачать тут
http://flylinkdc.dyndns.org/install/last-build/test-build-for-blog


суббота, 26 января 2013 г.

Тестирование fly-server (часть 1)

Привет.
Начиная с build 12693 сборки из "серой" ветки научились копировать полную медиа-информацию полученную с сервера. Пока идет загрузка тэга mediainfo->Inform для всех типов и каналов)
Технические детали обработки результатов с сервера:
http://code.google.com/p/flylinkdc/source/detail?r=12693
Спасибо всем, кто принимает участие в тестировании.
Кто не использует серый канал обновления - может загрузить версию тут
FlylinkDC-r502-x64-beta62-build-12695-2013.01.26-22.28.35.7z
FlylinkDC-r502-x86-beta62-build-12695-2013.01.26-22.23.49.7z
FlylinkDC-r502-src-beta62-build-12695-2013.01.26-22.25.28.7z



четверг, 27 декабря 2012 г.

Медиа-информация в окне поиска (Тест-3)

Сборка  только для тестов - она будет просить обновления - отказывайтесь.
issue-843-fly-server-x64-x86-test-3.7z

С исходным кодом всей реализации данной функции можно познакомиться в ветке:
svn co http://flylinkdc.googlecode.com/svn/branches-dev/ppa/issue-618-mediainfo
Заранее спасибо за замечания.

Изменения в test-3
  • На сервер передаются только те элементы, которые видны в окне результатов поиска
  • По мере скроллирования окна на сервер досылаются запросы (с интервалом 5 секунд) после получения результата записи по которым есть сведения - немного темнеют (10%).
  • На стороне сервер исправлен баг в обработке запросов размером более 64к)
  • Снял видеоролик как это работает "Поиски Шрэка"  (fly-server-shrek-search-demo.flv )
Изменения в test-2
  •  Обмен информацией выполняется даже если не собрана расширенная инфа, собранная в FlylinkDC_mediainfo.sqlite (данная таблица заполняется только при новом хешировании)
  •  Со стороны сервера поправлен возврат параметра fly_xe - разрешение видео
  • Добавил x64
Вопросы лучше писать в трэккер но можно и сюда
Для увеличения активность - открыл доступ анонимам :)
Особенности и идея алгоритма:
* Клиент не меняет протокол.
* Ветка после успешного тестирования будет встроена в r4xx и StrongDC++ sqlite
* Для обмена используется www –сервер и алгоритм обработки пока реализован на C/C++
* База данных – sqlite (после анализа нагрузки подменю на другую – cassandra?)
* Модель хранения данных  очень простая
  - Мастер таблица TTH+size + счетчики популярности, фейков и т.д.
  - Дочерняя таблица в модели EAV для сохранения дополнительной атрибутной информации.
* У каждого клиента информация о характеристиках медиа-файла будет храниться локально в дополнительной базе данных FlylinkDC_mediainfo.sqlite. В результате использования функции поиска «постепенно» передаваться на хранение в облако. Одновременно с этим клиент будет запрашивать у облака информацию о файлах, которые попадаю под критерии поиска и в случае успешности - получать результат и визуализировать его.
* После регистрации нового TTH на сервере, фоновый процесс будем дополнять объект признаками
    - Ссылки на dcmagnets.ru и другие порталы
    - Рейтинги этого объекта на указанных порталах и т.д.
* После анализа нагрузки планируется попробовать работу без www - прослойки на чистых сокетах. (для серверной части пока тестировал libevent – может что-то еще посоветуете?)