Яндекс.Метрика

Курс Zabbix: мониторинг Asterisk и VoIP

Курс Zabbix: мониторинг Asterisk и VoIP с 8 сентября по 12 сентября

Количество
свободных мест

8 Записаться

Дистанционные курсы по Asterisk

Дистанционные курсы по Asterisk с 18 августа по 24 августа

Количество
свободных мест

2 Записаться

Курсы по Mikrotik MTCRE

Курсы по Mikrotik MTCRE с 8 декабря по 11 декабря

Количество
свободных мест

6 Записаться
Golang AGI / FastAgi / ARI …
8
Доклад
Руслан Полухин
Golang AGI / FastAgi / ARI …

Golang AGI / FastAgi / ARI …

Компания RPK занимается разработкой собственной IP-АТС под названием RPK PBX. В её архитектуре использованы различные технологии и языки программирования, включая C, C++, PHP, Java и другие. Со временем стало ясно, что необходимость перехода к более современной и гибкой архитектуре требует внедрения новых подходов и инструментов. Одним из ключевых решений стал выбор языка GoLang как основного средства разработки микросервисов и вспомогательных компонентов.

GoLang — современный инструмент для современных задач

GoLang — это компилируемый, строго типизированный язык программирования, разработанный Google в 2009 году. Он сочетает в себе простоту синтаксиса, высокую производительность и встроенную поддержку многопоточности. В язык встроен сборщик мусора, что делает его удобным для построения масштабируемых сервисов.

Go быстро стал одним из основных инструментов для разработки облачных решений: такие проекты, как Docker, Kubernetes, и множество сервисов Google, написаны именно на нём. К 2022–2024 годам Go стабильно входил в топ языков по динамике роста и количеству новых разработчиков. Уступая по популярности лишь Rust, Go выигрывает за счёт более низкого порога входа и лаконичного синтаксиса. В отличие от Rust, который требует длительного освоения, с Go можно начать писать реальные приложения буквально в течение одного вечера при наличии базовых навыков программирования.

Простой старт и понятный синтаксис

Одним из ярких преимуществ Go является возможность быстрой реализации приложений. Для примера — создание простого HTTP-сервера занимает всего несколько строк кода и не требует внешних зависимостей или сложной настройки окружения. По сравнению с PHP, где требуется установка веб-сервера и интерпретатора, или Java, где необходимо подключать большое количество библиотек, Go выглядит предельно просто и прозрачно. Это особенно ценно при построении микросервисов и вспомогательных сервисов для телеком-приложений.

Интеграция Go с Asterisk: AGI и FastAGI

Одним из наиболее практичных сценариев применения Go в контексте Asterisk является написание AGI-скриптов — логики обработки вызовов. Для этого доступны специализированные библиотеки, которые предоставляют высокоуровневый API для работы с AGI по стандартному протоколу. Go позволяет реализовывать как обычные AGI-приложения, запускаемые напрямую из Asterisk, так и FastAGI-сервисы, работающие по сети.

Отличие между этими подходами минимально и сводится к нескольким строкам кода. При этом FastAGI даёт значительные преимущества: можно использовать общее подключение к базе данных, реализовать кэширование, сохранять состояния в оперативной памяти и т. д. Это положительно сказывается на производительности, особенно при масштабных нагрузках.

Сравнение производительности: Go против PHP

Для оценки эффективности был проведён эксперимент. Была реализована простая задача — при входящем звонке скрипт обращается к базе данных, получает информацию о клиенте и устанавливает Caller ID на основании полученных данных. Аналогичная логика была реализована как на PHP, так и на Go.

Результаты показали, что PHP-реализация выполнялась за 51 миллисекунду, тогда как приложение на Go справлялось с задачей за 14 миллисекунд. Таким образом, производительность увеличилась более чем втрое. Сложные сценарии обработки только усиливают это различие, поскольку Go обеспечивает не только более высокую скорость выполнения, но и эффективную параллельную обработку.

Безопасность и защита логики

Поскольку Go — это компилируемый язык, приложения на нём могут поставляться в виде исполняемых бинарных файлов. Это исключает возможность модификации логики «на лету» и гарантирует сохранность программной структуры в рабочей среде. Такой подход особенно полезен при построении отказоустойчивых решений и поставке коммерческих продуктов, где требуется защита исходного кода и стабильная работа системы.

Работа с AMI и асинхронная обработка

Go также отлично подходит для интеграции с Asterisk через AMI (Asterisk Manager Interface). Для этой цели доступны библиотеки, реализующие асинхронную обработку событий, подключение к каналам, отправку команд и обработку ответов. Применение goroutine и каналов позволяет легко организовать масштабируемую архитектуру для мониторинга и управления вызовами.

Заключение

GoLang зарекомендовал себя как мощный и надёжный инструмент в разработке решений для Asterisk. Простота, высокая производительность, безопасность и мощные средства параллелизма делают его отличным выбором для построения AGI-приложений, FastAGI-сервисов и микросервисной инфраструктуры в целом. Переход на Go позволил существенно упростить сопровождение существующих решений, повысить стабильность и ускорить разработку новых функций в рамках платформы RPK PBX.

Ежегодная конференция по Asterisk 2025!

Билеты уже в продаже!

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все