Мне по работе часто приходится сталкиваться с высоконагруженными многопоточными или многопроцессными сервисами (application-, web-, index-server).
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
Читать полностью »
Метка «синхронизация» - 3
Немного о многопоточном программировании. Часть 1. Синхронизация зло или все-таки нет
2012-09-04 в 0:30, admin, рубрики: lock-free, multithreading, Mutex, threads, потоки, Программирование, Серверная оптимизация, синхронизация, системное программирование, метки: lock-free, multithreading, mutex, threads, потоки, синхронизацияCubby — синхронизация файлов с облаком и без него
2012-06-04 в 5:20, admin, рубрики: logmein, Облачные вычисления, облачные хранилища, синхронизация, метки: logmein, облачные хранилища, синхронизация Удивительно, но на Хабре до сих пор никто не посвятил отдельной статьи сервису Cubby. Скромное творение компании LogMeIn совсем потерялось на фоне весеннего «облачного бума», когда свои сервисы для синхронизации файлов в «облаке» почти одновременно запустили Google, Яндекс и Microsoft. А между тем, у Cubby есть несколько интересных особенностей, которые заслуживают внимания.
Читать полностью »
Библиотека OmniThreadLibrary — простая многопоточность в среде Delphi
2012-05-28 в 7:48, admin, рубрики: concurrency, Delphi, multithreading, Алгоритмы, многопоточность, Параллелизм, Программирование, разработка, синхронизация, метки: concurrency, Delphi, multithreading, Алгоритмы, многопоточность, Параллелизм, разработка, синхронизация Написать интересную статью на техническую тему очень сложно. Приходится балансировать между тем, чтобы не скатиться в технические дебри и тем, чтобы совсем ничего не сказать. Сегодня я попробую в общих словах (без деталей) поговорить о том, как обстоят дела с разработкой многопоточных desktop-приложений в не столь популярной на сегодняшний день, но наверняка знакомой многим российским разработчикам среде Delphi. Статья ориентирована на НЕ новичков в программировании, являющихся при этом новичками в области создания многопоточных приложений.
Читать полностью »
Прототип клиента клиента Яндекс.Диска для Linux и открытие API
2012-04-28 в 8:19, admin, рубрики: inotify, xmpp, синхронизация, яндекс, Яндекс.Диск, метки: inotify, xmpp, синхронизация, Яндекс.ДискНа днях Яндекс открыл документацию API Яндекс.Диска, и я хочу рассказать о примере программы, созданной на базе этого API.
У Яндекс.Диска есть отдельные клиентские программы для ОС Windows и Mac OS X, которые поддерживают локальную копию файлового хранилища. Это невероятно удобно! Надо отдать должное Дропбоксу, который, кажется, первым предложил именно такой способ использования облачного файлового хранилища.
Для Линукса клиента нет, но зато Яндекс.Диск поддерживает доступ к файлам по открытому и отлично себя зарекомендовавшему за многие годы протоколу WebDAV. Поддержка WebDAV в ядре Линукса позволила относительно малой кровью создать прототип синхронизирующего клиента Яндекс.Диска.
Текущая версия доступна на гитхабе — это примерно 130 строк кода на Перле, а здесь я очень кратко расскажу, как она устроена и работает.
Краткий дисклеймер: поскольку пока это в большей степени прототип, использовать программу для синхронизации важных данных не рекомендуется. Клиент имеет пока лишь рудиментарую обработку ошибок, а также расходует куда больше памяти, процессора и трафика, чем можно.
Прототип клиента Яндекс.Диска для Linux и открытие API
2012-04-28 в 8:19, admin, рубрики: inotify, perl, xmpp, синхронизация, яндекс, Яндекс.Диск, метки: inotify, perl, xmpp, синхронизация, Яндекс.ДискНа днях Яндекс открыл документацию API Яндекс.Диска, и я хочу рассказать о примере программы, созданной на базе этого API.
У Яндекс.Диска есть отдельные клиентские программы для ОС Windows и Mac OS X, которые поддерживают локальную копию файлового хранилища. Это невероятно удобно! Надо отдать должное Дропбоксу, который, кажется, первым предложил именно такой способ использования облачного файлового хранилища.
Для Линукса клиента нет, но зато Яндекс.Диск поддерживает доступ к файлам по открытому и отлично себя зарекомендовавшему за многие годы протоколу WebDAV. Поддержка WebDAV в ядре Линукса позволила относительно малой кровью создать прототип синхронизирующего клиента Яндекс.Диска.
Текущая версия доступна на гитхабе — это примерно 130 строк кода на Перле, а здесь я очень кратко расскажу, как она устроена и работает.
Краткий дисклеймер: поскольку пока это в большей степени прототип, использовать программу для синхронизации важных данных не рекомендуется. Клиент имеет пока лишь рудиментарую обработку ошибок, а также расходует куда больше памяти, процессора и трафика, чем можно.
Синхронизация вКонтакте с адресной книгой для iPhone. Как это делалось
2012-04-16 в 15:23, admin, рубрики: App Store, iphone, oauth, Вконтакте, Вконтакте API, контакты, синхронизация, я пиарюсь, метки: app store, iPhone, oauth, Вконтакте, вконтакте api, контакты, синхронизация Предыстория приложения — на андроидофонах при установке приложения ВКонтакте есть возможность использовать его как провайдер контактной книги — синхронизировать контакты из соцсети с контактами в адресной книге. При этом тянется аватар, дата рождения, адрес, телефоны и т.д. Когда я после длительного использования HTC Wildfire S оценил и настолько привык к этой возможности, что захотел найти подобное на айфон. Не нашел, поэтому мы взяли и сделали свое — Синхронизатор вКонтакте :)
Читать полностью »
В Google Chrome 19 появилась синхронизация открытых вкладок
2012-04-10 в 22:09, admin, рубрики: Google, Google Chrome, браузеры, синхронизация, метки: Google Chrome, синхронизацияЧитая новости о Google Chrome, я каждый раз искренне поражаюсь номеру новой версии. Вроде бы ещё совсем недавно выходила четвёртая, а сейчас уже девятнадцатая.
Так вот, как сообщает Engadget, в бете Google Chrome 19 появилась интересная функция для тех, кто пользуется Хромом на нескольких устройствах. Допустим, в конце рабочего дня вы начали читать большую интересную статью, и, придя домой, хотите её дочитать. Но проблема: ссылки на неё у вас не осталось, и вы никак не можете её найти.
В новом Хроме это решаемо: если вы авторизованы в браузере, то все открытые вами вкладки синхронизируются на всех ваших устройствах. Чтобы увидеть вкладки с других своих устройств, стоит лишь открыть меню «Другие устройства» на странице с новой вкладкой.
Яндекс.Диск — первый взгляд
2012-04-05 в 20:40, admin, рубрики: DropBox, Облачные вычисления, облачные хранилища, облачный хостинг, синхронизация, хостинг, яндекс, Яндекс.Диск, метки: DropBox, облачные хранилища, облачный хостинг, синхронизация, яндекс, Яндекс.Диск
Утром 5 марта Яндекс внезапно представил широкой общественности свой новый сервис — Яндекс.Диск. Запись в корпоративном блоге Яндекса обещала 10 гигабайт бесплатного места под хранение файлов, программы-клиенты под Windows и Mac OS X, мобильные приложения для iOS и Android и много-много радости детишкам любого возраста.
При этом запись не содержала ответа на самый главный вопрос — будет ли это просто склад файлов, или полноценный сервис для синхронизации вроде Dropbox. Лучший способ узнать ответ — попробовать самому. И я пошёл пробовать.
Читать полностью »
Веб-разработка / RealSync — односторонняя синхронизация исходников в реальном времени для веб-разработчиков
2012-03-03 в 17:37, admin, рубрики: Веб-разработка, веб-сервер, синхронизация, метки: Веб-разработка, веб-сервер, синхронизация Представляю общественности утилиту RealSync (GPL). Ее призвание — облегчить работу тех, кто периодически мучается от лагов сетевой папки Samba при поиске/редактировании файлов веб-проекта. Идея RealSync в том, что вы теперь работаете с файлами сайта на локальной машине в привычной IDE, а результат, как и прежде, смотрите на удаленном разработческом веб-сервере, куда RealSync копирует изменения в реальном времени. В результате вы можете, например, запустить поиск по всем файлам в IDE — они же локальные, а не подключены через сетевую папку по Samba,Читать полностью »