Команда разработчиков Twitter объявила (http://engineering.twitter.com/2012/06/distributed-systems-t...) о публикации исходных текстов (https://github.com/twitter/zipkin) системы распределенной трассировки веб-приложений Zipkin, используемой внутри компании для выявления узких мест в работе сервиса. Zipkin позволяет измерять скорость обработки запросов клиентов в больших распределенных веб-приложениях, собирая статистику скорости ответа с каждого участвующего в обработке запроса компонента. Код опубликован под лицензией Apache 2.0 и включает в себя набор библиотек, реализацию сервера Zipkin и веб-интерфейс.
В основе Zipkin лежит идея, предложенная разработчиками Google для трассировщика Google Dapper. Система работает с реальными запросами, сгенерированными пользователями, однако трассировке подвергаются не все запросы. Компонент системы, установленный на одном из-серверов фронтэндов, выбирает один из запросов и помечает его с помощью специально сгенерированного ключа, который передается вместе с запросом всем остальным сервисам, участвующим в обработке. Получив такой ключ, сервис, с помощью специальной подключаемой библиотеки, генерирует трассировочную информацию и отправляет ее головному серверу Zipkin. В ходе обработки запроса информация со всех сервисов собирается на головном сервере и помещается в базу данных. Результат трассировки можно проанализировать с помощью веб-интерфейса, который включает в себя список всех участвующих в обработке запроса сервисов и временную шкалу с отображением времени ответа того или иного сервиса.
Zipkin позволяет проследить обработку запросов вплоть до отдельных выборок из базы данных и обращений к memcached. Однако, чтобы это стало возможном нужны изменения в инфраструктуре веб-приложения. Код, опубликованный Twitter, включает в себя набор библиотек, позволяющий подключить Zipkin к приложениям, написанных с использованием RPC-библиотеки Finagle (https://github.com/twitter/finagle), Ruby-клиента фреймворка Apache Thrift (http://thrift.apache.org/), Scala-библиотеки для работы с SQL БД Querulous (https://github.com/twitter/querulous) и клиентской библиотеки для no-SQL БД Сassandra Cassie (https://github.com/twitter/cassie).
URL: http://engineering.twitter.com/2012/06/distributed-systems-t...
Новость: https://www.opennet.ru/opennews/art.shtml?num=34051