По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Друг, начнем с цитаты: Redis – это высокопроизводительная БД с открытым исходным кодом (лицензия BSD), которая хранит данные в памяти, доступ к которым осуществляется по ключу доступа. Так же Редис это кэш и брокер сообщений. Надо признаться, определение не дает точного понимания, что же такое Redis. Если это так круто, то зачем вообще нужны другие БД? На самом деле, Redis правильнее всего использовать в определенных кейсах, само собой, зная про подводные камни – именно об этом и поговорим. Про установку Redis в CentOS 8 мы рассказываем в этой статье. Redis как база данных Говорим про случай, когда Redis выступает в роли базы данных: Пару слов про ограничения такой модели: Размер БД ограничен доступной памятью Шардинг (техника масштабирования) ведет к увеличению задержки Это NoSQL - никакого языка SQL LUA скриптинг в качестве альтернативы Это нереляционная СУБД! Нет сегментации на пользователей или группы пользователей. Отсутствует контроль доступа Доступ по общему паролю. Что скажут ваши безопасники? Теперь про преимущества модели: Скорость Хранение данных в памяти делает быстрее работу с ними Скрипты на LUA Выполнение прямо в памяти, опять же, ускоряет работу Удобные форматы запросов/данных Geospatial – геоданные (высота, ширина, долгота и так далее) Hyperloglog – статистическе алгоритмы Hash – если коротко, то хэш в Redis делают между строковыми полями и их значениями Алгоритмы устаревания данных Примеры использования Представь, у нас есть приложение, где пользователям необходимо авторизоваться, чтобы выполнять какие – либо действия внутри приложения. Каждый раз, когда мы обновляем авторизационные данные клиента, мы хотим их получать для последующего контроля. Мы могли бы отправлять лист авторизационных параметров (с некими номерами авторизаций, сроком действия с соответствующими подписями), чтобы каждое действие внутри приложения, сопровождалось авторизацонной транзакцией из листа, который мы прислали клиенту. С точки зрения безопасности, в этом подходе нет ничего плохого, если мы храним на своей стороне данные в безопасности и используем Javascript Object Signing and Encryption (JOSE), например. Но проблема появится в том случае, когда наш пользователь имеет более одной авторизации внутри приложения – такие схемы плохо поддаются масштабированию. А что если вместо отправки листа авторизационных параметров, мы сохраним его у себя, а пользователю отправим некий токен, который они должны отправлять для авторизации? Далее, по этому токену, мы легко сможем найти авторизации юзера. Это делает систему гораздо масштабируемой. Redis, такой Redis. Итого, для указанной выше схемы, мы хотим: Скорость Мы не хотим, чтобы пользователь долго ожидал авторизации Масштабирумость системы Сопоставление ключа (токена) с авторизациями юзера А вот, что на эти вызовы может ответить Redis: Redis хранит данные в памяти – он быстрый. Redis можно кластеризовать через компонент Sentinel. Масштабируемость? Пожалуйста. В Redis куча вариантов хранения списков. Самый простой будет являться набором данных. В качестве бонуса от Redis, вы получите механизм экспайринга токенов (устаревания). Все будет работать. Redis как кэш! Redis почти заменил memcached в современных приложениях. Его фичи делают супер – удобным кэширование данных. Ограничения: Значения не могут превышать 512 МБ Отсутствует искусственный интеллект, который будет очищать ваше хранилище данных Профит: Совместное использование кэша разными сервисами по сети Удобные фичи, такие как LUA скриптинг, который упрощает работы с кэшом Временные ограничения для данных Еще один кейс Предположим, перед нами такая задача: приложение, отображает пользователям данные с определенными значениями, которые можно сортировать по множеству признаков. Все наши данные хранятся в БД (например, MySQL) и показывать отсортированные данные нужно часто. Дергать БД каждый раз весьма тяжело и ресурсозатратно, а значит, нам нужно кэшировать данные в отсортированном порядке. Окей, кейс понятен. Рэдис, что скажешь на такие требования? Кэш должен хранить сортированные наборы данных Нам нужно вытаскивать наборы данных внутри наборов данных (для пагинации, например, то есть для переключения между страницами) Это должно быть быстрее, чем пересчет данных с нуля Что скажет Redis: Хранить наборы данных - легко Может вытаскивать сабсеты из наборов - легко Конечно быстрее. Ведь данные хранятся в памяти Redis как брокер сообщений Редис может выступать в качестве брокера сообщений. Схема обычная и весьма базовая - publish–subscribe (pub/sub), или как можно перевести на русский язык «Издатель - подписчик». Как и раньше, давайте обсудим плюсы и минусы, хотя их тут и не так много. Минусы: Только тривиальная модель pub/sub Отсутствие очередей сообщений Ну а плюсы, как обычно для Редиса – скорость и стабильность. Кейс напоследок Простой пример – коллаборация сотрудников одной компании. Предположим, у них есть приложение, где они работают над общими задачами. Каждый пользователь делает свой набор действий, о котором другие пользователи должны знать. А так же, юзеры могут иметь разные экземпляры приложений – десктоп, мобильный или что то еще. Требования по этой задаче: Низкая задержка Мы не хотим иметь трудности в процессе совместной работы сотрудников Стабильная работа и непрерывность Масштабирование Кампания растет и развивается Редис, твой выход! Низкая задержка – да, говорили об этом ранее Стабильность – минимальное количество точек отказа в Redis Стабильная работа и непрерывность Масштабирование – сделаем кластер, нет проблем. Выводы Redis - крутая штука, которая позволяет объединять сервисы и следовать 12 принципам приложений. Для приложений, в которых нагрузка ориентирована на быстрое изменение наборов данных и высокая безопасность данных не имеет завышенных требований – Redis прекрасный выбор. Если данные нуждаются в усиленной защите, Редис подойдет в меньшей степени, лучше посмотрите в сторону MongoDB или Elasticsearch.
img
Иногда нам хочется, чтобы интерфейс роутера участвовал в процессе маршрутизации EIGRP, но без отправки Hello сообщений EIGRP с этого интерфейса. Именно об этом мы и поговорим в этой статье. Ранее мы говорили о команде Network net-id wildcard-mask, вводимой в режиме конфигурации роутера EIGRP. Эта команда вызывает два основных действия: Отправляет EIGRP Hello multicast сообщения с любого интерфейса, чей IP-адрес попадает в сетевое адресное пространство, указанное командой network. Объявляет подсеть любого интерфейса, IP-адрес которого попадает в сетевое адресное пространство, заданное командой network. Предыдущие статьи из цикла про EIGRP: Часть 1. Понимание EIGRP: обзор, базовая конфигурация и проверка Часть 2. Про соседство и метрики EIGRP Часть 2.2. Установка K-значений в EIGRP Часть 3. Конвергенция EIGRP – настройка таймеров Следующие статьи из цикла: Часть 5. Настройка статического соседства в EIGRP Часть 6. EIGRP: идентификатор роутера и требования к соседству Однако в некоторых случаях нам нет необходимости в том, чтобы команда network выполняла перовое действие, указанное выше. Например, если интерфейс подключается к хостам в локальной сети, а не к другим EIGRP-спикер роутерам. В этом случае нет необходимости отправлять Hello сообщения с этого интерфейса. К счастью, мы можем выборочно отключать отправку приветствий с интерфейса, все еще объявляя подсеть этого интерфейса нашим соседям EIGRP. Это стало возможным благодаря функции пассивного интерфейса. Рассмотрим топологию ниже: Обратите внимание, что каждый роутер имеет интерфейс, указывающий на сегмент локальной сети (то есть интерфейс, подключенный к коммутатору). Мы действительно хотим, чтобы подсети этих интерфейсов объявлялись через EIGRP, но нам не надо отправлять Hello сообщения c этого интерфейса (поскольку они не подключаются ни к каким другим EIGRP - спикер роутерам). Это делает эти интерфейсы (то есть интерфейс Gig0/3 на роутерах OFF1, OFF2 и OFF3) отличными кандидатами на роль пассивных интерфейсов. В следующем примере показано, как использовать команду passive-interface interface_id. OFF1# configurationterminal Enter configuration commands, one per line. End with CNTL/Z. OFF1(config)#router eigrp 1 OFF1(config-router)#passive-interface gig0/3 OFF1(config-router)#end OFF1# OFF2# configurationterminal Enter configuration commands, one per line. End with CNTL/Z. OFF2 (config)#router eigrp 1 OFF2 (config-router)#passive-interface gig0/3 OFF2 (config-router)#end OFF2# OFF3# configurationterminal Enter configuration commands, one per line. End with CNTL/Z. OFF3 (config)#router eigrp 1 OFF3 (config-router)#passive-interface default OFF3 (config-router)#no passive-interface gig0/1 OFF3 (config-router)#no passive-interface gig0/2 OFF3 (config-router)#end OFF3# В приведенном примере команда passive-interface gig0/3 была введена на роутерах OFF1 и OFF2, чтобы сообщить, что эти роутеры должны блокировать отправку Hello сообщений со своих интерфейсов Gig0/3 (то есть интерфейсов, соединяющихся с сегментами локальной сети). Однако конфигурация на роутере OFF3 использует несколько иной подход. Вместо указания интерфейсов, которые должны быть пассивными, дается команда passive-interface default, которая делает все интерфейсы пассивными. Затем были даны команды no passive-interface gig 0/1 и no passive-interface gig 0/2, чтобы выборочно сообщить, что эти интерфейсы не должны быть пассивными (так как эти интерфейсы используются для подключения к соседям EIGRP). Этот подход может быть полезен на роутерах с несколькими интерфейсами LAN и только несколькими интерфейсами, соединяющимися с соседями EIGRP. Как только мы выполняем команду passive-interface interface_id для определенного интерфейса, этот интерфейс больше не появляется в выходных данных команды show ip eigrp interfaces, как показано в примере ниже. Обратите внимание, что интерфейс Gig0/3, который был настроен как пассивный интерфейс, не отображается в списке. Однако EIGRP все еще объявляет подсеть, к которой принадлежит интерфейс Gig0/3. Мы можем определить, какие интерфейсы на роутере действуют в качестве пассивных интерфейсов, выполнив команду show ip protocols. В отображаемых данных этой команды, как видно в примере ниже, обратите внимание, что интерфейс Gig0/3 на роутере OFF2 является пассивным интерфейсом, в то время как его подсеть (198.51.100.0/24) объявляется EIGRP. Следом вас ждет статья про настройку статического соседства в EIGRP
img
Привет, бро! В статье расскажем в чем разница между RIPv1 (Routing Information Protocol Version 1) и его продолжение RIPv2. Погнали? Про Routing Information Protocol Version 1 (RIPv1) Прямо и по пунктам: RIPv1 это Distance-Vector протокол. Если переводить на русский - дистанционно-векторный. ; Distance vector routing - так называемая дистанционно-векторная маршрутизация, главный принцип которой основан на вычислении специальных метрик, которые определяют расстояние (количество узлов) до сети назначения RIPv1 это classfull протокол. Это означает, что он не отправляет маску подсети в апдейтах маршрутизации; RIPv1 не поддерживает VLSM (Variable Length Subnet Masking); VLSM (Variable Length Subnet Masking) - метод эффективного использования IP – адресации, который избавляет от привязки к классу сети (класс A, класс B, класс C). VLSM позволяет дробить подсеть на подсеть и так далее. Тем самым, мы можем эффективно использовать адресное пространство согласно реальных потребностей, а не класса сети; RIPv1 поддерживает максимум 15 хопов! Это означает, что любой маршрутизатор, который расположен от вас в больше, чем 15 узлов (маршрутизаторов) будет отмечен как недоступный; Раз в 30 секунд RIPv1 отправляет широковещательные апдейты маршрутизации – каждый узел должен принять и обработать этот апдейт; Первая версия RIP не поддерживает авторизация апдейтов маршрутизации – это означает, что потенциально, роутер может обновить таблицу маршрутизации от любого источника; Вот такой он, RIP первой версии. Двигаем дальше и посмотрим, а на что способен его брат – RIP второй версии? Про Routing Information Protocol Version 2 (RIPv2) RIPv2 это гибридный протокол. Он реализован на базе Distance-Vector, но так же поддерживает часть алгоритмов Link State маршрутизации, то есть, может отслеживать состояние каналов; Link State routing - отслеживает состояние каналов и отправляет LSA (Link-state advertisement) пакеты, в которых рассказывает о состоянии своих каналов. Примером link state протокола маршрутизации является OSPF RIPv2 - classless протокол. В отличие от своего старшего брата первой версии, второая версия умеет отправлять маску подсети в апдейтах маршрутизации; RIPv2 поддерживает VLSM!; RIPv2, как и RIPv1 поддерживает максимум 15 хопов; RIPv2 отправляет мультикаст сообщения об апдейтах на адрес 224.0.0.9. Это уменьшает нагрузку на сеть и в первую очередь на узлы, на которых не запущен RIP; Вторая версия RIP поддерживает аутентификацию апдейтов маршрутизации. Это значит, что теперь нельзя будет подсунуть ложный апдейт роутеру (в целом, этим могли пользоваться злоумышленники) – только авторизированные источники;
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59