По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Микросервисы – это шаблон сервис-ориентированной архитектуры, в котором приложения создаются в виде наборов небольших и независимых сервисных единиц. Такой подход к проектированию сводится к разделению приложения на однофункциональные модули с четко прописанными интерфейсами. Небольшие команды, управляющие всем жизненным циклом сервиса могут независимо развертывать и обслуживать микросервисы. Термин «микро» относится к размеру микросервиса – он должен быть удобным в управлении одной командой разработчиков (5-10 специалистов). В данной методологии большие приложения делятся на крошечные независимые блоки. Что такое монолитная архитектура? Если говорить простым языком, то монолитная архитектура – это как бы большой контейнер, в котором все компоненты приложения соединяются в единый пакет. В качестве примера монолитной архитектуры давайте рассмотрим сайт для электронной торговли. Например, онлайн-магазин. В любом таком приложении есть ряд типовых опций: поиск, рейтинг и отзывы, а также оплаты. Данные опции доступны клиентам через браузер или приложение. Когда разработчик сайта онлайн-магазина развертывает приложение, это считается одной монолитной (неделимой) единицей. Код различных опций (поиска, отзывов, рейтинга и оплаты) находится на одном и том же сервере. Чтобы масштабировать приложение, вам нужно запустить несколько экземпляров (серверов) этих приложений. Что такое микросервисная архитектура? Микросервисной архитектурой называется методика разработки архитектуры, позволяющая создавать приложения в виде набора небольших автономных сервисов для работы с конкретными предметными областями. Такой вариант структурированной архитектуры позволяет организовать приложения в множество слабосвязанных сервисов. Микросервисная архитектура содержит мелкомодульные сервисы и упрощенные протоколы. Давайте рассмотрим пример приложения для онлайн-торговли с микросервисной архитектурой. В данном примере каждый микросервис отвечает за одну бизнес-возможность. У «Поиска», «Оплаты», «Рейтинга и Отзывов» есть свои экземпляры (сервер), которые взаимодействуют между собой. В монолитной архитектуре все компоненты сливаются в одну модель, тогда как в микросервисной архитектуре они распределяются по отдельным модулям (микросервисам), которые взаимодействуют между собой (см. пример выше). Коммуникация между микросервисами – это взаимодействие без сохранения состояния. Каждая пара запросов и ответов независима, поэтому микросервисы легко взаимодействуют друг с другом. Микросервисная архитектура использует федеративные данные. Каждый микросервис имеет свой отдельный массив данных. Микросервисы и монолитная архитектура: сравнение Микросервисы Монолитная архитектура Каждый блок данных создается для решения определенной задачи; его размер должен быть предельно малым Единая база кода для всех бизнес-целей Запуск сервиса происходит сравнительно быстро На запуск сервиса требуется больше времени Локализовать ошибки довольно просто. Даже если один сервис сломается, другой – продолжит свою работу Локализовать ошибки сложно. Если какая-то определенная функция не перестает работать, то ломается вся система. Чтобы решить проблему, придется заново собирать, тестировать и развертывать приложение. Все микросервисы должны быть слабо связанными, чтобы изменения в одном модуле никак не влияли на другой. Монолитная архитектура тесно связана. Изменения в одному модуле кода влияет на другой Компании могут выделять больше ресурсов на самые рентабельные сервисы Сервисы не изолированы; выделение ресурсов на отдельные сервисы невозможно Можно выделить больше аппаратных ресурсов на самые популярные сервисы. В примере выше посетители чаще обращаются к каталогу товаров и поиску, а не к разделу оплат. Таким образом, будет разумнее выделить дополнительные ресурсы на микросервисы каталога товаров и поиска Масштабирование приложения – задача сложная и экономически не выгодная Микросервисы всегда остаются постоянными и доступными Большая нагрузка на инструменты для разработки, поскольку процесс необходимо запускать с нуля Федеративный доступ к данным, благодаря чему под отдельные микросервисы можно подбирать наиболее подходящую модель данных Данные централизованы Небольшие целевые команды. Параллельная и ускоренная разработка Большая команда; требуется серьезная работа по управлению командой Изменения в модели данных одного микросервиса никак не сказывается на других микросервисах Изменения в модели данных влияют на всю базу данных Четко прописанный интерфейс позволяет микросервисам эффективно взаимодействовать между собой Не предусмотрено Микросервисы делают акцент на продуктах (модулях), а не проектах Сосредоточены на проекте в целом Отсутствие перекрестных зависимостей между базами кода. Для разных микросервисов можно использовать разные технологии Одна функция или программа зависит от другой Сложности в работе с микросервисами Микросервисы полагаются друг на друга, поэтому необходимо выстроить коммуникацию между ними. В микросервисах создается больше модулей, чем в монолитных системах. Эти модули пишутся на разных языках, и их необходимо поддерживать. Микросервисы – это распределенная система, так что, по сути, мы имеем дело со сложной системой. В разных сервисах используются свои механизмы; для неструктурированных данных требуется больший объем памяти. Для предотвращения каскадных сбоев необходимо эффективное управление и слаженная командная работа. Трудно воспроизвести ошибку, если она пропадает в одной версии и вновь появляется в другой. Независимое развертывание и микросервисы – вещи слабо совместимые. Микросервисная архитектура требует большего количества операций. Сложно управлять приложением, когда в систему добавляются новые сервисы. Для поддержки всевозможных распределенных сервисов требуется большая команда опытных специалистов. Микросервисы считаются дорогостоящими решениями, поскольку для разных задач создаются и поддерживаются разные серверные пространства. Сервис-ориентированная архитектура (СОА) или микросервисы СОА-сервисы (SOA - Service-oriented architecture) поддерживаются через реестр, который считается перечнем файлов каталога. Приложения должны найти сервис в реестре и вызвать его. Иначе говоря, СОА похож оркестр: каждый музыкант играет на своем инструменте, а всеми артистами управляет дирижер. Микросервисы – это разновидность СОА-стиля. Приложения создаются в виде набора небольших сервисов, а не цельной программы. Микросервисы похожи на труппу артистов: каждый танцор знает свою программу и не зависит от других. Даже если кто-то забудет какое-то движение, вся труппа не собьется с ритма. Теперь давайте поговорим о различиях между СОА и микросервисах. Параметр СОА Микросервисы Тип проектирования В СОА компоненты приложения открыты для внешнего мира; они доступны в виде сервисов Микросервисы – это часть СОА. Такая архитектура считается реализацией СОА Зависимость Подразделения – зависимы Они не зависят друг от друга Размер приложения Размер приложения больше, чем у обычных программ Размер приложения всегда небольшой Стек технологий Стек технологий ниже, чем у микросервисов Стек технологий очень большой Сущность приложения Монолитная Полностековая Независимость и ориентированность СОА-приложения создаются для выполнения множества бизнес-задач Создаются для выполнения одной бизнес-задачи Развертывание Процесс развертывания растянут по времени Несложное развертывание, на которое тратится меньше времени Рентабельность Более рентабельно Менее рентабельно Масштабируемость Меньше, чем у микросервисов Высокая масштабируемость Бизнес-логика Компоненты бизнес-логики хранятся внутри одного сервисного домена. Простые проводные протоколы (HTTP с XML JSON). API управляется с помощью SDK/клиентов Бизнес-логика распределена между разными корпоративными доменами Микросервисные инструменты Wiremock – тестирование микросервисов WireMock – это гибкая библиотека для создания заглушек и сервисов-имитаций. В ней можно настроить ответ, который HTTP API вернет при получении определенного запроса. Также может использоваться для тестирования микросервисов. Docker Docker – это проект с открытым кодом для создания, развертывания и запуска приложений с помощью контейнеров. Использование такого рода контейнеров позволяет разработчикам запускать приложение в виде одного пакета. Кроме того, в одном пакете могут поставляться библиотеки и другие зависимости. Hystrix Hystrix – это отказоустойчивая Java-библиотека. Данный инструмент предназначен для разделения точек доступа к удаленным сервисам, системам и сторонним библиотекам в распределенной среде (микросервисах). Библиотека улучшает всю систему в целом, изолируя неисправные сервисы и предотвращая каскадный эффект от сбоев. Лучшие примеры использования микросервисной архитектуры Отдельное хранение данных для каждого микросервиса. Поддержание кода на едином уровне зрелости Отдельная сборка для каждого микросервиса. Заключение Микросервисы – это СОА-шаблон, в котором приложения создаются как набор малых и независимых серверных единиц. Микросервисная архитектура относится к стилям разработки архитектуры, позволяющим создавать приложение в виде небольших и автономных сервисов для определенных предметных областей. Монолитная архитектура похожа на большой контейнер, в котором все компоненты приложения собраны в один пакет. Каждый блок приложения в микросервисе имеет предельно малый размер и выполняет определенную функцию. Большая база кода в монолитной архитектуре замедляет процесс разработки. Выход новых версий может растянуться на месяцы. Поддерживать такую базу кода довольно сложно. Существует 2 типа микросервисов: Stateless (без сохранения состояния) и Stateful (с отслеживанием состояния) Микросервисы на Java полагаются друг на друга; они должны взаимодействовать между собой. Микросервисы позволяют в большей степени сконцентрироваться на определенных функциях или потребностях бизнеса. Сервисно-ориентированная архитектура, или СОА, – это усовершенствованные распределенные вычисления, основанные на проектной модели запроса/ответа в синхронных или асинхронных приложениях. Компоненты приложения в СОА открыты для внешнего мира и представлены в виде сервисов; микросервисы считаются частью СОА. Это реализация СОА. К популярным микросервисным инструментам относятся Wiremock, Docker и Hystrix.
img
Представьте ситуацию, пользователи пытаются получить доступ к вашему сайту, но он не открывается. Знаете в чём дело? Возможно, есть ошибки, которые не были выявлены и решены раньше. Разочарованные пользователи покидают ваш сайт, а вы теряете лояльных пользователей. Как решить эту проблему? Как узнать о состоянии сайта раньше пользователей? Существует два возможных способа - eсли вы не против потратить немного денег, то можно обратиться к таким мониторинговым решениям, как StartCake и т.п. Однако если вы разработчик или не готовы тратиться ежемесячно, можете воспользоваться преимуществами API Geekflare - Site Up? Данный API проверяет доступность сайта из разных точек. В данном материале рассмотрим Python код, который немедленно уведомит вас через Gmail, как только сайт станет недоступен. Начнем с изучения API «Is Site Up?» API Is Site Up? Перед началом работы с API необходимо установить пакет requests, который в Python используется для работы с API. Но не обязательно использовать Python. Можно использовать любой другой язык. В любом случае, убедитесь, что настроили все необходимое, чтобы сделать API запрос. Итак, для тех, кто использует Python, установите пакет запросов с помощью команды: pip install requests Выполните настройку для других языков (если выбран другой язык, кроме Python) и переходите к следующим шагам. Теперь перейдите на страницу API Geekflare. Вы можете найти различные типы API, включая «Is Site Up?». Для использования API Geekflare нам нужен ключ API, который мы можем получить через RapidAPI. Нажмите на кнопку GET API KEY, чтобы перейти к RapidAPI. RapidAPI откроется в новой вкладке и выглядит следующим образом: Чтобы получить ключ API нужно создать учетную запись. Создайте учетную запись в RapidAPI, если у вас ее нет. Затем в верхней части всех доступных API Geekflare вы увидите API «Is Site Up?», который мы ищем. Если он не активен, найдите его с помощью поиска и нажмите на него. После этого в правой стороне должно отобразиться руководство по данному API. Из раздела Code Snippets в правой части выберите Python -> Requests. Или же если вы не используете Python, выберите другой язык с соответствующим пакетом. Вы получите код для вызова API «Is Site Up?». Давайте изменим его немного, чтобы потом легче было добавлять код. Посмотрите на измененный код в Python. import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data) Замените API_KEY своим собственным ключом API из RapidAPI в приведенном выше коде. Он будет разным для каждого пользователя. Вы найдете его в RapidAPI в разделе Параметры заголовка: Тот же ключ API вы сможете найти в примере кода, как показано ниже. Несколько расположений В приведенном выше коде сайт проверяется из одного датацентра (Нью-Йорк, США). Но мы можем посылать запросы на сайт из разных мест с указав буквенные коды стран в теле запроса. Другие доступные места - Англия (Лондон) и Сингапур. Мы можем передать данные местоположения вместе с URL-адресом сайта следующим образом: { "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" } Вы можете передать предпочитаемые расположения из списка. Мы написали код, чтобы сделать запрос API, который получает данные независимо от того, работает сайт или нет. Пришло время написать еще код, который отправляет почту, когда сайт не работает. Получение уведомления на почту В сети можно найти немало руководств о том, как отправлять электронные письма через Gmail в Python или же использовать следующий код, который использует пакет под названием yagmail специально разработан для отправки почты из Gmail. Перед отправкой сообщения через учетную запись Gmail необходимо включить параметр Разрешить небезопасные приложения. Вы можете включить его здесь. Посмотрим код: def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "receiver@domain.com" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, ) Полное руководство по yagmail можно найти здесь. Теперь у нас есть код для запросов API и отправки почты. Следующим шагом является вызов send_mail всякий раз, когда в ответе на запрос сайт указывается как недостпный. Итак, откуда мы знаем, что наш сайт не работает или работает? Когда мы посылаем запрос к API «Is Site Up?», он возвращает нам Python словарь с некоторыми данными как следующем скриншоте: В данном словаре есть ключ message. Значение этого ключа и показывает нам состояние сайта. Данный ключ может иметь два значения: Site is up Site is down Итак, мы отправим почту, когда получим сообщение «Site is down». Окончательный код будет выглядеть так: import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "email@domain.com" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below. " for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']} " mail_content += " Check the error and resolve them as soon as possible." send_mail(mail_content) Тело сообщения можете редактировать по своему усмотрению. Мы завершили код отправки почты всякий раз, когда наш сайт не работает. Смотри образец сообщения, полученного с помощью вышеуказанного кода. Но, есть еще проблема. Мы должны выполнить наш код, чтобы проверить, работает ли наш сайт или нет. Частота запуска данного скрипта зависит от ваших предпочтений. Допустим, мы должны проверять сайт каждые час. Правда, мы можем каждый час открыть терминал и запустить скрипт. Но это скучно и неэффективно. Плюс к этому, никто так не делает. Решение напрашивается само: использовать cron для автоматического выполнения нашего кода каждый час. Посмотрим, как его настроить. Настройка Cron Рассмотрим шаги по настройке cron в операционной системе на базе UNIX. Открыть терминал. Выполните команду crontab -e, которая открывает файл crontab на терминале. Нажмите клавишу i для перехода в режим ВВОДА. Теперь добавьте шаблон cron, пути к исполняемому файлу Python и нашему файлу, как указано ниже: 0 * * * * /usr/bin/python3 /home/sample.py Подробно про cron можно прочесть в этой статье. Итак, мы настроили планировщик для ежечасного запуска кода. Если нужно будет указать другое расписание, можно воспользоваться разными утилитами для генерации шаблона расписания для cron. Пожалуй, теперь все. Мы настроили проверку сайта каждый час и получение уведомления на почту, если сайт станет недоступен. Заключение Автоматизация экономит много времени и работает на нас. Можно настроить cron на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
img
Сетевые устройства Huawei обычно поставляются неконфигурированными по умолчанию, поэтому, для использования устройства необходимо сначала настроить некоторые из его основных функций. 1. Настройка имени хоста В интерфейсе командной строки имя хоста (имя устройства) заключено в угловые скобки (...) или квадратные скобки ([...]). Имя хоста по умолчанию - Huawei, но это имя следует изменить, чтобы лучше различать несколько устройств. Чтобы изменить имя хоста, используйте команду sysname host-name. В следующем примере показано, как изменить имя хоста на Huawei-AR-01. system-view Enter system view, return user view with Ctrl+Z. [Huawei] sysname Huawei-AR-01 [Huawei-AR-01] 2. Настройка системного времени По умолчанию устройства Huawei используют Coordinated Universal Time (UTC). Чтобы указать другой часовой пояс для устройства, выполните команду сlock timezone time-zone-name {add | minus} offset. Вы можете назвать часовой пояс в параметре time-zone-name и указать, является ли смещение часового пояса к UTC положительным (add offset) или отрицательным (minus offset). Обратите внимание, что {...} указывает на то, что один из вложенных параметров должен быть выбран. Например, если вы хотите установить часовой пояс устройства как Пекинское время, выполните следующую команду: [Huawei-AR-01] clock timezone BJ add 08:00 После установки часового пояса выполните команду clock datetime HH:MM: SS YYYY-MM-DD для установки времени и даты. Параметр HH:MM:SS задает время в 24-часовом формате, а YYYY-MM-DD-дату. (Устройства Huawei поддерживают только 24-часовой формат.) Например, чтобы установить время и дату 18: 30 10 марта 2019 года, выполните следующую команду: [Huawei-AR-01] clock datetime 18:30:00 2019-03-10 3. Задание IP-адреса на устройстве Для входа в систему, вы можете использовать Telnet . Однако Telnet требует, чтобы на интерфейсе устройства был установлен IP-адрес. Для присвоения IP-адреса, выполните команду ip-address {mask | mask-length} в интерфейсном виде. Параметры ip-address и mask задают IP-адрес и маску подсети соответственно в десятичной системе счисления, а mask-length задает число последовательных "1"в двоичной системе счисления маски подсети. В следующем примере показано, как установить IP-адрес 10.1.1.100 и маску подсети 255.255.255.0 для интерфейса управления Ethernet 1/0/0: <Huawei-AR-01> system-view [Huawei-AR-01] interface ethernet 1/0/0 [Huawei-AR-01-Ethernet1/0/0] ip address 10.1.1.100 255.255.255.0 Длина двоичной записи маски подсети равна 24 (255.255.255.0 эквивалентна двоичному значению 11111111.11111111.11111111.00000000), поэтому в этом примере вы можете заменить 255.255.255.0 на 24. 4. Конфигурации интерфейса пользователя Если вы входите в устройство через консольный порт, отображается консольный пользовательский интерфейс. При входе в систему через Telnet отображается пользовательский интерфейс терминала виртуального типа (VTY). Чтобы реализовать управление пользователем через консольный порт, например, установить User Layer равным 2, можно выполнить следующие команды: system-view [Huawei] user-interface console 0 [Huawei-ui-console0] user privilege level 2 Другие пользователи также могут войти в устройство, даже тогда когда вы находитесь в нем. Каждый пользователь имеет отдельный пользовательский интерфейс (количество поддерживаемых интерфейсов VTY варьируется в зависимости от устройства), поэтому для дифференциации нескольких пользовательских интерфейсов устройство реализует нумерацию пользовательских интерфейсов. Нумерация интерфейса пользователя. Когда пользователь входит в устройство, устройство выделяет пользователю самый низкий пронумерованный простой пользовательский интерфейс в соответствии с используемым методом входа в систему. Пользовательские интерфейсы нумеруются либо относительно, либо абсолютно. НОтносительная нумерация Формат нумерации - тип пользовательского интерфейса + номер. Как правило, устройство имеет один консольный порт (некоторые устройства могут иметь больше) и 15 пользовательских интерфейсов VTY (5 пользовательских интерфейсов VTY включены по умолчанию). При использовании относительной нумерации порты отображаются следующим образом:Консольный пользовательский интерфейс: CON 0Пользовательские интерфейсы VTY: первый пользовательский интерфейс VTY - это VTY 0, второй VTY 1 и т. д. Абсолютная нумерация Абсолютное число однозначно идентифицирует пользовательский интерфейс. Абсолютные и относительные числа находятся в взаимно однозначном отображении. Пользовательский интерфейс консоли имеет относительное число CON 0 и абсолютное число 0. Пользовательский интерфейс VTY имеет относительное число в диапазоне от VTY 0 до VTY 14 и абсолютное число в диапазоне от 129 до 143.Чтобы проверить пользовательские интерфейсы, поддерживаемые устройством, выполните команду display user-interface. Например: В выходных данных команды столбец Idx показывает абсолютные числа, а столбец Type-относительные числа. Проверка подлинности пользователя. Для гарантированного входа авторизованным пользователям, устройство поддерживает проверку подлинности паролем и проверку подлинности AAA. Так же можно входить и без проверки подлинности. Проверка подлинности паролем Этот режим используется по дефолту и требует от пользователей ввода правильного пароля для входа в систему. Если пароль не настроен, вход в систему будет запрещен. Проверка подлинности ААА Этот режим требует правильного сочетания имени пользователя и пароля. Использование комбинации имени пользователя и пароля повышает безопасность по сравнению с проверкой подлинности паролем. Кроме того, пользователи дифференцированы и не влияют друг на друга во время проверки подлинности. Проверка подлинности AAA обычно используется для входа по Telnet из-за ее повышенной безопасности. Отсутствие проверки подлинности Этот режим не выполняет проверки подлинности пользователей и не рекомендуется. Отсутствие проверки подлинности позволяет пользователям входить в систему напрямую без каких-либо учетных данных.Механизм проверки подлинности пользователя проверяет логин пользователя. По дефолту после входа пользователя на устройство с помощью Telnet ему присваивается Layer0. Пример: настройка пользовательских интерфейсов VTY Во время ввода устройства в эксплуатацию многие пользователи могут войти на устройство для настройки сервисов. Чтобы ограничить число пользователей, которые могут войти в систему через Telnet, до 15, настройте 15 пользовательских интерфейсов VTY. Затем, чтобы разрешить пользователям настраивать службы, установите User Layer равным 2. Установите максимальное число пользовательских интерфейсов VTY равным 15. Выполните команду пользовательского интерфейса user-interface maximum-vty number . Укажите number равным 15. system-view [Huawei] user-interface maximum-vty 15 Войдите в режим интерфейса пользователя VTY Запустите команду пользовательского интерфейса vty first-ui-number [last-ui-number]. Укажите first-ui-number как 0 и last-ui-number как 14 (относительные номера пользовательских интерфейсов VTY). Обратите внимание, что [...] указывает, что вложенный параметр является необязательным; однако в этом примере этот параметр необходим для ограничения числа разрешенных пользователей. [Huawei] user-interface vty 0 14 [Huawei-ui-vty0-14] Установите уровень пользователя 2 для пользовательского интерфейса VTY. Запустите команду user privilege level level. Укажите level равным 2. [Huawei-ui-vty0-14] user privilege level 2 Установите режим проверки подлинности пользователя на AAA для пользовательского интерфейса VTY. Запустите команду authentication-mode {aaa | none | password} [Huawei-ui-vty0-14] authentication-mode aaa Настройте user name и password, используемые при аутентификации AAA. Выйдите из пользовательского интерфейса VTY и выполните команду aaa, для перехода в режим AAA. Запустите local-user user-name password cipher password для настройки user name и password (cipher указывает, что указанный password зашифрован). После выполните telnet local-user-name-service-type для настройки типа службы Telnet. После завершения настройки необходимо ввести имя пользователя (admin) и пароль (admin@123), прежде чем отобразится командный интерфейс.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59