По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
gRPC — это мощная платформа для работы с удаленными вызовами процедур (Remote Procedure Calls). RPC позволят писать код так, как будто он будет выполняться на локальном компьютере, даже если он может выполняться на другом компьютере. Что такое RPC? RPC — это форма взаимодействия клиент-сервер, в которой используется вызов функции, а не обычный вызов HTTP. Идея в том, что мы можем вызвать и выполнить функцию где-то на удаленной системе, как если бы это была локальная функция. Он использует IDL (Interface Definition Language - язык описания интерфейса) как форму контракта на вызываемые функции и тип данных. RPC — это протокол "запрос-ответ", т.е. он следует модели "клиент-сервер": Клиент делает запрос на выполнение процедуры на удаленном сервере. Как и при синхронном локальном вызове, клиент приостанавливается до тех пор, пока не будут возвращены результаты процедуры. Параметры процедуры передаются по сети на сторону сервера. Процедура выполняется на сервере и, наконец, результаты передаются обратно клиенту. gRPC воспроизводит этот архитектурный стиль взаимодействия клиент-сервер через вызовы функций. Таким образом, gRPC технически не является новой концепцией. Скорее, он был заимствован из этой старой техники и улучшен, что сделало ее очень популярной. Что такое gRPC? В 2015 году Google открыл исходный код своего проекта, который в конечном итоге получил название gRPC. Но что на самом деле означает буква «g» в gRPC? Многие люди могут предположить, что это для Google, потому что Google это сделал, но это не так. Google меняет значение «g» для каждой версии до такой степени, что они даже сделали README, чтобы перечислить все значения. С момента появления gRPC он приобрел довольно большую популярность, и многие компании используют его. Есть много причин, по которым gRPC так популярен: простая абстракция, он поддерживается во многих языках и он очень эффективный. И помимо всех вышеперечисленных причин, gRPC популярен потому, что очень популярны микросервисы и имеется большое количество взаимодействий между ними. Именно здесь gRPC помогает больше всего, предоставляя поддержку и возможности для решения типичных проблем, возникающих в таких ситуациях. А поскольку разные сервисы могут быть написаны на разных языках, gRPC поставляется с несколькими библиотеками для их поддержки. Архитектура gRPC Мы сказали что производительность gRPC очень высока, но что делает ее такой хорошей? Что делает gRPC намного лучше, чем RPC, если их дизайн очень похож? Вот несколько ключевых отличий, которые делают gRPC столь эффективным. HTTP/2 HTTP был с нами очень долго. Сейчас почти все серверные службы используют этот протокол. HTTP/1.1 долгое время оставался актуальным, затем в 2015 году, появился HTTP/2, который фактически заменил HTTP/1.1 как самый популярный транспортный протокол в Интернете. Если вы помните, что 2015 год был также годом выхода gRPC, и это было вовсе не совпадение. HTTP/2 также был создан Google для использования gRPC в его архитектуре. HTTP/2 — одна из важных причин, почему gRPC может работать так хорошо. И в следующем разделе вы поймете, почему. Мультиплексирование запроса/ответа В традиционном протоколе HTTP невозможно отправить несколько запросов или получить несколько ответов вместе в одном соединении. Для каждого из них необходимо создать новое соединение. Такой вид мультиплексирования запроса/ответа стал возможен в HTTP/2 благодаря введению нового уровня HTTP/2, называемого binary framing. Этот двоичный уровень инкапсулирует и кодирует данные. На этом уровне HTTP-запрос/ответ разбивается на кадры (они же фреймы). Фрейм заголовков (HEADERS frame) содержит типичную информацию заголовков HTTP, а фрейм данных (DATA frame) содержит полезные данные. Используя этот механизм, можно получить данные из нескольких запросов в одном соединении. Это позволяет получать полезные данные из нескольких запросов с одним и тем же заголовком, тем самым идентифицируя их как один запрос. Сжатие заголовка Вы могли столкнуться со многими случаями, когда заголовки HTTP даже больше, чем полезная нагрузка. И HTTP/2 имеет очень интересную стратегию под названием HPack для решения этой проблемы. Во-первых, все в HTTP/2 кодируется перед отправкой, включая заголовки. Это помогает повысить производительность, но это не самое важное в сжатии заголовков. HTTP/2 сопоставляет заголовок как на стороне клиента, так и на стороне сервера. Из этого HTTP/2 может узнать, содержит ли заголовок одно и то же значение, и отправляет значение заголовка только в том случае, если оно отличается от предыдущего заголовка. Как видно на картинке выше, запрос № 2 отправит только новый путь, так как другие значения точно такие же как и были. И да, это значительно сокращает размер полезной нагрузки и, в свою очередь, еще больше повышает производительность HTTP/2. Что такое Protocol Buffer (Protobuf)? Protobuf — это наиболее часто используемый IDL для gRPC. Здесь вы храните свои данные и функциональные контракты в виде так называемого прото-файла. По сути это протокол сериализации данных, такой как JSON или XML. Выглядит это так: message Person { required string name = 1; required int32 id = 2; optional string email = 3; } Так мы определили сообщение Person с полями name, id и email Поскольку это форма контракта то и клиент, и сервер должны иметь один и тот же прото-файл. Файл proto действует как промежуточный контракт для клиента, чтобы вызвать любые доступные функции с сервера. Protobuf также имеет собственные механизмы, в отличие от обычного REST API, который просто отправляет строки JSON в виде байтов. Эти механизмы позволяют значительно уменьшить полезную нагрузку и повысить производительность. Что еще может предложить gRPC? Метаданные Вместо обычного заголовка HTTP-запроса в gRPC есть то, что называется метаданными (Metadata). Метаданные — это тип данных «ключ-значение», которые можно установить как на стороне клиента, так и на стороне сервера. Заголовок может быть назначен со стороны клиента, в то время как серверы могут назначать заголовок и трейлеры, если они оба представлены в виде метаданных. Потоковая передача Потоковая передача (Streaming) — это одна из основных концепций gRPC, когда в одном запросе может выполняться несколько действий. Это стало возможным благодаря упомянутой ранее возможности мультиплексирования HTTP/2. Существует несколько видов потоковой передачи: Server Streaming RPC: когда клиент отправляет один запрос, а сервер может отправить несколько ответов. Например, когда клиент отправляет запрос на домашнюю страницу со списком из нескольких элементов, сервер может отправлять ответы по отдельности, позволяя клиенту использовать отложенную загрузку. Client Streaming RPC: когда клиент отправляет несколько запросов, а сервер отправляет обратно только один ответ. Например, zip/chunk, загруженный клиентом. Bidirectional Streaming RPC: клиент и сервер одновременно отправляют сообщения друг другу, не дожидаясь ответа. Перехватчики gRPC поддерживает использование перехватчиков для своего запроса/ответа. Они перехватывают сообщения и позволяют вам изменять их. Это звучит знакомо? Если вы работали с HTTP-процессами в REST API, перехватчики очень похожи на middleware (оно же промежуточное ПО). Библиотеки gRPC обычно поддерживают перехватчики и обеспечивают простую реализацию. Перехватчики обычно используются для: Изменения запроса/ответа перед передачей. Это можно использовать для предоставления обязательной информации перед отправкой на клиент/сервер. Позволяет вам манипулировать каждым вызовом функции, например, добавлять дополнительные логи для отслеживания времени отклика. Балансировки нагрузки Если вы еще не знакомы с балансировкой нагрузки, это механизм, который позволяет распределять клиентские запросы по нескольким серверам. Но балансировка нагрузки обычно делается на уровне прокси (например, nginx). Так причем это здесь? Дело в том, что gRPC поддерживает метод балансировки нагрузки клиентом. Он уже реализован в библиотеке Golang и может быть легко использован. Хотя это может показаться какой-то магией, это не так. Там есть что-то типа преобразователя DNS для получения списка IP-адресов и алгоритм балансировки нагрузки под капотом. Отмена вызова Клиенты gRPC могут отменить вызов gRPC, когда им больше не нужен ответ. Однако откат на стороне сервера невозможен. Эта функция особенно полезна для потоковой передачи на стороне сервера, когда может поступать несколько запросов к серверу. Библиотека gRPC оснащена шаблоном метода наблюдателя, чтобы узнать, отменен ли запрос, и позволить ей отменить несколько соответствующих запросов одновременно.
img
Windows File Recovery - это официальный инструмент для восстановления удаленных файлов с жестких дисков, SD-карт, USB-накопителей и других носителей. Это подробное пошаговое руководство по использованию этой утилиты командной строки. Про Windows File Recovery Средство восстановления файлов Microsoft Windows не имеет графического интерфейса - это всего лишь утилита командной строки. Мы покажем вам, как его использовать, но это более сложный процесс, чем вы могли бы ожидать от официальной утилиты Microsoft, доступной в Магазине Windows 10. Для этого инструмента требуется установленное майское обновление 2020 года для Windows 10 или более новая версия Windows 10. Он не работает в старых версиях Windows. Может ли инструмент Microsoft действительно найти и восстановить удаленный файл, зависит от диска? Удаленные файлы не удаляются сразу с жестких дисков, но часто они сразу удаляются с твердотельных дисков. Если вы удалили много данных на устройстве, таком как SD-карта, то после удаления файла, вероятно, данные файла могли быть перезаписаны. Даже если вам удастся восстановить файл, вы можете получить только некоторые данные файла - файл может быть поврежден. Вы можете получить только те данные, которые еще находятся на диске. Здесь нет никаких гарантий, и поэтому резервные копии так важны. Утилита также имеет несколько режимов, предназначенных для разных ситуаций и файловых систем. Мы как их использовать. Как установить Windows File Recovery Для начала установите Windows File Recovery из Магазина Microsoft, чтобы начать. Вы можете открыть Магазин и выполнить поиск «Windows File Recovery» или просто щелкнуть эту ссылку, чтобы открыть Магазин. После установки откройте меню «Пуск» и выполните поиск и запустите ярлык Windows File Recovery один раз и нажмите «Да» для запроса UAC. Вы увидите окно командной строки с доступом администратора. Здесь вы будете запускать команды восстановления файлов. Вы можете использовать другие среды командной строки, такие как Windows Terminal и PowerShell, но не забудьте запустить их с правами администратора. (В меню «Пуск» щелкните правой кнопкой мыши тот файл, который хотите использовать, и выберите «Запуск от имени администратора».) Как восстановить удаленные файлы в Windows 10 Чтобы использовать этот инструмент, вы запустите команду winfr, указав диск, на котором вы хотите найти удаленный файл, место назначения, куда вы хотите сохранить его, и различные ключи, которые управляют тем, что инструмент ищет и как он ищет. Вы должны сохранить удаленный файл на другой диск. Вот формат команды: winfr source-drive: destination-drive: /switches После выполнения команды инструмент автоматически создаст каталог с именем Recovery_ [дата и время] на указанном целевом диске. Какой режим использовать? Прежде чем продолжить, вы должны определить режим, в котором вы хотите выполнить поиск удаленного файла. Существует три режима: Default, Segment и Signature. Default это самый быстрый режим, Segment похож на него, но медленнее и тщательнее. Режим Signature может искать файлы по типу - он поддерживает файлы ASF, JPEG, MP3, MPEG, PDF, PNG и ZIP. (При поиске файлов «ZIP» также будут найдены документы Office, хранящиеся в таких форматах, как DOCX, XLSX и PPTX.) Вам нужно знать, в какой файловой системе отсканирован диск, который вы будете сканировать. Чтобы найти это, откройте проводник, щелкните правой кнопкой мыши диск в разделе «Этот компьютер» и выберите «Свойства». Вы увидите файловую систему, отображаемую на вкладке «Общие». Вот когда вы должны использовать разные режимы: Вы пытаетесь найти файл, который вы недавно удалили, на диске, отформатированном в NTFS, которая является файловой системой Windows 10 по умолчанию? Используйте режим Default. Если вы сканируете диск NTFS в другой ситуации - например, если вы удалили файл некоторое время назад, отформатировали диск или имеете дело с поврежденным диском - сначала попробуйте режим Segment, а затем - режим Signature. Вы пытаетесь найти файл, сохраненный на диске FAT, exFAT или ReFS? Используйте режим Signature. Режимы Default и Segment работают только в файловых системах NTFS. Если у вас есть сомнения, просто начните с режима Default. Затем вы можете попробовать Segment, а затем Signature, если режим по умолчанию не работает. Как восстановить файл в режиме Default Чтобы использовать режим Default, нужно написать /n, а затем путь поиска: Для поиска файла с именем document.docx вы должны использовать /n document.docx. Вы также можете указать полный путь к файлу, например /n UsersAlexDocuments document.docx Чтобы найти все файлы, которые были в папке «Документы», если ваше имя пользователя - Alex, вы должны использовать /n UsersAlexDocuments. Для поиска с wildcard используйте звездочку *. Например, /n UsersAlexDocuments*.docx найдет все файлы DOCX, которые были в папке «Документы». Давайте соединим все это сейчас в примере. Чтобы найти все файлы DOCX на диске C: и скопировать их на диск D:, вы должны выполнить следующую команду: winfr C: D: /n *.docx Вам нужно будет набрать y, чтобы продолжить. Как мы упоминали выше, вы найдете восстановленные файлы в каталоге с именем Recovery_ [дата и время] на целевом диске, который вы указали в командной строке. Чтобы найти все файлы со определенным словом в названии, используйте wildcard. Итак, чтобы найти все документы со словом «project» в любом месте в их имени, вы должны выполнить: winfr C: D: /n *project* Вы можете указать несколько поисков за раз с помощью нескольких ключей /n. Итак, чтобы найти все файлы Word, Excel и PowerPoint, вы должны выполнить следующее: winfr C: D: /n *.docx /n *.xlsx /n *.pptx Чтобы найти определенный файл с именем important_document.pdf, находящийся в папке UsersAlexDocuments на диске C:, а затем сохранить его на диске D: вы должны использовать: winfr C: D: /n UsersAlexDocumentsimportant_document.pdf Как восстановить файл в режиме Segment Режим Segment работает почти так же, как режим Default. Чтобы использовать режим Segment, который проверяет сегменты записи файла, нужно использовать /r в дополнение к /n. Другими словами, вы можете создавать команды восстановления в режиме Segment так же, как вы строите команды режима Default - просто добавьте /r. Например, чтобы восстановить все удаленные файлы MP3 с вашего диска C: и сохранить их на диске D: вы должны выполнить: winfr C: D: /r /n *.mp3 Поэтому, если поиск в режиме Default не находит того, что вы ищете, добавьте /r и попробуйте снова. Как восстановить файл в режиме Signature Режим Signature работает немного по-другому. Он проверяет типы файлов, поэтому он может найти только удаленные файлы определенных типов файлов. Чтобы использовать режим Signature, вам нужно использовать /x, чтобы указать режим Signature, и /y: чтобы указать список групп типов файлов, которые вы хотите найти. Вот список поддерживаемых типов файлов и групп, в которые они отсортированы, взяты из документации Microsoft: ASF: wma, wmv, asf JPEG: jpg, jpeg, jpe, jif, jfif, jfi MP3: mp3 MPEG: mpeg, mp4, mpg, m4a, m4v, m4b, m4r, mov, 3gp, qt PDF: pdf PNG: png ZIP: zip, docx, xlsx, pptx, odt, ods, odp, odg, odi, odf, odc, odm, ott, otg, otp, ots, otc, oti, otf, oth Обратите внимание, что группа «ZIP» включает ZIP-файлы в дополнение к документам Microsoft Office и OpenDocument. Вы можете открыть этот список в любое время, выполнив следующую команду: winfr /# Допустим, вы хотите найти на диске E: изображения в формате JPEG и сохранить их на диске D:. Вам нужно запустить следующую команду: winfr E: D: /x /y:JPEG Вы можете указать несколько групп файлов, разделяя их запятой. Итак, если вы хотите найти файлы JPEG, PDF и Word, вы должны выполнить: winfr E: D: /x /y:JPEG,PDF,ZIP Больше помощи с winfr Более подробная информация доступна на официальной странице документации Microsoft winfr. На этой странице вы также найдете подробный список всех параметров командной строки winfr. Для того чтобы изучить основы, просто запустите winfr или winfr /?. Есть также дополнительные параметры, которые вы можете увидеть, запустив winfr /!.
img
В этой статье мы расскажем про самые популярные и полезные паттерны архитектуры программного обеспечения. Многоуровневая архитектура (n-уровневая) Многоуровневая архитектура является одной из самых распространенных. Ее идея заключается в том, что компоненты с одинаковыми функциями организованы в горизонтальные слои, или уровни. В результате чего каждый уровень выполняет определенную роль в приложении. В таком варианте архитектуры нет ограничения на количество уровней, которое может иметь приложение. При этом здесь также продвигается концепция разграничения полномочий. Многоуровневая архитектура абстрагирует представление о программном обеспечении как о едином целом; предоставляя достаточно информации для понимания ролей каждого уровня и взаимосвязи между ними. Стандартной реализацией такой модели может быть: Пользовательский интерфейс/уровень представления: отображение и запуск пользовательского интерфейса, отправка запросов серверному приложению. Уровень приложений: содержит уровень представления, уровень приложения, уровень предметной области и уровень хранения и управления данными. Уровень предметной области: этот уровень содержит всю логику предметной области, сущности, события и другие типы объектов, которые содержат логику предметной области. Уровень базы данных: это уровень данных, который используется для сохранения данных, которые будут использоваться сервером приложений. Пример: десктоп приложение, электронная коммерция или веб-приложения и т.д. Клиент-сервер Это наипростейшая архитектура, состоящая из сервера и нескольких клиентов. Она представляет собой распределенную структуру, которая распределяет задачи или рабочую нагрузку между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. При такой архитектуре, когда клиент отправляет запрос данных на сервер, сервер принимает этот запрос и отвечает клиенту, предоставляя требуемые данные. Клиенты своими ресурсами не делятся. Пример: электронная почта, обмен документами, банковские операции и т.д. Event-Bus (событийно-ориентированная архитектура) Это распределенная асинхронная архитектура для создания быстро масштабируемых реактивных приложений. Такая архитектура подходит для стека приложений любого уровня, от маленьких до сложных. Основная идея – асинхронная доставка и обработка событий. Эта модель состоит из четырех основных компонентов: Источник события Получатель события Канал Шина событий Источник публикует сообщение в определенный канал на шине событий. Получатель подписывается на определенный канал и получает сообщения, которые публикуются на канале, на который они подписаны. Пример: электронная коммерция, разработка мобильных приложений, службы уведомлений и т.д. Шаблон брокера Этот шаблон можно использовать для структурирования распределенных систем с несвязанными компонентами, взаимодействующими посредством удаленных вызовов служб. Компонент брокер отвечает за координацию обмена данными между компонентами; таких как переадресация запросов, а также передача результатов и исключений. Серверы публикуют свои возможности (услуги и характеристики) брокеру. Клиенты запрашивает услугу у брокера, и затем брокер перенаправляет клиента к подходящей услуге из своего реестра. Пример: ПО брокера сообщений, Apache ActiveMQ, Apache Kafka, RabbitMQ, JBoss Messaging и т.д. Микросервисный шаблон В данной модели службы взаимодействуют с использованием синхронных протоколов, таких как HTTP/REST, или асинхронных протоколов, таких как AMQP (Advanced Message Queuing Protocol - расширенный протокол организации очереди сообщений). Службы можно разрабатывать и разворачивать независимо, и каждая служба будет иметь собственную базу данных. Согласованность данных между службами поддерживается с помощью шаблона Saga (последовательность локальных транзакций). Пример: может быть реализован в различных вариантах использования, особенно в обширном конвейере данных Одноранговая модель (Peer-to-Peer) Здесь, как и в обычной клиент-серверной архитектуре, несколько клиентов взаимодействуют с центральным сервером. Но модель одноранговой сети (Р2Р) состоит из децентралированной сети одноранговых узлов. В этом шаблоне узлы ведут себя и как клиенты, и как серверы. Одноранговые узлы могут функционировать как клиент, запрашивающий услуги у других одноранговых узлов, и как сервер, предоставляющий услуги другим одноранговым узлам. Сети Р2Р распределяют рабочую нагрузку между одноранговыми узлами, и все они вносят и потребляют ресурсы внутри сети без необходимости использования централизованного сервера. Одноранговый узел может динамически менять свою роль с течением времени Пример: файлообменные сети, мультимедийные протоколы PDTP, P2PTV, биткоин, блокчен и т.д. Blackboard (доска объявлений) Данный паттерн полезен при решении задач, для которых не известны детерминированные стратегии решения. Все компоненты имеют доступ к «доске объявлений». Компоненты могут создавать новые объекты данных, которые в последствие будут добавлены на эту доску. Компоненты ищут определенные типы данных на доске и находят их по образцу, совпадающему с существующим источником знаний. Этот шаблон состоит из трех основных компонентов: Доска объявлений: структурированная глобальная память, которая содержит объекты из пространства решений. Источник знаний: специализированные модули с собственным представлением решения Компонент управления: выбирает, настраивает и выполняет модули Пример: быстрое распознавание, идентификация структуры белка, интерпретация сигналов звуколокатора, программы машинного обучения и т.д.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59