По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Firebase - это платформа для разработки приложений, запущенная в 2012 году и двумя годами позже приобретенная Google. Изначально Firebase задумывалась как база данных для приложений реального времени, но Google увидел ее потенциал и решил добавить к ней дополнительные сервисы. В настоящее время Firebase представляет собой систему BaaS (Backend as as Service) для упрощения создания веб-приложений и мобильных приложений с 18 службами. Среди компаний, использующих услуги BaaS Firebase, - Accenture, Alibaba Travels, Stack, Twitch и Instacart, а также более 2300 других. Преимущества использования Firebase Первой из услуг, предлагаемых Firebase, была база данных в реальном времени, и она остается одной из самых привлекательных. Real-time базы данных Firebase размещаются в облаке, хранят данные в формате JSON и синхронизируются в реальном времени с каждым подключенным к ним клиентом. Независимо от того, используете ли вы iOS SDK, Android SDK или JavaScript SDK, все приложения, подключенные к Realtime базе данных Firebase, совместно используют один экземпляр базы данных, всегда работают с последними данными. Cloud Firestore - еще один интересный сервис Firebase. Это NoSQL база данных документов, предназначенная для облегчения хранения, синхронизации и выполнения запросов для мобильных и веб-приложений в глобальном масштабе. Создание иерархий для хранения связанных данных и запросов для получения данных позволяет полностью реализовать потенциал Cloud Firestore. В свою очередь, запросы масштабируются в зависимости от размера результатов, а не от размера набора данных. Это позволяет приложениям масштабироваться с самого начала, не дожидаясь момента, когда запрашиваемые ресурсы превысят имеющиеся. В дополнение к вышеупомянутым службам баз данных Firebase также предлагает услуги хостинга, хранилища файлов, функции (в стиле AWS Lambda) и многое другое. Создание API API-интерфейсы - это способ предоставления услуг для использования вашими собственными или сторонними приложениями. Firebase позволяет предоставлять настраиваемые службы, которые, в свою очередь, используют собственные службы Firebase, без необходимости настраивать серверную часть для этих служб. Вы можете, например, предложить доступ к базе данных Firebase в реальном времени для сторонних приложений для запроса информации, собираемой промышленными датчиками. Первым шагом в создании API в Firebase является доступ к консоли Firebase и добавление проекта, нажав «Добавить проект» (Add project) и присвоив название новому проекту. Google предоставит вам возможность включить Google Analytics для вашего нового проекта. Рекомендуется принять эту рекомендацию, так как вы получите такие преимущества, как A/B-тестирование и широкий спектр статистических отчетов относительно вашего API. После создания проекта вы сможете выбрать службы Firebase, которые будет использовать ваш API. Чтобы проиллюстрировать эту задачу, мы разберём, как использовать службу базы данных Firebase Realtime. Настройка базы данных реального времени в Firebase На панели навигации слева в разделе «Разработка» (Develop) щелкните «Realtime Database». Справа появится кнопка «Create Database». Нажмите на нее, чтобы создать свою первую базу данных в Firebase. Затем вам нужно будет выбрать один из нескольких вариантов географического местоположения для вашей новой базы данных. Выберите тот, который ближе всего к вашим пользователям. Это важный аспект для минимизации задержки вашего API, особенно для приложений реального времени. Следующим шагом является настройка основных правил безопасности для вашей базы данных. Вы можете выбрать заблокированный режим, а затем назначить права доступа по мере необходимости или выбрать тестовый режим, который разрешает все операции чтения и записи. Для начала, чтобы не усложнять свою жизнь настройками безопасности, можно выбрать тестовый режим. А правила безопасности можете настроить позже. Как только вы закончите настройку своей базы данных, соответствующий API также будет добавлен в разделе API and Services в консоли Google Cloud Platform. Программирование Firebase API На данный момент у вас уже есть основные элементы вашего проекта, настроенные в консоли Firebase. Следующим шагом будет написание кода API. Для этого вам нужно будет инициализировать хостинг и функции Firebase на вашем локальном компьютере. Вы можете установить firebase-tools с помощью npm: npm install -g firebase-tools Затем вы можете войти в firebase и инициализировать свой проект с помощью следующих команд: firebase login firebase init Отобразится экран приветствия, в котором Firebase укажет папку папке, в которой будет храниться ваш проект, и появится меню параметров. В этом меню выберите Functions and Hosting (опция «Хостинг» позволит вам иметь собственный URL-адрес для API). Затем выберите из списка приложение Firebase, которое вы создали ранее, после чего вы должны выбрать язык для использования. Для разработки веб-API вы можете выбрать JavaScript. Если вы будете использовать зависимости пакетов, установите их с помощью npm внутри папки функций. Затем вы можете начать писать код для своих функций. Не забудьте включить пакеты firebase-functions и firebase-admin наряду с другими пакетами, которые вам нужны: import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin'; Чтобы использовать базу данных в реальном времени, вы должны указать ее URL при инициализации вашего JavaScript SDK. URL-адрес находится в разделе Realtime Database консоли Firebase. Вы можете узнать его по формату: https://<database-name>.<region>.firebasedatabase.app Вы можете использовать следующий фрагмент кода для инициализации вашего SDK, заменяя данные на свои: var config = { apiKey: "apiKey", authDomain: "projectId.firebaseapp.com", databaseURL: "https://databaseName.firebaseio.com", storageBucket: "bucket.appspot.com" }; firebase.initializeApp(config); var database = firebase.database(); После того, как написали код функции API, пора приступить к развертыванию. Но перед этим нужно будет внести некоторые изменения в firebase.json, добавив следующие строки, измененные в соответствии с конфигурацией нашего проекта: "rewrites": [ { "source": "/api/v1/**", "function": "webApi" } ] Следующий шаг - развертывание. В первый раз нужно выполнить полное развертывание, выполнив команду: firebase deploy При последующих развертываниях вы сможете развертывать только функции, используя параметр –only functions. После выполнения команды Firebase CLI в терминале отобразит URL-адреса HTTP эндпоинтов ваших функций, которые вы можете использовать для вызова ваших API-интерфейсов из веб-приложения. URL-адрес содержит идентификатор вашего проекта и регион для функции HTTP. Например, следующий URL-адрес можно использовать для вызова функции запроса элемента, передав его itemid = 1 в качестве параметра: https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1 Чтобы выполнить функцию, откройте URL-адрес с соответствующими параметрами в браузере. Обратите внимание, что для развертывания в производственной среде требуется подписка на план Firebase Blaze. Данный план снимает деньги по мере использования, о чем вы можете прочитать на странице цен на Firebase. Это услуга выставляет счет по факту использования, что означает, что вам выставляется счет за использование в конце каждого месяца. Если у вас нет подписки на Blaze, команда развертывания не отобразит URL-адрес для API. Вместо этого вы увидите сообщение, информирующее о том, что вы должны подписаться на план Blaze, если вы хотите выполнить развертывание в среде выполнения. В этом случае вы все равно можете использовать Firebase Local Emulation Suite для создания и тестирования приложений на локальном компьютере вместо их развертывания в производственной среде Firebase. Локальное тестирование полезно, чтобы избежать ненужных затрат во время разработки приложения, поскольку каждый запуск теста может приводить к расходам на вашем счете. Локальное тестирование и прототипирование Инструмент Local Emulator Suite предлагает интегрированный пользовательский интерфейс, который делает упрощает создание прототипов и тестирование ваших приложений на локальном компьютере. С помощью пользовательского интерфейса Emulator Suite вы можете тестировать проекты своей базы данных, рабочие процессы облачных функций, анализировать производительность серверных служб и оценивать изменения в правилах безопасности и пр. По сути, это безопасная песочница для проверки функциональности вашего API перед отправкой в производственную среду. Чтобы эмулировать свои функции или протестировать приложение локально, запустите эмуляторы firebase: start. Чтобы использовать эмулятор Firestore, на компьютере должна быть установлена Java. При вызове Firestore Emulator, команда вернет URL-адрес, который позволит вам открыть пользовательский интерфейс Emulator Suite в вашем браузере. По умолчанию этот URL-адрес будет localhost: 4000, но он может отличаться на каждой машине. Вы также получите полный URL-адрес своей функции HTTP. Этот URL будет выглядеть примерно так: http://localhost:5001/apiproject-8753c/us-central1/itemQuery Только он будет иметь имя вашего проекта, имя вашей функции, а также может иметь другой номер порта на вашем локальном компьютере. Чтобы протестировать функцию, скопируйте URL-адрес, возвращаемый эмулятором, добавив все необходимые параметры (например, ?itemid = 1), и откройте в новой вкладке браузера. Результаты выполнения API появятся в пользовательском интерфейсе Emulator Suite. На вкладке «Logs» вы увидите новые логи, указывающие, что функция itemQuery() была выполнена. Если ваша функция генерирует новые данные в базе данных Firestore, вы увидите их на вкладке Firestore. Расширение возможностей вашего API Если вы хотите, чтобы разрабатываемые вами API стали популярными, Firebase может помочь и с этим. Не только потому, что это позволяет вам быстрее создавать приложение, снимая много работы по настройке и запуску серверных сервисов, но также помогая вам в позиционировании вашего продукта. Как такое возможно? Просто потому, что приложения, связанные с Firebase, занимают более высокие позиции в поисковом рейтинге, чем другие приложения. Также примите во внимание API индексирования приложений Firebase. Этот инструмент улучшает поисковый рейтинг ссылок приложений и помогает пользователям находить желаемый контент. Он также помещает кнопку "Установить" после кнопки на главной странице вашего приложения, чтобы заинтересованные пользователи всего за один клик могли пользоваться вашим приложением. В заключение отметим, что Firebase не только предлагает услуги бэкэнда, которые значительно ускоряют разработку собственного API, но и помогает продвигать его и зарабатывать на этом деньги.
img
В данной статье пойдет речь о ринг-группах (Ring Groups) и их базовой настройке. Для создания ринг-группы необходимо попасть в меню их создания/редактирования – Applications – Ring Groups и нажать Add Ring Group Далее появляется окно создания ринг-группы Необходимо последовательно указать: Название ринг-группы Её описание – помогает при дальнейшей настройке, когда появляется много групп и абонентов Extension list – список экстеншенов, на которые будет маршрутизироваться вызов. Важный момент – кроме непосредственно экстеншенов сюда можно добавить любые номера, которые настроены в исходящих маршрутах, но если номер не является экстеншеном, после него необходимо поставить # (решётку). Ring Strategy – самый важный пункт, так как он определяет алгоритм обзвона ринг-группы, их описания ниже: ringall: Вызов поступает на все номера, указанные в настройках ринг-группы одновременно (настройка по умолчанию) hunt: Вызов поочередно проходит через каждый номер memoryhunt: Вызов начинается с первого номера в списке, затем звонит 1й и 2й, затем 1й, 2й и 3й, и так далее. *-prim: Режимы с данной припиской работают как и описанные выше, с одним отличием – если первый номер в списке занят, вызов прекратится firstavailable: вызов поступает на первый незанятый канал firstnotonphone: вызов поступает на первый телефон, на котором не снята трубка random: Вызов поступает на указанные номера с определенным приоритетом так, чтобы вызовы распределялись относительно равномерно. Имитирует очередь (Queue) в те моменты, когда очередь не может быть использована. Далее указывается параметр длительности вызова (по умолчанию – 20 секунд) Announcement – голосовое или музыкальное приветствие в случае попадания вызова в ринг-группу Play Music on Hold – включение или выключение MoH Ignore CF Settings – экстеншены, которые будут совершать попытку перевести поступающий вызов будут игнорированы Skip Busy Agent – вызов будет пропускать экстеншен, который в данный момент участвует в разговоре Enable Call Pickup – возможность «поднять» вызов с использованием номера ринг-группы Одним из достаточно интересных параметров так же является Confirm Calls – подтверждение вызовов удаленной стороной по нажатию единицы – до момента нажатия разговор не начнется. Call Recording - Включение записи разговоров в данной ринг-группе Destination if no answer – в данном примере по истечению таймаута вызов будет сброшен. После этого необходимо нажать Submit и Apply Config Главное, что нужно иметь в виду – номер ринг-группы становится практически тем же номером экстеншена, но с некоторым ограничениями. То есть на этот номер можно будет позвонить с телефона, указать его как цель в IVR и так далее.
img
Одним из преимуществ и популярности EIGRP является его быстрая конвергенция в случае сбоя связи. Однако одно, что может замедлить эту конвергенцию, - это конфигурация таймера. Именно этому посвящена эта статья, которая является третьей в серии статей о понимании EIGRP. Предыдущие статьи из цикла про EIGRP: Часть 1. Понимание EIGRP: обзор, базовая конфигурация и проверка Часть 2. Про соседство и метрики EIGRP Часть 2.2. Установка K-значений в EIGRP Следующие статьи из цикла: Часть 4. Пассивные интерфейсы в EIGRP Часть 5. Настройка статического соседства в EIGRP Часть 6. EIGRP: идентификатор роутера и требования к соседству Начнем наше обсуждение таймеров EIGRP с рассмотрения ситуации, когда два соседа EIGRP непосредственно связаны друг с другом. Если физическая связь между ними не работает, подключенный интерфейс каждого роутера отключается, и EIGRP может перейти на резервный путь (то есть возможный маршрут преемника). Такая ситуация показана на следующем рисунке: Роутеры OFF1 и OFF2, показанные на приведенном выше рисунке, соединены друг с другом. Поэтому, если кабель между ними обрывается, каждый из интерфейсов роутера, соединяющихся с этим звеном, отключаются, и EIGRP понимает, что он просто потерял соседа и начинает перестраиваться. Однако нарушение связи между несколькими соседями EIGRP не всегда так очевидно. Например, рассмотрим вариант предыдущей топологии, как показано ниже: Обратите внимание, что между роутерами OFF1 и OFF2 был подключен коммутатор (SW4) на рисунке выше. Если происходит сбой соединения между коммутатором SW4 и роутером OFF1, роутер OFF2 не сразу осознает это, потому что его порт Gig0/1 все еще находится в состоянии up/up. В результате роутер OFF2 может продолжать считать, что роутер OFF1 - это наилучший путь для доступа к сети, такой как 192.0.2.0 /24. К счастью, EIGRP использует таймеры, чтобы помочь EIGRP-спикер роутерам определить, когда они потеряли связь с соседом по определенному интерфейсу. Таймеры, используемые EIGRP, - это таймеры Hello и Hold. Давайте задержимся на мгновение, чтобы изучить их работу, потому что таймер Hold не ведет себя интуитивно. Во-первых, рассмотрим таймер Hello. Как вы можете догадаться, это определяет, как часто интерфейс роутера отправляет приветственные сообщения своему соседу. Однако таймер Hold интерфейса - это не то, как долго этот интерфейс ожидает получения приветственного сообщения от своего соседа, прежде чем считать этого соседа недоступным. Таймер Hold - это значение, которое мы посылаем соседнему роутеру, сообщая этому соседнему роутеру, как долго нас ждать, прежде чем считать нас недоступными. Эта концепция проиллюстрирована на рисунке ниже, где роутер OFF2 настроен с таймером Hello 5 секунд и таймером Hold 15 секунд. Два больших вывода из этого рисунка таковы: Таймер Hello роутера OFF2 влияет на то, как часто он посылает приветствия, в то время как таймер Hold роутера OFF2 влияет на то, как долго роутер OFF1 будет ждать приветствий роутера OFF2. Указанное время Hello и Hold является специфичным для интерфейса Gig 0/1 роутера OFF2. Другие интерфейсы могут быть сконфигурированы с различными таймерами. Поскольку таймер Hold, который мы отправляем, на самом деле является инструкцией, сообщающей соседнему роутеру, как долго нас ждать, а не как долго мы ждем Hello-сообщения соседа, причем у каждого соседа может быть свой набор таймеров. Однако наличие совпадающих таймеров между соседями считается лучшей практикой для EIGRP (и является требованием для OSPF). Чтобы проиллюстрировать конфигурацию и проверку таймеров EIGPR, допустим, что роутер OFF1 имел таймер Hello 1 секунду и таймер Hold 3 секунды на своем интерфейсе Gig 0/1 (подключение к OFF2). Затем мы захотели, чтобы роутер OFF2 имел таймер Hello 5 секунд и таймер Hold 15 секунд на своем интерфейсе Gig 0/1 (подключение к роутеру OFF1). Такая конфигурация укрепляет понятие того, что соседи EIGRP не требуют совпадающих таймеров (хотя лучше всего иметь совпадающие таймеры). В следующем примере показана эта конфигурация таймера для роутеров OFF1 и OFF2. OFF1#conf term Enter configuration commands, one per line. End with CNTL/Z. OFF1(config)#int gig 0/1 OFF1(config-if) #ip hello-interval eigrp 1 1 OFF1(config-if) #ip hold-time eigrp 1 3 OFF1(config-if) #end OFF1# OFF2#conf term Enter configuration commands, one per line. End with CNTL/Z. OFF2(config)#int gig 0/1 OFF2 (config-if) #ip hello-interval eigrp 1 5 OFF2 (config-if) #ip hold-time eigrp 1 15 OFF2(config-if) #end OFF2# Команда ip hello-interval eigrp asn h_intls вводится на каждом роутере для установки таймеров Hello. Параметр asn определяет настроенную автономную систему EIGRP равным 1, и таймер Hello для роутера OFF1 настроен равным 1 секунде, в то время как таймер Hello для роутера OFF2 настроен равным 5 секундам. Аналогично, команда ip hold-time eigrp asn ho_t вводится на каждом роутере для установки таймеров Hold. Опять же, обе команды задают автономную систему 1. Таймер Hold роутера OFF1 настроен на 3 секунды, в то время как таймер Hold роутера OFF2 настроен на 15 секунд. В обоих случаях таймер Hold EIGRP был настроен таким образом, чтобы быть в три раза больше таймера Hello. Хотя такой подход является обычной практикой, он не является обязательным требованием. Кроме того, вы должны быть осторожны, чтобы не установить таймер Hold на роутере со значением меньше, чем таймер Hello. Такая неверная конфигурация может привести к тому, что соседство будет постоянно "падать" и восстанавливаться. Интересно, что Cisco IOS действительно принимает такую неправильную конфигурацию, не сообщая ошибки или предупреждения. EIGRP использует таймер Hello по умолчанию 5 секунд и таймер Hold по умолчанию 15 секунд на LAN интерфейсах. Однако в некоторых ситуациях на интерфейсах, настроенных для Frame Relay, таймеры по умолчанию будут больше. Далее, посмотрим, как мы можем проверить настройки таймера EIGRP. Команда show ip eigrp neighbors, как показано в примере ниже, показывает оставшееся время удержания для каждого соседа EIGRP. Обратите внимание в приведенном выше примере, что значение в столбце Hold равно 2 секундам для роутера OFF1 (то есть 10.1.1.1) и 13 секундам для роутера OFF3 (то есть 10.1.1.10). Эти цифры говорят нам о не настроенных таймерах Hold. Они говорят нам, сколько времени остается до того, как роутер OFF2 отключит этих соседей, в отсутствие приветственного сообщения от этих соседей. Роутер OFF2 перезапускает свой обратный отсчет времени Hold для роутера OFF3 до 15 секунд (таймер Hold роутера OFF3) каждый раз, когда он получает Hello сообщение от OFF3 (которое OFF3 отправляет каждые 5 секунд на основе своего таймера Hello). Поэтому, если вы повторно выполните команду show ip eigrp neighbors на роутере OFF2, вы, вероятно, увидите оставшееся время Hold для роутера OFF3 где - то в диапазоне 10-14 секунд. Однако, поскольку роутер OFF1 настроен с таймером Hold 3 секунды и таймером Hello 1 секунды, оставшееся время Hold, зафиксированно на роутере OFF2 для его соседства с роутером OFF1, обычно должно составлять 2 секунды. Мы можем видеть настроенные значения таймера Hello и Hold для интерфейса роутера, выполнив команду show ip eigrp interfaces detail interface_id, как показано в примере ниже. Вы можете видеть в выходных данных, что интерфейс Gig 0/1 на роутере OFF2 имеет таймер Hello 5 секунд и таймер Hold 15 секунд. Отлично, это закрепили. Теперь почитайте про пассивные интерфейсы в EIGRP.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59