Религиозные психопрактики в истории культуры (Андрей Сафронов)
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
-
Upload
tanya-denisyuk -
Category
Technology
-
view
147 -
download
3
description
Transcript of Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
Антон Тюрин
HDCONFHDCONF
Евгений Сафронов
«Инфраструктура под Cocaine»
1
2
Инфраструктура под Cocaine.
!
Highload Минск 04.10.2014
https://github.com/cocaine 3
OverviewOS вашей инфраструктуры.
Kernel & Userspace.
Управление ресурсами.
Сервисы.
Приложения.
Изоляция.
https://github.com/cocaine 4
СервисыАбстрактные фронтенды к различным
функциям вашей инфраструктуры.
Пишешь один раз (на C++) - используешь на
любом языке.
Готовые решения! Locator, Storage, Logging,
Node, UrlFetching, Elasticsearch …
https://github.com/cocaine 5
Сервисы: LocatorРаздает информацию о сервисах.
Все, что нужно знать - имя сервиса.
Информация: адрес, версия протокола, API.
Мы не используем IDL - вся информация о сервисах
передается в рантайме.
https://github.com/cocaine 6
Сервисы: StorageВряд ли какая облачная платформа
обойдется без облачного хранилища.
Нужна возможность писать, читать и
искать данные.
В нашем случае - это Elliptics.
https://github.com/cocaine 7
Сервисы: NodeКонтролирует работу приложений.
Доставляет приложения на ноду.
Запускает, останавливает.
Собирает информацию и метрики.
Использует контейнеры для изоляции
приложений!
https://github.com/cocaine 8
Сервисы: ApplicationПриложение - любой пользовательский код.
Используется собственный RPC протокол
(мультиплексирование, каналы).
Event-driven.
Пишем легко с фреймворками.
C++, Java, NodeJs, Go, Python, Ruby, Perl.
https://github.com/cocaine 9
Сервисы: LoggingЕдиная точка входа для логов со всех
приложений.
Структуризация логов.
Индексация, полнотекстовый поиск, Elasticsearch.
https://github.com/cocaine 10
Балансировка
Per-application. Автоматическая балансировка
нагрузки для каждого приложения.
IPVS. Динамические веса, мгновенная реакция на
изменения в кластере.
Routing Groups. Расщепление трафика между API-
совместимыми приложениями.
https://github.com/cocaine 11
Features: Dual-streaming RPCДвухсторонний канал между приложением/сервисом и
пользователем.
https://github.com/cocaine 12
Features: Dispatch graphГибкий протокол в виде дерева
переходов.
Можно реализовывать свои
собственные протоколы.
https://github.com/cocaine 13
Features: RaftАлгоритм достижения консенсуса в распределенной системе.
Более подробно: http://raftconsensus.github.io
https://github.com/cocaine 14
Features: Raft.UnicornРаспределенный согласованный сервис
хранения конфигураций с возможностью
оповещения подписчиков об изменениях.
Ближайший аналог - etcd.
https://github.com/cocaine 15
Structured loggingТеперь Logging Service умеет работать со
структурированными логами.
Приложение само определяет степень
структуризации логов.
Filter
level >= info
{ level: info message: «very important», id: 42, errno: 0, url: «ya.ru» }
Map
https://github.com/cocaine 16
Features: AAAАвторизация, приложения знали свои права.
Аутентификация, чтобы сервисы были уверены
в подлинности клиентов.
Аккаунтинг, чтобы можно было считать
деньги.
https://github.com/cocaine 17
Features: Debugging Удаленная отладка приложений в облаке.
Подключение прямо к работающему
приложению
Профилирование.
Определение bottleneck’ов.
https://github.com/cocaine 18
Improvements: SchedulerУправление ресурсами.
Распределение нагрузки.
Возможность контролировать ресурсы снизу.
Service Level Agreement.
https://github.com/cocaine 19
Features: HTTPНекоторым пользователям не нужен наш
протокол. Они хотят просто залить HTTP
приложение без изменений, и чтобы оно
получило все преимущества облака.
Почему бы не дать такую возможность?
https://github.com/cocaine 20
Features: Distributed tracingУникальный id на каждый запрос.
Все логи включают в себя этот id.
Построение дерева вызовов и определение
полного пути запроса.
Профилирование bottleneck’ов.
Спасибо за внимание!
21
22
Github.com/cocaine
Tech.yandex.ru/cocaine