По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Построение модели API требует стратегического подхода, и он связан с CRUD. Направляя разработчиков целиком и полностью, CRUD прокладывает путь для разработчиков API, ведя их по пути разработки доработанных и высококлассных API. Что такое CRUD? CRUD – это сокращение от Create (создание), Read (чтение), Update (модификация) и Delete (удаление). Эти четыре функции являются ключевыми принципами, которым следуют разработчики и программисты API при создании надежных API. В соответствии с отраслевым стандартом каждая модель API должна следовать всем этим четырем (или как минимум трем) принципам в процессе выполнения. Некоторые языки программирования следуют CRUD в том виде, в котором он есть, в то время как лишь некоторые используют адаптированную версию CRUD. К языкам, использующим инфраструктуру CRUD, относятся: Python, PHP, Java и .Net. CRUD работает как напоминание для разработчиков о том, что необходимо для того, чтобы приложение чувствовало себя полноценным. Она возникла в начале 80-х годов. В то время его использовали для иллюстрирования жизнеспособности базы данных SQL. Со временем он расширил список областей применения и стал ключевым принципом проектирования для DDS и HTTP. Определение функций CRUD Однозначное понимание функций CRUD позволяет разработчикам максимально эффективно использовать их. Итак, ознакомьтесь с каждой из 4 функций и рассмотрите примеры для того, чтобы лучше понимать их принцип действия. Create Эта функция используется для оповещения о введении любых новых изменений в базу данных и обеспечения их реализации. В реляционной базе данных SQL, Create называется INSERT. Этот оператор разрешает конечному пользователю создавать новые строки данных и позволяет ранее сохраненным данным легко взаимодействовать с новой базой данных. Пример: Допустим, мы добавляем Фрукты в список http://www.example.com/fruits/. Для того, чтобы создать объект «Манго», мы должны оправить запрос POST на этот URL: { “fruit": { "name": “Mango”, "color": “Yellow” } } Этот код создаст еще один объект в списке фруктов с именем «манго», у которого есть свойство (цвет) со значением «желтый». При успешном создании вы получите HTTP-ответ 201. Read Что функция поиска делает в обычных случаях, вы можете узнать, почитав о реляционных базах данных. Конечным пользователям разрешено искать различимые значения или данные в таблице данных и находить значения. Можно использовать определённые ключевые слова или фильтровать данные, чтобы получить точную информацию. Пример: Теперь для того, чтобы прочитать список, в который вы добавили объект в предыдущем примере, воспользуемся GET-запросом. Используйте этот код: GET http://www.example.com/fruits/ Если для вашего запроса существует запись, то вы увидите HTTP-ответ 200. Также вы увидите список фруктов. { "fruits": [ { "id": 1, "name": “Apple”, "color": “Red” }, { "id": 2, "name": “Grapes”, "color": “Green” }, ... { "id": 3, "name": “Mango”, "color": “Yellow” } ] } Для того, чтобы увидеть детали, связанные с конкретным объектом Манго, который мы создали, используйте этот код: GET http://www.example.com/fruits/3/ Update Функция модификации полезна для изменения уже существующих записей без внесения каких-либо нарушений в существующую базу данных. Для полной модификации требуется некоторая модификация в нескольких областях. Эта функция известна как Update как в SQL, так и в Oracle HCM Cloud. Пример: Для того, чтобы изменить значение объекта, выполним PUT-запрос для URL-адреса конкретного объекта. Вот так: PUT http://www.example.com/fruits/3/ { "fruits": { "name": “Ripe Watermelon”, "color": “Blood Red” } } Если возвращается идентификатор состояния 200, то обновление прошло успешно. Для подтверждения вы можете прочитать этот объект повторно и просмотреть значения для него. Delete При помощи этой функции пользователи могут удалять определенные записи или данные из определенной базы данных. Вы можете удалять данные, которые больше не нужны или устарели. Удаление бывает двух типов: обратимое или необратимое удаление. Необратимое удаление удаляет данные один раз, а обратимое используется для обновления состояния строки данных без ее окончательного удаления. Пример: Это очень просто. Давайте удалим созданный нами объект. DELETE http://www.example.com/fruits/3/ Теперь при GET-запросе (чтение) вы получите код 404, который говорит о том, что данных по вашему запросу нет. Преимущества CRUD Есть что-то, что заставляет разработчиков и дизайнеров приложений предпочитать CRUD любому другому подходу. Это «что-то» - это непревзойденная производительность, интегрированная с некоторыми уникальными функциями. Основные преимущества, которыми можно воспользоваться после запуска CRUD, представлены ниже. Меньшая вероятность атак путем внедрения SQL-кода Использование SQL-языка имеет больше шансов столкнуться с SQL-атаками, поскольку все операторы SQL выполняются непосредственно на SQL-серверах. Сервер также хранит инструкции и процедуры SQL, доступ неавторизованных ресурсов к которым может оказаться фатальным. Использование CRUD позволяет контролировать возможные атаки путем внедрения SQL-кода, поскольку использует уже сохраненные действия и не требует создания динамических запросов с использованием данных конечного пользователя. Кроме того, такой подход использует однозначное цитирование параметров SQL-операторов. Лучшая защита от случайного просмотра Пользователи специальных SQL-операторов должны получить разрешение на доступ к таблицам базы данных. После успешного предоставления разрешения конечным пользователям разрешается читать и управлять данными, имеющимися в Excel, Word и любой другой программе. Также возможен обход бизнес-правил приложения. Однако делать это не всегда выгодно. Риски утечки данных есть всегда. CRUD в такой ситуации полезен, так как делает возможным использование ролей приложений. Используя роли приложений, можно обеспечить высоко интегрированную безопасность базы данных и контролировать права доступа. Полномочия могут защищаться паролем, а поскольку пароли также интегрированы в приложение, то изменить их сложно. Таким образом, можно покончить со случайным просмотром. CRUD vs REST – сравнение CRUD и REST очень часто используют для обозначения одного и того же подхода. Такая путаница очевидна, так как приложения REST следуют принципу, подобному CRUD, для взаимодействия с другими приложениями или компонентами. Тем не менее, эти два термина не идентичны и имеют ряд явных сходств и различий. Что общего? Приложения REST разрабатываются с сохранением определенного набора ресурсов в смысловом центре. Эти ресурсы, как и ресурсы CRUD, можно легко создавать, читать, модифицировать и удалять. Просто вместо Create, Read, Update и Delete в REST используются ресурсы PUT/POST, GET, PATCH/POST и DELETE. В чем разница? Абсолютно точно, то у этих двоих больше различий, чем сходств. Взгляните на ключевые различия между ними. В части определения REST упоминается как архитектурная система, а CRUD – как функция. REST «крутится» вокруг ресурсов, основанных на компонентах HTTP. CRUD «крутится» вокруг информации, хранящейся в настройках базы данных. CRUD может быть частью REST, но REST не может быть частью CRUD. REST – это независимый подход, который может правильно функционировать и без CRUD. Что такое CRUD-тестирование? CRUD-тестирование – это оригинальная методология тестирования методом «черного ящика», которая широко используется для подтверждения полезности данного программного обеспечения в режиме реального времени. Это понятие используется для SQL и других ресурсов СУБД, для которых гарантируется точное отображение данных, сквозное обслуживание ACID-свойств и несравнимая целостность данных. Обеспечение безопасности в REST и CRUD-операциях Аутентификация, авторизация и учет использования ресурсов (или ААА – Authentication, Authorization, Accounting) – это крайне эффективная практика безопасности, которая одинаково хорошо подходят для REST и CRUD. Она включает в себя аутентификацию конечных пользователей, выполнение авторизации перед каждым доступом и привлечение конечных пользователей к ответственности за свои действия или использование данных.
img
BGP - это сложный протокол маршрутизации, и бывают ситуации, когда что-то идет не так как надо. Кроме того, что он сложный, он также совершенно отличается от наших IGP протоколов (OSPF и EIGRP). В этой статье мы начнем с рассмотрения неполадок, возникающих в установлении соседства BGP, и как только это разберем, перейдем к проблемам с объявлением маршрутов, которые должны или не должны появляться! Видео: Основы BGP за 7 минут Урок 1 Начнем с нескольких простых сценариев. Два маршрутизатора BGP, которые подключены и настроены для EBGP. К сожалению, мы видим это, когда проверяем соседство BGP: Когда два маршрутизатора EBGP, которые напрямую подключены, не образуют рабочее соседство BGP, может произойти ряд ошибок: Layer 2 не позволяет нам добраться до другой стороны. Проблема уровня 3: неправильный IP-адрес на одном из маршрутизаторов. Список доступа, блокирующий TCP-порт 179 (BGP). Неправильный IP-адрес настроен для соседнего маршрутизатора BGP Мы можем использовать команду show ip bgp summary, чтобы проверить IP-адреса маршрутизаторов. Они, совпадают. Мы выполним эхо запрос, с помощью команды ping. Видим, что, пакеты не могут добраться до другой стороны. Проверяем интерфейсы и видим, что кто-то ввел команду отключения интерфейса. R2(config)#interface fa0/0 R2(config-if)#no shutdown "Поднимаем" интерфейс Это прекрасно! Наше соседство BGP установлено. Это было легко! Итог урока: убедитесь, что ваш интерфейс работает. Урок 2 Следующая неполадка похожа на предыдущую, но немного отличается. Мы используем те же маршрутизаторы и номера AS, но на этот раз необходимо установить соседство BGP между интерфейсами обратной связи. Посмотрим, как выглядит конфигурация BGP: Вот конфигурация BGP. Как вы видите, мы используем loopback интерфейсы для установления соседства BGP-соседей. Оба маршрутизатора показывают, что их сосед BGP бездействует. Есть ряд вещей, которые мы должны проверить здесь: Доступен ли IP-адрес соседа BGP? Мы не используем прямые линии связи, поэтому у нас могут возникнуть проблемы с маршрутизацией. TTL IP-пакетов, которые мы используем для внешнего BGP, равен 1. Это работает для сетей с прямым подключением, но, если они не подключены напрямую, нам нужно изменить эту настройку. По умолчанию BGP будет получать обновления с IP-адреса, ближайшего к соседу BGP. В нашем примере это интерфейс FastEthernet. Это то, что мы должны изменить. Начнем с маршрутизации. Оба маршрутизатора знают только о своих напрямую подключенных сетях. Чтобы достичь loopback интерфейсов друг друга, мы будем использовать статическую маршрутизацию. R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2 R2(config)#ip route 1.1.1.1 255.255.255.255 192.168.12.1 Два статических маршрута должны выполнить эту работу. Отправка ping на IP-адрес 2.2.2.2 и получение его из нашего собственного loopback интерфейса доказывает, что оба маршрутизатора знают, как связаться с loopback интерфейсом друг друга. R1(config-router)#neighbor 2.2.2.2 ebgp-multihop 2 R2(config-router)#neighbor 1.1.1.1 ebgp-multihop 2 Команда ebgp-multihop изменяет TTL на 2. Мы можем включить отладку, чтобы увидеть прогресс. Ясно видно, что R2 использует IP-адрес 192.168.12.2, а R1 отказывается от соединения. R1(config-router)#neighbor 2.2.2.2 update-source loopback 0 R2(config-router)#neighbor 1.1.1.1 update-source loopback 0 Используйте команду update-source, чтобы изменить IP-адрес источника для обновлений BGP. Соседство BGP работает! Итог урока: маршрутизаторам BGP не требуется устанавливать соседство с использованием напрямую подключенных интерфейсов. Убедитесь, что маршрутизаторы BGP могут связаться друг с другом, что пакеты BGP получены из правильного интерфейса, и в случае EBGP не забудьте использовать команду multihop. Урок 3 Продолжим рассмотрение некоторых проблем IBGP. Два маршрутизатора в одной AS и вот конфигурация: Легко и просто. Маршрутизаторы используют напрямую подключенные IP-адреса для соседства BGP. Жаль ... мы не становимся соседями. Что может быть не так? Мы используем напрямую подключенные интерфейсы, поэтому не так много проблем, если не считать проблемы L2 / L2. Отправка пинга с одного маршрутизатора на другой доказывает, что L2 и L3 работают нормально. Как насчет L3? У нас могут быть проблемы с транспортным уровнем. Я не могу подключиться к TCP-порту 179 с обоих маршрутизаторов. Это звоночек в сторону того, что что-то блокирует BGP? Вот оно! Это Служба безопасности.… Кто-то решил, что было бы неплохо "обезопасить" BGP и заблокировать его списком доступа. R2(config)#interface fastEthernet 0/0 R2(config-if)#no ip access-group 100 in Удалим список доступа. Итог урока: не блокируйте TCP-порт BGP 179. Урок 4 Следующая проблема IBGP. Это похоже на ситуацию с EBGP ранее...мы будем использовать loopback-интерфейсы для установления соседства BGP, вот конфигурации: Ничего особенного, IBGP и мы используем loopback интерфейсы. Не повезло здесь ... нет соседей. Давайте сначала проверим, могут ли маршрутизаторы получить доступ к loopback интерфейсам друг друга: Быстрый взгляд на таблицу маршрутизации показывает нам, что это не так. Мы могли бы исправить это с помощью статического маршрута или IGP. Обычно мы используем IGP для IBGP для объявления loopback интерфейсов. Сейчас будем использовать OSPF: R1(config)#router ospf 1 R1(config-router)#network 1.1.1.0 0.0.0.255 area 0 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config)#router ospf 1 R2(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config-router)#network 2.2.2.0 0.0.0.255 area 0 Набор правильных команд OSPF должно сделать свою работу! Отправка эхо-запроса, чтобы проверить, знают ли маршрутизаторы и как связаться с сетями друг друга, успешен. Тем не менее, соседство BGP по-прежнему отсутствует Отладка показывает, что в соединении отказано, а также показывает локальный IP-адрес, который используется для BGP. Кажется, кто-то забыл добавить команду update-source, так что давайте исправим это! R1(config)#router bgp 1 R1(config-router)#neighbor 2.2.2.2 update-source loopback 0 R2(config)#router bgp 1 R2(config-router)#neighbor 1.1.1.1 update-source loopback 0 Точно так же, как EBGP, мы должны установить правильный источник для наших пакетов BGP. Задача решена! Единственное отличие от EBGP в том, что нам не нужно менять TTL с помощью команды ebgp-multihop. Итог урока: распространенная практика настройки IBGP между loopback интерфейсами. Убедитесь, что эти loopback доступны и обновления BGP получены из loopback интерфейса. Теперь, рекомендуем почитать вторую часть статьи по траблшутингу протокола BGP.
img
Когда узел в кластере vSAN, запущенный в vSphere 6.0 Update 1b, отключен для обслуживания, узлы ESXi в кластере сообщают об ошибке: Host cannot communicate with all other nodes in virtual SAN enabled cluster (Узел не может взаимодействовать со всеми другими узлами кластера с поддержкой виртуальной SAN) После перезагрузки узла (узлов) и повторного присоединения к кластеру сообщение автоматически не очищается. Это сообщение появляется на вкладке Summary веб-клиента vSphere, и хост ESXi отображает треугольник уведомления, хотя аварийные сигналы не инициируются. Это сообщение появляется на всех узлах в кластере vSAN, когда один или несколько узлов отключены для обслуживания и, следовательно, не взаимодействуют с остальной частью кластера, или когда существует допустимая проблема с связью кластера vSAN. В обычных условиях это сообщение автоматически сбрасывается после возобновления связи с хостами. Если это сообщение появляется на вкладке Сводка, в то время как все другие индикаторы сообщают, что сеть vSAN исправна, эта проблема может быть косметической. Решение Эта косметическая проблема устранена в VMware ESXi 6,0 Update 2, доступном на странице загрузки VMware Чтобы устранить эту проблему, если обновление не требуется, используйте один из следующих вариантов: Перезапустите агент управления VPXA на узлах vSAN. Это приводит к обновлению информации в vCenter Server и удалению сообщения. Примечание. Перезапуск агента управления vCenter на хосте ESXi может привести к короткому прерыванию управления хостом. В крайних случаях хост может сразу же перейти в состояние "не отвечает" на сервере vCenter Server, или к ожидающим операциям, которые завершаются неуспешно, и их необходимо повторить. Чтобы перезапустить агент управления VPXA (vCenter Server) на узлах узла ESXi кластера vSAN: Включите SSH или ESXi Shell на каждом узле кластера vSAN. Войдите на узел кластера vSAN с помощью SSH или ESXi Shell. Перезапустите агент управления VPXA, выполнив эту команду # /etc/init.d/vpxa restart Примечание. Подождите приблизительно одну минуту, прежде чем перейти к следующему хосту. Это позволяет одновременно обновлять информацию от каждого узла в vCenter Server. Удалите узел из кластера vSAN и добавьте его повторно. Это вынуждает все узлы обновлять информацию о членстве в кластере и очищать сообщение. Примечание. При попытке удаления и повторного добавления узла синхронизация данных не выполняется, когда узел находится в режиме обслуживания и находится вне кластера vSAN. При выборе опции «Гарантировать режим обслуживания специальных возможностей» некоторые объекты могут быть не защищены при выполнении обходного решения. Для удаления узла из кластера vSAN и повторного добавления: Выберите хост ESXi в кластере vSAN, который можно временно перевести в режим обслуживания Примечание. VMware рекомендует выбрать наименее занятый/используемый хост. В веб-клиенте vSphere щелкните правой кнопкой мыши узел ESXi и выберите "Перейти в режим обслуживания". Примечания: Выберите параметры "Обеспечить доступность" или "Полное перемещение данных" для режима обслуживания vSAN. Если применимо, разрешите перенос отключенных виртуальных машин на остальные хосты ESXi. 3Удаление узла из кластера vSAN Выберите хост. Перетащите узел из кластера. Поместите хост в объект центра обработки данных в хранилище сервера vCenter. Примечание. После перемещения хоста в центр обработки данных подождите около двух минут. Перетащите узел обратно в кластер vSAN. После добавления узла обратно в кластер vSAN щелкните на него правой кнопкой мыши и выберите «Выход из режима обслуживания». Примечание. Сообщение на остальных хостах должно быть понятным. Примечание. Эти обходные пути успешно очищают сообщение. Однако при повторном появлении сообщения может потребоваться повторное применение обходного решения. Это сообщение может вновь появиться в таких случаях, как проблема с сетью, отказ/перезагрузка хоста или обслуживание хоста.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59