По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Мир VoIP (Voice over IP) многогранен. На рынке существует целое множество решений для построения корпоративных систем связи – IP – АТС. Нас интересуют программные «open source» решения, поэтому, сегодня мы сравним две популярные телефонные платформы и ответим на вопрос: что круче, FreeSWITCH или Asterisk? :) Про Asterisk Давайте немного теории: Asterisk - программная автоматическая телефонная станция (АТС) на базе протокола IP, которая способна предложить богатый, с точки зрения телефонии, инструментарий для офиса. Asterisk, будучи одной из первых программных IP-АТС был создан в 1999 году как решение с открытым кодом (open source). При поддержке компании Digium в 2005 году IP – АТС увидела свет и была выпущена в «продакшн». Реализация происходит под двумя лицензиями: GNU GPL (General Public License) и патентная лицензия для разработки собственных решений на базе Asterisk, рассчитанных на дальнейшую продажу. Более миллиона пользователь радуются IP – АТС Asterisk каждый день по всему миру :) Но не все так гладко (удар молнии за окном). Исторически, Asterisk имеет ряд проблем, связанных с масштабируемостью, нестабильностью работы при повышении нагрузки. С учетом особенностей лицензирования, многие пользователи (в том числе компании - разработчики) искали новый продукт. Про FreeSWITCH В 2006 году группа бывших разработчиков Asterisk приняли решение разработать альтернативное решение – на свет появился FreeSWITCH. Вдохновленные модульной структурой веб – сервера Apache, команда разработчиков преследовала цель улучшить параметры масштабируемости и стабильности работы на разных платформах. FreeSWITCH создан по модели состояний, вследствие чего, каждый вызов(канал) работает по отдельному потоку данных. Для построения структуры, использовались компоненты open – source решений, такие как, например, Sofia SIP – SIP UA с открытым исходным кодом, созданный компанией Nokia. Что под капотом? Asterisk – модульная структура. Во время работы, Asterisk использует общие ресурсы, включая программные потоки – это главная проблема при большой интенсивности вызовов. Несмотря на сложность и многогранность программного кода, на котором написан Asterisk, он находит огромное множество применений в сети. С другой стороны, FreeSWITCH написан на C, структура которого более понятна и прозрачна. Потоки процессов выполняются последовательно и отдельно для каждого канала, что безусловно отличает Фрисвитч от Asterisk. При этом, как правило, по этой причине FreeSWITCH требует больший объем оперативной памяти (RAM) Отметим, что FreeSWITCH имеет хорошо документированный API (Application Programming Interface), сегментированный по ролям. Такая структура обеспечивает безопасное подключение к API в отличие от Asterisk, где более открытая конструкция API допускает вероятность внесения багов и ошибок. Asterisk базируется на текстовых конфигурационных файлах, в то время как FreeSWITCH использует файлы формата .xml. Безусловно, с точки зрения работы с конфигами для админа, файлы текстового формата проще редактировать, однако, плюсы формата .xml всплывают на этапе автоматизации различных процессов. Требования к железу Оценить общие требования к IP – АТС достаточно сложно, так как в каждой инсталляции используется разный набор фичей и целей эксплуатации. Однако, в таблице ниже сконцентрированы минимальные требования к серверу, на котором будет развернут Asterisk и FreeSWITCH для работы 15 телефонными аппаратами и 5 одновременными вызовами. Сравните их: Параметр FreeSWITCH Asterisk CPU Одно ядро, частота процессор 1 гГц Одно ядро, частота процессор 700 мГц RAM 1 ГБ 512 МБ HDD 10 ГБ 10 ГБ OS Linux, 32/64 бит Linux, 64 бит Как видно, FreeSWITCH потребляет больше RAM. О причине этого мы писали ранее – это связано с архитектурой. Функционал С точки зрения базового набора функций, АТС идентичны. Голосовая почты, IVR, маршрутизация, intercom и другие опции доступны для обоих лагерей пользователей. Рассмотрим преимущества, которые интересны для профессионального и более глубокого использования платформ. Начнем, пожалуй, с возможности FreeSWITCH создавать мульти – площадки. Фрисвич нативно (из коробки) умеет сегментировать площадки пользователей, разные домены и суб – домены. Это означает, что пользователи одной площадки не смогут дозвониться до пользователей другой по внутренним номерам. Другими словами, обеспечивается полнофункциональная сегрегация пользователей. Так же, безусловным преимуществом FreeSWITCH стоит отметить возможность кластеризации (объединения нескольких серверов), где каждый хост в кластере будет выполнять свою определенную роль. Итог Подведем итоги. Мы составили таблицу с результатами, чтобы вам было проще ориентироваться: Функция FreeSWITCH Asterisk Малое потребление ресурсов сервера, включая ресурсы процессора и оперативной памяти ✕ ✓ Документация и поддержка: решение проблем, форму, гайды, сильное комьюнити проекта ✕ ✓ Богатый базовый функционал: конференции, видеозвонки, IVR, голосовая почта и так далее ✓ ✓ Возможность реализации функций мульти - площадок (поддержка отдельных телефонных доменов с полной сегрегацией пользователей) ✓ ✕ Внутренние механизмы устойчивости к повышению нагрузки, связанной с повышением количества одновременных вызовов ✓ ✕ Объединение серверов в кластер, с последующим разделением ролей ✓ ✕
img
Для того, чтобы нормально пользоваться инструментом Terraform, нам понадобится текстовый редактор с плагином, понимающим язык разметки Terraform (HCL). Это необходимо для того, чтобы было удобно писать код для поднятия инфраструктуры. На самом деле, код можно писать в каком угодно текстовом редакторе, но наиболее удачно подходит текстовый редактор Atom. Для Windows установка очень простая. Идем на сайт www.atom.io, сайт автоматически определяет версию операционной системы и нажимаем на кнопку скачать. Дальнейшая инсталляция под операционную систему Windows очень простая - запуск файла и нажатие несколько раз кнопки Далее. В случае если мы хотим работать из-под операционной системы Linux, заходя на сайт мы видим, что сайт предлагает скачать нам установочные пакеты в вариации deb и rmp. Но возможно пойти нам и другим путем. Заходим на сайте в документацию, находим Atom Flight Manual. Далее выбираем с левой стороны Installing Atom, а вверху тип операционной системы. Далее мы видим описание инсталляций для разных ОС семейства Linux. Для Ubuntu и для CentOS. При инсталляции на Ubuntu: wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add - Скачиваем ключ и помещаем в хранилище. sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list' Обновляем список депозитарий командой apt update, а также обновляем сам репозиторий. Ну собственно и последующая инсталляция непосредственно самого текстового редактора Atom. sudo apt-get install Atom Инсталляция на CentOS в принципе аналогичная. Скачиваем и добавляем ключ. sudo rpm --import https://packagecloud.io/AtomEditor/atom/gpgkey sudo sh -c 'echo -e "[Atom] name=Atom Editor baseurl=https://packagecloud.io/AtomEditor/atom/el/7/$basearch enabled=1 gpgcheck=0 repo_gpgcheck=1 gpgkey=https://packagecloud.io/AtomEditor/atom/gpgkey" > /etc/yum.repos.d/atom.repo' Теперь мы можем воспользоваться пакетным менеджером yum или dnf sudo dnf install Atom sudo dnf install atom-beta Или если установлен альтернативный пакетный менеджер yum или операционная система CentOS 7, можно скачать пакет в rpm формате https://atom.io/download/rpm и установить sudo yum install -y atom.x86_64.rmp sudo dnf install -y atom.x86_64.rpm После данных манипуляций у нас установится текстовый редактор Atom. Конечно, установка имеет смысл на машину с графическим интерфейсом пользователя. Его можно найти по зеленой иконке, как на скриншоте. Далее, самая интересная, часть данной статьи. Если мы просто вставим кусочек кода от TerraForm, то мы увидим, что он ничем не отличается от обычного текста. Все преимущества данного текстового редактора раскрываются в использовании плагинов для Terraform. Для установки плагина, который различает написанный код Terraform, нам необходимо зайти в Edit, в данном открывшемся меню найти Preferences. В следующем открывшемся окне выбираем Install. В правой части после данной операции появляется строка поиска для инсталляции дополнительных пакетов (Plugins). С помощью данного поиска находим пакет по запросу Terraform. Пакетов будет найдено достаточно много. Можно посмотреть описание и версию пакетов и сколько раз был скачен данный пакет. Я рекомендую выбрать пакет language-terraform. Для большинства данного пакета будет совершенно достаточно. Данный пакет дает не только красивую подсветку кода, но и много других функций. Еще для удобства работы можно установить terraform-fmt. Данный пакет не столь популярен, но за то он позволяет удобно форматировать код Terraform при написании. А именно, код будет выравниваться при нажатии сочетания клавиш Ctrl+S для сохранения изменений в файле. Для того, чтобы плагины начали работать, необходимо перезапустить текстовый редактор. И второй важный момент переименовать файл рабочий в файл с разрешением *.tf.
img
JIT-компиляция – это метод повышения производительности интерпретируемых программ. JIT расшифровывается как Just-in-time. Во время выполнения программа может быть скомпилирована в машинный код для повышения ее производительности. Также этот метод известен как динамическая компиляция. Динамическая компиляция имеет несколько преимуществ перед статической. При запуске приложений на JAVA или C# среда выполнения может профилировать приложение во время его исполнения. Это позволяет создавать более оптимизированный код. Если поведение приложения меняется во время его исполнения, то среда выполнения может перекомпилировать код. Есть некоторые недостатки, заключающиеся в задержках при запуске или непроизводительных издержках при компиляции во время выполнения. Чтобы ограничить эти издержки, многие JIT-компиляторы компилируют только пути кода, которые часто используются. Обзор Традиционно существует два метода преобразования исходного кода в форму, которую можно запустить на платформе. Статистическая компиляция преобразует код в язык для конкретной платформы. Интерпретатор непосредственно выполняет исходный код. JIT-компиляция пытается использовать преимущества обоих. В то время как выполняется интерпретируемая программа, JIT-компилятор определяет участки часто используемого кода и компилирует его в машинный код. В зависимости от компилятора это можно сделать для метода или меньшего участка кода. Впервые динамическая компиляция была описана в статье о языке LISP Дж. Маккарти в 1960 году. Компиляция на лету, JIT или динамическая компиляция – это компиляция, которая выполняется непосредственно во время исполнения программы, а не до этого. Что в этот момент происходит? Перевод в машинный код. Преимущества JIT-компиляции заключаются в том, что поскольку компиляция происходит во время выполнения, то JIT-компилятор имеет доступ к динамической информации времени выполнения, а это в свою очередь позволяет ему оптимизировать процесс (например, встраивать функции). Что важно понимать, когда речь идет о JIT-компиляции? Она скомпилирует байт-код в инструкции машинного кода работающего компьютера. Это означает, что полученный машинный код оптимизирован для архитектуры процессора конкретного компьютера. В качестве примеров JIT-компиляторов можно привести JVM (Java Virtual Machine - виртуальная машина Java) на Java и CLR (Common Language Runtime – общеязыковая исполняющая среда) на C#. История Изначально компилятор отвечал за преобразование языка высокого уровня (выше, чем ассемблер) в объектный код (машинные инструкции), который затем должен был быть связан (линкером) с исполняемой программой. В какой-то момент эволюции языков компиляторы начали компилировать язык высокого уровня в псевдокод, который затем интерпретировался (интерпретатором) для запуска программы. Это исключило объектный код и исполняемые программы и позволило перенести эти языки на несколько операционных систем и аппаратных платформ. Одним из первых был Pascal (который скомпилирован в P-Code); более современными примерами являются Java и C#. Со временем термин P-Code был заменен на байт-код, поскольку большинство псевдоопераций имеют длину в один байт. JIT-компилятор – это функция интерпретатора, которая вместо интерпретации байт-кода при каждом вызове компилирует байт-код в инструкции машинного кода работающей машины, а затем вызывает этот объектный код. В идеальном варианте эффективность выполнения объектного кода должна превзойти неэффективность перекомпиляции программы при каждом ее запуске. Обычный сценарий Исходный код полностью преобразуется в машинный код. JIT-сценарий Исходный код преобразуется в структуру на языке ассемблера, например, IL (промежуточный язык) для C#, ByteCode для Java. Промежуточный код преобразуется в машинный только тогда, когда приложение нуждается в том, чтобы необходимые коды были преобразованы в машинный код. JIT или не JIT При JIT-компиляции не весь код преобразуется в машинный код. Для начала преобразуется только необходимая часть кода. Затем, если вызываемый метод или выполняемые функции находятся не в виде машинного кода, то они тоже будут преобразованы в машинный код. Это снижает нагрузку на ЦП. Поскольку машинный код будет генерироваться во время выполнения, то JIT-компилятор создаст машинный код, оптимизированный для запуска архитектуры ЦП машины. Ниже приведены некоторые примеры JIT-компиляторов: Java: JVM (Java Virtual Machine – виртуальная машина Java) C#: CLR (Common Language Runtime – общеязыковая исполняющая среда) Android: DVM (Dalvik Virtual Machine – виртуальная машина Dalvik) или ART (Android RunTime – среда выполнения Android-приложений) в новых версиях Виртуальная машина Java (JVM) выполняет байт-код и ведет подсчет времени выполнения функции. Если это значение превышает предустановленный порог, то JIT-компилятор компилирует код в машинный код, который в дальнейшем может быть выполнен непосредственно процессором (в отличие от случая, когда javac компилирует код в байт-код, а затем интерпретатор интерпретирует этот байт-код построчно, переводя его в машинный код, и выполняет его). Кроме того, при следующем вычислении функции тот же скомпилированный код выполняется снова, в отличие от обычной интерпретации, когда код повторно интерпретируется построчно. Это значительно ускоряет процесс выполнения программы.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59