Как стать автором
Обновить
73
Карма
0
Рейтинг
Александр Календарев @akalend

Ламер с 20 летнем стажем

DLS проект за три дня или WEB проект по детекции изображений

Я пиарюсь

Цель данного сообщения поделиться своими впечатлениями о написании проекта, от реализации которого я получил долю адреналина и помочь студентам DLS, выбравшим эту тему.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 2K
Комментарии 3

Web-Оповещения в нагруженных проектах

Высокая производительность *Анализ и проектирование систем *Lua *
В современном WEB Конструировании очень часто возникают задачи, когда необходимо оповестить пользователя о каком-нибудь событии: пришло новое сообщение, изменился курс на бирже или статус заказа, с конвертировался видео-контент или подскочила температура больной бабушки.

Есть несколько вариантов решения такого класса задач. Наиболее оптимальное и распространенное решение – это подписка на события. Как это реализуется в нагруженных проектах?
Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Просмотры 8.6K
Комментарии 11

Система рейтингов в высоконагруженном проекте

Высокая производительность *NoSQL *Lua *
Рассказ будет про один контентный проект, в котором мне пришлось переделать архитектуру. Ранее была реализована классическая Лампа-схема (Linux-Apache-MySQL-PHP). Но кол-во посетителей прибавлялось и прибавлялось, уже стало подходить к 1М хостов и сервер БД переставал справляться. Первым делом, я предложил докупить еще один серак, но в данном сегменте конвертация в партнерских программах довольно низкая, так что, руководство проекта немного пожмотилось.

Если, интересно, как мне пришлось изменить архитектуру и при этом еще прикрутить систему ротации и рейтингов, то добро пожаловать под кат.
Читать дальше →
Всего голосов 17: ↑13 и ↓4 +9
Просмотры 10K
Комментарии 22

Из говнокода в Highload. Используем ТАРАНtool. 5 рецептов повышения производительности

Высокая производительность *PHP *NoSQL *
Ко мне обратился один руководитель стартапа социальной игры с просьбой увеличить производительность своего проекта. На этом этапе был сделан и запущен прототип проекта. И надо отдать должное разработчикам, что проект работал и даже приносил какую-то прибыль. Но, запускать рекламную компанию не имело смысло, так как проект не выдерживал ни каких нагрузок. Валился MySQL (35% ошибок).

Код проекта… В общем у меня осталось впечатление, что писал его недоученный студент… И это, немотря на то, что уже был сделан частичный рефакторинг другим программистом. Единственное, что радовало, то это то, что не использовался какой-либо фреймворк. Конечно, это вечно флеймовый вопрос: Иисус или Магомед? Быть или не Быть? Unix или Windows? Использовать или не Использовать? ИМХО, Моё мнение: фреймворки заточены под узкий круг типовых задач. Социальный проект — задача, как правило, не типовая… Но, в целом, мне проект показался интересным и я решил взяться за улучшение. На этом вступление можно закончить…

Наверно, про повышение производительности и тему highload не писал только ленивый WEB разработчик, знающий хоть что-то в этой области. Принципиально, что-то нового, в данной статье вы не найдёте. Основные идеи разработки highload проектов, были мною изложены в цикле статей HighLoad. Три кита.. Если вам интересно, как я увеличил производительность PHP проекта, используя NoSQL хранилище tarantool, то Добро пожаловать под кат.

Хотя, принципиально можно использовать другое, подходящее под данный круг задач, key/value хранилище, и реализация серверной логики может быть на любом другом скриптовом языке.
Читать дальше →
Всего голосов 53: ↑31 и ↓22 +9
Просмотры 33K
Комментарии 52

Тезисы к докладу на Highload++ «Опыт создания собственных key/value хранилищ для небольших высоконагруженных проектов»

Высокая производительность *NoSQL *
Под катом тезисы, хочется знать, что из этого вызовет интерес, а что сократить
Читать дальше →
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 4.8K
Комментарии 2

Confetti — простая и быстрая конфигурация Вашего проекта

*nix *
Если Вы пишете проект чуть более среднего, то как правило сталкиваетесь с настройками и конфигурированием. Есть не мало решений на С/С++, хочу рассказать еще про одно довольно-таки простое и красивое решение от Компании mail@Ru, которое я использовал в своем проекте

Сам я пользовался разными парсерами конфига, в последних проектах использовал re2c (конфиг был похож на конфиг nginx). У re2c есть даже немного общего с Конфети — это кодогенерация:
никаких настроечных файлов и структур кодить не надо, все за вас сделает Маг Confetty.

