Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
Леонид Васильев "Python в инфраструктуре поиска"
Я.Субботник в Санкт-Петербурге
О докладе:
Что такое инфраструктура поиска. Какие задачи приходится решать. Какие инструменты для управления кластером используются в поиске. Как они устроены изнутри. Что можно посоветовать проектам с большой инфраструктурой. Какие существуют open-source аналоги.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
El credo religioso se refiere a una oración que recitan los cristianos para alabar a Dios. Para el autor, el credo también representa las creencias ideológicas del cristianismo. Aunque el autor se considera casi ateo y cree que la religión es un invento humano, reconoce que otros son creyentes. Finalmente, el autor argumenta que la religión no ayuda a los niños y jóvenes a construir su proyecto de vida, y que las instituciones religiosas obligan a seguir prácticas sin razón válida.
El documento define las TIC (Tecnologías de la Información y Comunicación) como elementos y técnicas usadas para procesar y transmitir información, incluyendo computadoras, Internet y telecomunicaciones. Define las NTIC (Nuevas Tecnologías de la Información y Comunicación) como nuevas formas de comunicarse e intercambiar información a través de dispositivos, redes y servicios interconectados. Menciona algunas ventajas de las NTIC como la capacidad de comunicarse con muchas personas, aprender sobre varios temas e incluso
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
Леонид Васильев "Python в инфраструктуре поиска"
Я.Субботник в Санкт-Петербурге
О докладе:
Что такое инфраструктура поиска. Какие задачи приходится решать. Какие инструменты для управления кластером используются в поиске. Как они устроены изнутри. Что можно посоветовать проектам с большой инфраструктурой. Какие существуют open-source аналоги.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
El credo religioso se refiere a una oración que recitan los cristianos para alabar a Dios. Para el autor, el credo también representa las creencias ideológicas del cristianismo. Aunque el autor se considera casi ateo y cree que la religión es un invento humano, reconoce que otros son creyentes. Finalmente, el autor argumenta que la religión no ayuda a los niños y jóvenes a construir su proyecto de vida, y que las instituciones religiosas obligan a seguir prácticas sin razón válida.
El documento define las TIC (Tecnologías de la Información y Comunicación) como elementos y técnicas usadas para procesar y transmitir información, incluyendo computadoras, Internet y telecomunicaciones. Define las NTIC (Nuevas Tecnologías de la Información y Comunicación) como nuevas formas de comunicarse e intercambiar información a través de dispositivos, redes y servicios interconectados. Menciona algunas ventajas de las NTIC como la capacidad de comunicarse con muchas personas, aprender sobre varios temas e incluso
Hany Salah has 5 years of experience in quality control and product line supervision for an advanced technology manufacturer in Egypt. He has participated in projects overhauling diesel engines, constructing trailers, and expanding facilities. Currently he works in building maintenance in Saudi Arabia, overseeing mechanical systems. He has a mechanical engineering degree and certifications in non-destructive testing, fire alarm system design, and more.
This study investigated the presence of the FimH adhesin gene and biofilm formation among 24 Enterobacter isolates recovered from urine samples of cystitis patients. PCR results revealed that 18 of the 24 isolates (75%) were positive for the FimH gene. Phenotypic assays showed that 17 of the 24 isolates (70.8%) were biofilm formers. There was a significant positive correlation between biofilm formation and the presence of the FimH gene, with the gene present in 16 of the 17 biofilm-forming isolates (94.1%). The results indicate the importance of the FimH adhesin in biofilm establishment and pathogenesis of cystitis infections.
Hany Salah has 5 years of experience in quality control and product line supervision for an advanced technology manufacturer in Egypt. He has participated in projects overhauling diesel engines, constructing trailers, and expanding facilities. Currently he works in building maintenance in Saudi Arabia, overseeing mechanical systems. He has a mechanical engineering degree and certifications in non-destructive testing, fire alarm system design, and more.
Yasser Gamal is an Egyptian engineer seeking a challenging position. He has a BSc in communication and electronics engineering from Cairo University. He has over 10 years of experience working in broadcast engineering for television channels and news agencies, including his current role as Head of Broadcast Department at Al-Nahar TV Channel. He is proficient in English and has experience with broadcast systems from Miranda, Lawo, Harris, Avid, and others.
This document provides an overview of programming at the Alex Theatre in Glendale, California for their 2014-2015 season. It highlights a variety of performances and events including dance productions by Los Angeles Ballet, musical performances by the Los Angeles Chamber Orchestra, the return of musical theatre with Billy Elliot The Musical, films screened by the Alex Film Society, and special events including conversations with celebrities and benefits. The season aims to bring diverse programming to the theatre through partnerships with local producers.
This document provides guidance on completing a research project in 13 weeks. It outlines the key steps, including brainstorming topics, narrowing the focus, researching sources, developing a solution, and creating a presentation. Students are encouraged to try different brainstorming techniques, leverage local experts, use a variety of research materials, collaborate as a team, examine existing solutions, and practice their presentation multiple times before the final due date. The timeline suggests allocating the first few weeks to understanding the project and selecting a topic, the middle weeks for in-depth research, and the final weeks for developing the presentation and practicing delivery.
Put your strategy to work
Helix is a collaborative goal management software. It helps your organization communicate what is delivered and by whom, to ensure you successfully meet your upcoming targets. It enables you to work in a unique cross organizational and cross project-portfolio approach.
El documento resume las ventajas y desventajas de varias versiones de Windows. Entre las ventajas se mencionan la fácil instalación, mejoras en el rendimiento y nuevas funciones como Cortana. Entre las desventajas se señalan limitaciones para hardware antiguo, falta de compatibilidad con algunas aplicaciones y posibles errores al ser nuevas versiones.
San Vicente de Paúl discute la importancia de la mortificación interior, como disciplina mental y emocional, más que la mortificación externa. Explica que la mortificación del juicio y la voluntad debe hacerse gradualmente con mansedumbre y paciencia. El cardenal Mercier luego proporciona 19 recomendaciones sobre cómo mortificar la mente y la voluntad a través del control del lenguaje, escuchar antes de hablar, aceptar correcciones y obedecer a los superiores.
Модули threading, queue и concurrent.futures. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio. Модуль multiprocessing.
ЛЕКЦИЯ 3. Стандарт POSIX Threads
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Когда запускается любое приложение, то начинает выполняться поток, называемый главным потоком (main). От него порождаются дочерние потоки. Главный поток, как правило, является последним потоком, завершающим выполнение программы.
Потоки — средство, которое помогает организовать одновременное выполнение нескольких задач, каждой в независимом потоке. Потоки представляют собой экземпляры классов, каждый из которых запускается и функционирует самостоятельно, автономно (или относительно автономно) от главного поток. Хочу еще разграничить два понятия – поток и процесс. Процесс – это задача операционной системы. У него собственное адресное пространство. С ним может быть проассоциировано несколько потоков. Поток же – это гораздо более мелкая единица. Все потоки разделяют адресное пространство породившего их процесса и имеют доступ к одним данным.
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
В докладе пойдёт речь о практическом применении lock-free структур и алгоритмов, которые используются в RealTime-Поиске в Яндексе. Из-за сложности теоретических исследований по lock-free и оторванности от практики часто создаётся впечатление, что это просто развлечение для знатоков computer science и не может быть использовано в реальном проекте. Будут рассмотрены проблемы традиционного подхода к lock-free и показано, как взглянув по новому на всю идею lock-free, добиться максимальной производительности, невозможной при использовании блокировок.
1. Часть 4. Именованные каналы (pipes)
Перенаправление команд и pipes
Использование перенаправления команд и pipes — одна из наиболее мощных возможностей командной строки Unix. В
этой главе мы рассмотрим как и для чего используется перенаправление потоков ввода, вывода и ошибок, а также
рассмотрим что такое pipes и как это работает.
stdin, stdout, и stderr
Shell (а также почти все команды Linux) принимает ввод команд из стандартного потока ввода stdin (поток 0) и
отправляет вывод на стандартный поток вывода stdout (поток 1). Если команды завершаются с ошибками, то сообщения
об ошибках отправляются в стандартный поток ошибок stderr (поток 2).
Например, вы вводите команду echo Hello в консоли и нажимаете Enter (поток stdin), далее, вы видите на экране
результат ее работы — Hello (поток stdout). Если возникла ошибка, то на экран выводится какое-то сообщение (поток
stderr). В нашем примере мы работали со стандартным вводом, выводом и потоком ошибок, то есть набирали команду на
клавиатуре, результаты видели на экране, ошибки также выводились на экран.
В Unix есть возможность перенаправлять эти потоки. Например, вам нужно, чтобы результат работы команды
отправлялся не на экран а в файл или чтобы ошибки отправлялись на e-mail и т. д. Такие ситуации в администрировании
возникают постоянно. Это и есть перенаправление команд.
Перенаправление стандартного вывода
Рассмотрим перенаправление более подробно. В следующем примере stdout перенаправляется с помощью знака
больше >:
$ echo Hello world!
Hello world!
$ echo Hello world! > hello.txt
$ cat hello.txt
Hello world!
В этом примере мы перенаправляем stdout в файл. При этом создается новый файл, если его не было или полностью
перезаписывается, если он уже был создан.
Обратите внимание, что запись > на самом деле является аббревиатурой от 1> (stdout называется поток 1).
Даже если команда закончится с ошибкой файл все равно будет перезаписан! Будте внимательны при перенаправлении
stdin в файл!
$ cat hello.txt
Hello world!
$ zcho Hello world! > hello.txt
-bash: zcho: command not found
$ cat hello.txt
$
Можно предотвратить перезапись файла при использовании 1> с помощью опции noclobber:
$ cat hello.txt
Hello world!
$ set -o noclobber
$ echo Hello world! > hello.txt
-bash: hello.txt: cannot overwrite existing file
$ set +o noclobber
$
В тоже время опцию noclobber можно «обойти», используя >| вместо >:
1
2. $ set -o noclobber
$ echo Hello world! > hello.txt
-bash: hello.txt: cannot overwrite existing file
$ echo Hello world! >| hello.txt
$ cat hello.txt
Hello world!
$
Если вам нужно добавить stdout в файл и при этом не перезаписать его, то используйте >>:
$ echo Hello world! > hello.txt
$ cat hello.txt
Hello world!
$ echo Hello Linux! >> hello.txt
$ cat hello.txt
Hello world!
Hello Linux!
$
Перенаправление ошибок
Перенаправление потока ошибок выполняется с помощью 2>. Это делается достаточно часто, например, чтобы не
«засорять» экран сообщениями об ошибках. В следующем примере перенаправляется stdout в файл и stderr на
устройство /dev/null (вспомним, что /dev/null — это «черная дыра», а также, что 1> и > выполняют одно и тоже):
$ find / > allfiles.txt 2> /dev/null
$
Чтобы перенаправить в один файл и stdout и stderr можно использовать 2>&1:
$ find / > allfiles_and_errors.txt 2>&1
$
Обратите внимание, важно в каком порядке выполняется перенаправление! Так, в следующем примере:
ls > file.txt 2>&1
направляет и stdout (1) и stderr (2) в файл file.txt, а команда:
ls 2>&1 > file.txt
направляет только stdout в файл file.txt, а stderr просто копируется на stdout до того, как stdout был перенаправлен в
файл. Пока это может показаться сложным, но, используя перенаправление на практике вы поймете этот механизм
лучше.
Перенаправление стандартного ввода
Перенаправление stdin выполняется с помощью < (полная запись 0<):
$ cat < text.txt
one
two
$ tr 'onetw' 'ONEZZ' < text.txt
ONE
ZZO
$
Существует способ (называется here document или here-is-document), чтобы выполнять перенаправление stdin до
определенной последовательности символов (обычно это маркер EOF). Маркер EOF можно ввести прямо с клавиатуры
или вставить комбинацией Ctrl-D:
2
3. $ cat <<EOF > text.txt
> one
> two
> EOF
$ cat text.txt
one
two
$ cat <<brol > text.txt
> brel
> brol
$ cat text.txt
brel
$
Запутанное перенаправление
Перед перенаправлением shell сканирует командную строкудо конца. Следующая команда легко читаема и абсолютно
корректна:
cat one.txt > two.txt 2> errors.txt
В следующем примере команда также абсолютно корректна, но уже менее читабельна:
2> errors.txt cat one.txt > two.txt
И даже эта команда будет корректна:
< one.txt > two.txt 2> errors.txt cat
Как быстро очистить файл
Как удалить всю информацию из файла самым быстрым способом?
> file.txt
А если нужно очистить файл при включенной опции noclobber:
>| file.txt
Перенаправление stdout на stderr
При фильтрации выходного потока, например, через обычный pipe (|) можно только фильтровать stdouot. Допустим, вы
хотите отфильтровать некоторые малозначительные ошибки, из потока stderr. Этого нельзя сделать напрямую, поэтому
вам нужно организовать обмен ("swap") между stdout и stderr:
3>&1 1>&2 2>&3
В этой конструкции мы используем временный поток 3, чтобы организовать обмен между stdout (1) и stderr (2). В
следующем примере показано как отфильтровать из потока ошибок stderr все, что совпадает со значением переменной
$error:
$command 3>&1 1>&2 2>&3 | grep -v $error 3>&1 1>&2 2>&3
Но, этот способ не самый лучший. В следующем примере мы делаем то же самое используя pipe:
/usr/bin/$command | & grep -v $error
Pipes. Использование |
Одно из самых мощных преимуществ Linux является использование pipes — именованных каналов. Pipes мспользуется
для обмена данными между приложениями (от ангийского pipe – труба).
Pipe берет стандартный вывод stdout предыдущей команды и перенаправляет его на стандартный ввод stdin следующей
3
4. команды. Все команды в pipe выполняться одновременно.
Рассмотрим следующий пример:
$ ls /etc > etcfiles.txt
$ tail -4 etcfiles.txt
X11
xdg
xml
xpdf
Здесь мы перенаправляем вывод команды ls (содержимое каталога /etc) в файл etcfiles.txt и выводим на экран последние
4 строки этого файла. Для выполнения задачи нам потребовалось ввести 2 команды. То же самое можно выполнить
одной командой, используя pipe:
$ ls /etc | tail -4
X11
xdg
xml
xpdf
Чтобы создать pipe нужно между командами вставить |. Как видите, все достаточно просто.
В одной командной строке можно использовать несколько pipes. В этом случае все команды также будут выполнены
одновременно:
$ ls /etc | tail -4 | tac
xpdf
xml
xdg
X11
4
5. Практика: Перенаправление команд и pipes
Задания:
1. Используя ls вывестиь содержимое каталога /etc в файл etc.txt.
2. Включить опцию noclobber.
3. Убедитесь, что опция nocclobber включена, для этого попробуйте повторить задание 1.
4. Если вывести все опции shell, каким образом будет отображаться опция noclobber?
5. Отключите опцию noclobber.
6. Откройте второй shell. В первом shell создайте пустой файл tailing.txt. Затем выполните команду tail -f
tailing.txt. Перейдите во второй shell и добавьте произвольную строку текста в этот файл. Вернитесь в первый
shell и убедитесь, что в нем эта строка также отображается.
7. Создайте файл, содержащий имена и фамилии пяти человек. Для этого используйте команду cat и
перенаправление стандартного вывода, чтобы создать пустой файл, а также here document (EOF) чтобы
закончить ввод имен.
Ответы:
1. ls /etc > etc.txt
2. set -o noclobber
3. ls /etc > etc.txt (должно быть сообщение об ошибке)
4. echo $- (опция noclobber выводится как C)
5. set +o noclobber
6. В первом shell:
$ > tailing.txt
$ tail -f tailing.txt
hello
world
Во втором shell:
$ echo hello >> tailing.txt
$ echo world >> tailing.txt
7. $ cat > names.txt << EOF
> Igor Petrov
> Andrey Ivanov
> Elena Andreeva
> Olga Stepanova
> Ilya Nikitin
> EOF
$ cat names.txt
Igor Petrov
Andrey Ivanov
Elena Andreeva
Olga Stepanova
Ilya Nikitin
5