Германия
Оригинальный автор(ы) | Брэд Фицпатрик |
---|---|
Разработчик(и) | Брайан Акер , Эрик Дэй |
Первоначальный выпуск | 8 января 2009 г. |
Стабильная версия | 1.1.19.1
/ 18 февраля 2020 г |
Репозиторий | github |
Написано в | C++ , C , M4 , сценарий оболочки |
Операционная система | Linux , Windows (без сервера), OpenVMS |
Доступно в | Английский |
Лицензия | Лицензия БСД |
Веб-сайт | немецкий |
Gearman — это платформа приложений с открытым исходным кодом, предназначенная для распределения соответствующих компьютерных задач между несколькими компьютерами, что позволяет выполнять большие задачи быстрее. В некоторых случаях балансировка нагрузки основной целью может быть , а не чистая скорость; веб-сервер, например, может использовать Gearman для отправки задач, для которых он не оптимизирован, на другой компьютер (который может работать на другой архитектуре , использовать другую операционную систему или загружен компьютерным языком, лучше подходящим для конкретной операции) .
Первоначально он был написан на Perl Брэдом Фицпатриком . Брайан Акер переписали структуру на C. и Эрик Дэй
Как работает немецкий язык
[ редактировать ]Gearman назначает каждому задействованному компьютеру роль клиента заданий , сервера или рабочего. Рабочей машине можно назначить несколько экземпляров рабочей роли, что позволяет более мощным компьютерам выполнять больше частей заданной задачи. Задачи возникают на клиенте, передаются от клиента на сервер заданий и выполняются одним или несколькими работниками. Затем выходные данные завершенной задачи возвращаются, опять же через сервер заданий, клиенту, из которого возникла задача. Gearman концептуально связан с MapReduce ; Gearman обрабатывает MapReduce, позволяя рабочим узлам распределять работу между другими работниками, при этом исходный рабочий выступает в роли редуктора.
Gearman выполняет объединение работ, отправленных клиентом. Если два или более клиента запрашивают выполнение работы над одним и тем же объемом работы, либо видя, что отправляются одни и те же блоки, либо используя уникальное значение, отправленное клиентом, работа будет объединена так, что будет доступен только один исполнитель. использовал. Это делается специально для того, чтобы избежать серьезных проблем со стадом , которые часто возникают при неудачных попаданиях в кэш.
Чтобы смягчить ущерб, который может быть нанесен в случае сбоя сервера заданий (или его сетевого подключения), клиентам можно настроить более одного назначенного сервера заданий; в случае сбоя первого назначенного сервера заданий другой можно прозрачно заменить.
Gearman реализует протокол , состоящий из двоичных пакетов, содержащих запросы и ответы; этот протокол определяет структуру сообщений, передаваемых между тремя частями реализации Gearman. По умолчанию протокол Gearman использует TCP- порт 4730. Ранее он работал на порте 7003, но это противоречило диапазону портов AFS , и новый порт (4730) был назначен IANA .
Название «Gearman» было выбрано в качестве анаграммы слова «Менеджер», «поскольку оно отправляет задания, которые необходимо выполнить, но само по себе не делает ничего полезного». [1]
Функции
[ редактировать ]- Повторные попытки задания
- Круговое планирование
- Слияние
- Постоянное хранилище через:
- libmemcached
- либморосящий дождь
- SQLite
- MySQL
- Постгрес
- ТокиоКабинет
- Redis (неизданный — в настоящее время в разработке)
- MongoDB (не выпущено — в настоящее время в разработке)
Реализации
[ редактировать ]- Германия, до версии 1.1.12
- Gearmand, с версии 1.1.13
- Java-немецкий-сервис
- Германия::Сервер
- TclGearman
Клиенты
[ редактировать ]В настоящее время существуют клиентские библиотеки для C, Perl, Node.js, Python, PHP, Ruby, Java, .NET, JMS, MySQL, PostgreSQL и Drizzle . [2]
Подобное программное обеспечение
[ редактировать ]Внешние ссылки
[ редактировать ]- http://danga.com/words/2007_06_usenix/usenix.pdf
- http://gearman.org/documentation/
- http://gearman.org/download/
- http://lists.danga.com/pipermail/gearman/2008-April/000076.html
- https://web.archive.org/web/20081209012837/http://krow.livejournal.com/628025.html
- GermanBundle для проектов Symfony2