К сожалению, документации ни какой, иначе не было бы этой статьи. Интересующим, милости просим…
Читать дальше →
Всего голосов 14: ↑8 и ↓6 +2
Просмотры 958
Комментарии 4

PHP модуль для Tarantool

NoSQL *
imageTarantool это разработка компании Mail.ru. Представляет высокопроизводительное key/value no-Sql решение.Отсутствие портов для популярных языков программирования сдерживает популярность данной БД. Попытался восполнить данный пробел.
Ветка экспериментальная. Исходники
Далее примеры.
Читать дальше →
Всего голосов 30: ↑27 и ↓3 +24
Просмотры 6.5K
Комментарии 32

Tarantool Данные и Протокол

NoSQL *

Tarantool это замечательное высокопроизводительное no-Sql решение, разработка компании Mail.Ru. Исходники

Данное решение позволяет использовать как режим key/value, так и выборку множества записей в рекордсет по одному или нескольким критериям (полям поиска). Аналогов в рунете и не только, я пока не встречал. С натяжкой можно сравнить редис. Но в редисе — списковые данные и их нельзя выбирать по ключу. Судя до утверждениям разработчиков, скорость доступа по ключу превосходит memcache, при этом еще в бэдграунде осуществляется постоянное сохранение данных на диск. Но к сожалению, данная разработка имеет единственный perl клиент для доступа к данным, из-за чего не имеет такой популярности, как например у redis или memcache.

В doc/box-protocol источников есть описание Протокола, которое я в настоящее время переработал для написания клиента на Си и PHP. Изучив Протокол, вы можете реализоать нативный клиент на любимом Вам языке. Надеюсь, данная статья в этом Вам пригодится.

Читать дальше →
Всего голосов 66: ↑50 и ↓16 +34
Просмотры 5.4K
Комментарии 40

HandlerSocket на AddConf Санкт-Петербург 29-30 апреля

MySQL *
На AddConf будет мой доклад «Ускоряем MySQL в десятки раз с использованием HandlerSocket».

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

А так же будет обозрение и результаты использования совместно с технологией sphinx и в качестве модуля nginx и обзор аналогичной технологии innoDb-memcache.

Хочется услышать пожелания к материалам доклада (что добавить а что наф. не нужно), а так же приглашаю его прослушать в живую.

Презентация

PS. Графика при конвертации немного сбилась. В оригинале этого нет.

Промокод на 5% скидку «Александр Календарев — читаю» .

ссылки по теме:
Первый опыт работы с Handler Socket & php_handlersocket
Некоторые тонкости Update & Insert в Handler Socket
nginx модуль
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 932
Комментарии 8

http_handlersocket_json_module

Nginx *
О назначении модуля можно догодаться из названия. О HandlerSocket говорят много и на разных языках (в основном на японском, английском и последнее время немного на русском).
Модуль NGX_HTTP_HANDLERSOCKET_JSON_MODULE обращается к данным MySQL через протокол HandlerSocket и отдает данные в формате JSON. Область применения AJAX.
Исходники

О конфигурации, особенностях и ограничениях можно почиать ниже.
Читать дальше →
Всего голосов 38: ↑35 и ↓3 +32
Просмотры 1.6K
Комментарии 52

Первый опыт работы с Handler Socket & php_handlersocket

NoSQL *
handlersocket

Немного вскружилла голову статья Использование MySQL как NoSQL — История о том, как достичь 750,000 запросов в секунду (Перевод моего друга Вадима). Есть и другие материалы по этой теме. И вот дошли руки до экспериментов.

Под PHP разработано три разных клиента:
extension code.google.com/p/php-handlersocket
PEAR openpear.org/package/Net_HandlerSocket
PHP native github.com/tz-lom/HSPHP

Ниже приведены мои впечатления о первых экспериментах.
Читать дальше →
Всего голосов 50: ↑45 и ↓5 +40
Просмотры 10K
Комментарии 64

Быстрый автокомплит с использованием libscgi

Разработка веб-сайтов *
Недавно была опубликована статья "libscgi — эффективное решение для простых и быстрых скриптов". Хотелось бы продолжить ранее представленую тему с более практической стороны. Как уже догадались из название — речь пойдет об скрипте автокомпита.

Пользователей, и меня в частности, всегда разражали эти уж медленные автокомплиты. Бывает наберешь уже почти все слово, как появляется выпадающая менюшка. Понятно, что JavaScript сам по себе медленный. Но если еще автокомплит будет тормозить на стороне сервера, то вообще как-то кисло получается. Выход есть, если на серверной части использовать, что-то более быстрое, как вариант можно использовать бинарный скрипт с использованием libscgi. Исходники тут. Чуть ниже подробности.
Читать дальше →
Всего голосов 14: ↑8 и ↓6 +2
Просмотры 1.4K
Комментарии 11

libscgi — эффективное решение для простых и быстрых скриптов

Высокая производительность *
Очень часто необходимо реализовать простое легкое решение, которое должно отработать довольно быстро. А с использованием технологии AJAX это стало еще актуальнее. Это может быть как скрипт автокомплита, скрипт специфического поиска, вывод информации из справочника. Ранее использовались cgi скрипты. При больших нагрузках они оказались не очень эффективными и были разработаны протоколы fcgi и scgi. Следует заметить что производительность scgi сервера довольно-таки высокоя (более 1500 запр/сек) и памяти занимает всего 600K.

Протокол Simple Common Gateway Interface (SCGI) — это протокол по взаимодействию приложений с веб (http) серверами. Большинство современных WEB-серверов (Apache/nginx/lighttpd) имеют встроенную поддержку scgi. Ниже дано краткое описание использование простой библиотечки, которая представляет собой scgi сервер.

Исходники тут.
Читать дальше →
Всего голосов 31: ↑27 и ↓4 +23
Просмотры 4.1K
Комментарии 40

Повышение производительности за счет блочного кеширования

Высокая производительность *
Тема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.
схема кеширования блоками
Читать дальше →
Всего голосов 56: ↑49 и ↓7 +42
Просмотры 5.4K
Комментарии 60

Сервер подсчета кликов

Высокая производительность *
Если ваш проект использует подсчет кликов и на нем есть какая-либо солидная нагрузка, то вы наверно задумывались об отдельном решении.

История разработки уходит в один проект торгово-рекламной площадки, где необходимо было учитывать кол-во переходов. Было решение на РНР. Но это давало видимую задержку в 0.5-1 сек, что очень раздражало разработчиков (в частности меня) и я думаю пользователей тоже.

По этому, когда пришлось разрабатывать аналогичный проект, мне пришлось искать альтернативы.
Читать дальше →
Всего голосов 96: ↑77 и ↓19 +58
Просмотры 2.9K
Комментарии 126

Домашний датацентр или как начать не имея за душой ни гроша

Я пиарюсь
датацентр под столомВы молоды, амбициозны, полны сил и идей, и готовы перевернуть весь Мир! Но как правило, все хорошие начинания всегда заканчивается на самом банальном — нет средств для их реализации. Инвесторы готовы вложить в Ваш проект средства, но им нужно доказать «как Вашу состоятельность, так и состоятельность Вашего проекта». А, имея мешок идей и ничего за плечами — есть большая вероятность, что в «Вас Не Поверят». Как начать, не имея стартового капитала?
Читать дальше →
Всего голосов 187: ↑116 и ↓71 +45
Просмотры 966
Комментарии 121

AMQP-REST

Разработка веб-сайтов *
про AMQP говорили много. Очередная разработка, ориентированная на AJAX.
Возможности:
  • читать из очереди одно сообщение
  • читать из очереди все сообщения
  • узнать длинну очереди
  • публиковать сообщение в обмен

Данные возвращаются в JSON.
Читать дальше →
Всего голосов 12: ↑8 и ↓4 +4
Просмотры 5.6K
Комментарии 26

Служба мгновенных собщений своими руками

Чулан
Все мы привыкли пользоваться аськой, многие этот функционал реализуют в своих проектах, кто-то использует БД, или сервер очередей, например memcacheq. Есть готовые решения, типа eJabber.

Если интересно, как можно сделать это самому, то wellcom под каст, где будет рассмотрена серверная часть «Службы мгновенных сообщений». С клиентской, я надеюсь, разберетесь сами…
Читать дальше →
Всего голосов 24: ↑12 и ↓12 0
Просмотры 808
Комментарии 17

Библиотека amqpcpp. Часть 2 — Очереди

Разработка веб-сайтов *
В статье «Lib amqpcpp wrapper for librabbitmq» был обзор публикации сообщений по протоколу AMQP. Данная статья является ее продолжением, в которой ниже описывается как использовать Очереди.
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.4K
Комментарии 2
1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность