Grpc install on windows

gRPC — now with easy installation

Today we are happy to provide an update that significantly simplifies the getting started experience for gRPC.

For most languages, the gRPC runtime can now be installed in a single step via native package managers such as npm for Node.js, gem for Ruby and pip for Python. Even though our Node, Ruby and Python runtimes are wrapped on gRPC’s C core, users now don’t need to explicitly pre-install the C core library as a package in most Linux distributions. We autofetch it for you :-).

For Java, we have simplified the steps needed to add gRPC support to your build tools by providing plugins for Maven and Gradle. These let you easily depend on the core runtime to deploy or ship generated libraries into production environments.

You can also use our Dockerfiles to use these updated packages — deploying microservices built on gRPC should now be a very simple experience.

The installation story is not yet complete: we are now focused on improving your development experience by packaging our protocol buffer plugins in the same way as the gRPC runtime. This will simplify code generation and setting up your development environment.

Want to try it?

Here’s how to install the gRPC runtime today in all our supported languages:

Language Platform Command
Node.js Linux, Mac, Windows npm install grpc
Python Linux, Mac, Windows pip install grpcio
Ruby Linux, Mac, Windows gem install grpc
PHP Linux, Mac, Windows pecl install grpc-beta
Go Linux, Mac, Windows go get google.golang.org/grpc
Objective-C Mac Runtime source fetched automatically from GitHub by CocoaPods
C# Windows Install gRPC NuGet package from your IDE (Visual Studio, Monodevelop, Xamarin Studio)
Java Linux, Mac, Windows Use our Maven and Gradle plugins that provide gRPC with statically linked boringssl
C++ Linux, Mac, Windows Currently requires manual build and install

You can find out more about installation in our quick start pages and GitHub repositories. Do send us your feedback on our mailing list or file issues on our issue tracker if you run into any problems.

gRPC gRPC

До сих пор в этой книге мы сосредоточены на связи на основе RESTful . So far in this book, we’ve focused on REST-based communication. Мы увидели, что остальное является гибким архитектурным стилем, который определяет операции на основе CRUD на ресурсах сущностей. We’ve seen that REST is a flexible architectural style that defines CRUD-based operations against entity resources. Клиенты взаимодействуют с ресурсами по протоколу HTTP с помощью модели связи «запрос-ответ». Clients interact with resources across HTTP with a request/response communication model. Несмотря на широкое внедрение технологии RESTFUL, более новая технология связи, gRPC, получила огромный опыт работы сообщества в облаке. While REST is widely implemented, a newer communication technology, gRPC, has gained tremendous momentum across the cloud-native community.

Что такое gRPC? What is gRPC?

gRPC — это современная высокопроизводительная платформа, которая используется для развития устаревшего протокола удаленного вызова процедур (RPC) . gRPC is a modern, high-performance framework that evolves the age-old remote procedure call (RPC) protocol. На уровне приложения gRPC упрощает обмен сообщениями между клиентами и серверными службами. At the application level, gRPC streamlines messaging between clients and back-end services. Исходя из Google, gRPC является открытым исходным кодом и частью экосистемы облачных вычислений (кнкф) облачных собственных предложений. Originating from Google, gRPC is open source and part of the Cloud Native Computing Foundation (CNCF) ecosystem of cloud-native offerings. КНКФ считает gRPC проект инкубация. CNCF considers gRPC an incubating project. Инкубация означает, что конечные пользователи используют технологию в рабочих приложениях, а проект имеет работоспособное количество участников. Incubating means end users are using the technology in production applications, and the project has a healthy number of contributors.

Типичное клиентское приложение gRPC будет предоставлять локальную, внутрипроцессный функцию, которая реализует бизнес-операцию. A typical gRPC client app will expose a local, in-process function that implements a business operation. На самом деле локальная функция вызывает другую функцию на удаленном компьютере. Under the covers, that local function invokes another function on a remote machine. То, что кажется локальным вызовом, по сути становится прозрачным необработанным вызовом к удаленной службе. What appears to be a local call essentially becomes a transparent out-of-process call to a remote service. Механизм RPC абстрагирует сетевую связь «точка-точка», сериализацию и выполнение между компьютерами. The RPC plumbing abstracts the point-to-point networking communication, serialization, and execution between computers.

В собственных облачных приложениях разработчики часто работают на языках программирования, платформах и технологиях. In cloud-native applications, developers often work across programming languages, frameworks, and technologies. Такое взаимодействие усложняет контракты сообщений и коммуникации, необходимых для межплатформенного обмена данными. This interoperability complicates message contracts and the plumbing required for cross-platform communication. gRPC предоставляет «равномерный горизонтальный слой», который абстрагирует эти проблемы. gRPC provides a «uniform horizontal layer» that abstracts these concerns. Разработчики в своей собственной платформе получают код для бизнес-функций, тогда как gRPC обрабатывает коммуникационные коммуникации. Developers code in their native platform focused on business functionality, while gRPC handles communication plumbing.

gRPC предлагает комплексную поддержку для большинства популярных стеков разработки, включая Java, JavaScript, C#, Go, SWIFT и NodeJS. gRPC offers comprehensive support across most popular development stacks, including Java, JavaScript, C#, Go, Swift, and NodeJS.

Преимущества gRPC gRPC Benefits

gRPC использует HTTP/2 для транспортного протокола. gRPC uses HTTP/2 for its transport protocol. Несмотря на то, что совместимость с HTTP 1,1, HTTP/2 включает в себя множество дополнительных возможностей: While compatible with HTTP 1.1, HTTP/2 features many advanced capabilities:

  • Протокол двоичной кадрирования для транспорта данных, в отличие от HTTP 1,1, который основан на тексте. A binary framing protocol for data transport — unlike HTTP 1.1, which is text based.
  • Поддержка мультиплексирования для отправки нескольких параллельных запросов через одно подключение — HTTP 1,1 ограничивает обработку одного сообщения «запрос-ответ» за раз. Multiplexing support for sending multiple parallel requests over the same connection — HTTP 1.1 limits processing to one request/response message at a time.
  • Двунаправленный дуплексный обмен данными для одновременной отправки клиентских запросов и ответов сервера. Bidirectional full-duplex communication for sending both client requests and server responses simultaneously.
  • Встроенная потоковая передача, позволяющая запросам и ответам асинхронного потока больших наборов данных. Built-in streaming enabling requests and responses to asynchronously stream large data sets.
  • Сжатие заголовков, уменьшающее использование сети. Header compression that reduces network usage.

gRPC является упрощенной и очень производительной. gRPC is lightweight and highly performant. Это может быть не более 8X, чем сериализация JSON с сообщениями 60-80% меньше. It can be up to 8x faster than JSON serialization with messages 60-80% smaller. В Microsoft Windows Communication Foundation (WCF) терминах производительность gRPC превышает скорость и эффективность привязок NetTcpс высоким уровнем оптимизации. In Microsoft Windows Communication Foundation (WCF) parlance, gRPC performance exceeds the speed and efficiency of the highly optimized NetTCP bindings. В отличие от NetTCP, которая предпочитает стек Майкрософт, gRPC является кросс-платформенным. Unlike NetTCP, which favors the Microsoft stack, gRPC is cross-platform.

Protocol Buffers Protocol Buffers

gRPC использует технологию с открытым исходным кодом, называемую буферами протоколов. gRPC embraces an open-source technology called Protocol Buffers. Они предоставляют очень эффективный и независимый от платформы формат сериализации для сериализации структурированных сообщений, которые службы отправляют друг другу. They provide a highly efficient and platform-neutral serialization format for serializing structured messages that services send to each other. Используя язык IDL, разработчики определяют контракт службы для каждой микрослужбы. Using a cross-platform Interface Definition Language (IDL), developers define a service contract for each microservice. Контракт, реализованный в виде текстового .proto файла, описывает методы, входные и выходные данные для каждой службы. The contract, implemented as a text-based .proto file, describes the methods, inputs, and outputs for each service. Один и тот же файл контракта можно использовать для клиентов и служб gRPC, созданных на разных платформах разработки. The same contract file can be used for gRPC clients and services built on different development platforms.

Используя файл с таким же параметром, компилятор protobuf protoc создает как клиентский, так и код службы для целевой платформы. Using the proto file, the Protobuf compiler, protoc , generates both client and service code for your target platform. Код включает следующие компоненты: The code includes the following components:

  • Строго типизированные объекты, совместно используемые клиентом и службой, которые представляют операции службы и элементы данных для сообщения. Strongly typed objects, shared by the client and service, that represent the service operations and data elements for a message.
  • Строго типизированный базовый класс с необходимыми сетевыми механизмами, которые может наследовать и расширять служба удаленной gRPC. A strongly typed base class with the required network plumbing that the remote gRPC service can inherit and extend.
  • Клиентская заглушка, которая содержит необходимые коммуникации для вызова удаленной службы gRPC. A client stub that contains the required plumbing to invoke the remote gRPC service.

Во время выполнения каждое сообщение сериализуется как стандартное представление protobuf и обменивается между клиентом и удаленной службой. At runtime, each message is serialized as a standard Protobuf representation and exchanged between the client and remote service. В отличие от JSON или XML, сообщения protobuf сериализуются как скомпилированные двоичные байты. Unlike JSON or XML, Protobuf messages are serialized as compiled binary bytes.

Книга, gRPC для разработчиков WCF, доступная на сайте архитектуры Майкрософт, содержит подробное описание GRPC и буферов протоколов. The book, gRPC for WCF Developers, available from the Microsoft Architecture site, provides in-depth coverage of gRPC and Protocol Buffers.

Поддержка gRPC в .NET gRPC support in .NET

gRPC интегрирован в пакет SDK для .NET Core 3,0 и более поздней версии. gRPC is integrated into .NET Core 3.0 SDK and later. Эти средства поддерживают следующие инструменты: The following tools support it:

  • Visual Studio 2019, версия 16,3 или более поздняя, с установленной рабочей нагрузкой веб-разработки. Visual Studio 2019, version 16.3 or later, with the web development workload installed.
  • Visual Studio Code Visual Studio Code
  • интерфейс командной строки DotNet the dotnet CLI

Пакет SDK включает инструментарий для маршрутизации конечных точек, встроенный IoC и ведение журнала. The SDK includes tooling for endpoint routing, built-in IoC, and logging. Веб-сервер Kestrel с открытым кодом поддерживает подключения HTTP/2. The open-source Kestrel web server supports HTTP/2 connections. На рис. 4-20 показан шаблон Visual Studio 2019, который формирует скелет проекта для службы gRPC. Figure 4-20 shows a Visual Studio 2019 template that scaffolds a skeleton project for a gRPC service. Обратите внимание, что .NET полностью поддерживает Windows, Linux и macOS. Note how .NET fully supports Windows, Linux, and macOS.

Рис. 4-20. Figure 4-20. Поддержка gRPC в Visual Studio 2019 gRPC support in Visual Studio 2019

На рис. 4-21 показана скелетная служба gRPC, созданная на основе встроенного механизма формирования шаблонов, входящего в Visual Studio 2019. Figure 4-21 shows the skeleton gRPC service generated from the built-in scaffolding included in Visual Studio 2019.

Рис. 4-21. Figure 4-21. проект gRPC в Visual Studio 2019 gRPC project in Visual Studio 2019

На предыдущем рисунке обратите внимание на файл описания и код службы. In the previous figure, note the proto description file and service code. Как вы вскоре увидите, Visual Studio создаст дополнительную конфигурацию в классе Startup и базовом файле проекта. As you’ll see shortly, Visual Studio generates additional configuration in both the Startup class and underlying project file.

Использование gRPC gRPC usage

Предпочитать gRPC в следующих сценариях: Favor gRPC for the following scenarios:

  • Синхронное взаимодействие микрослужбы с микрослужбой, где требуется немедленное реагирование для продолжения обработки. Synchronous backend microservice-to-microservice communication where an immediate response is required to continue processing.
  • Polyglot среды, которые должны поддерживать смешанные платформы программирования. Polyglot environments that need to support mixed programming platforms.
  • Низкая задержка и скорость обмена данными с высокой пропускной способностью, когда важна производительность. Low latency and high throughput communication where performance is critical.
  • Связь «точка-точка» в реальном времени может отправлять сообщения в режиме реального времени без опроса и имеет отличную поддержку двунаправленной потоковой передачи. Point-to-point real-time communication — gRPC can push messages in real time without polling and has excellent support for bi-directional streaming.
  • Ограниченные среды сети — двоичные сообщения gRPC всегда меньше, чем эквивалентное текстовое сообщение JSON. Network constrained environments – binary gRPC messages are always smaller than an equivalent text-based JSON message.

На момент написания этой статьи gRPC в основном используется с серверными службами. At the time, of this writing, gRPC is primarily used with backend services. Современные браузеры не могут предоставить уровень управления HTTP/2, необходимый для поддержки клиентского gRPC клиента. Modern browsers can’t provide the level of HTTP/2 control required to support a front-end gRPC client. С другой стороны, существует поддержка gRPC-Web с .NET , которая позволяет gRPC взаимодействие из приложений на основе браузера, созданных с помощью JavaScript или Blazor WebAssembly технологий. That said, there’s support for gRPC-Web with .NET that enables gRPC communication from browser-based apps built with JavaScript or Blazor WebAssembly technologies. gRPC-Web включает приложение ASP.NET Core gRPC для поддержки функций gRPC в приложениях браузера: gRPC-Web enables an ASP.NET Core gRPC app to support gRPC features in browser apps:

  • Строго типизированные, генерируемые кодом клиенты Strongly typed, code-generated clients
  • Compact protobuf сообщения Compact Protobuf messages
  • Потоковая передача сервера Server streaming

Реализация gRPC gRPC implementation

Эталонная архитектура микрослужб, ешоп в контейнерахот Майкрософт, демонстрирует, как реализовать службы gRPC в приложениях .NET. The microservice reference architecture, eShop on Containers, from Microsoft, shows how to implement gRPC services in .NET applications. На рисунке 4-22 представлена серверная архитектура. Figure 4-22 presents the back-end architecture.

Рис. 4-22. Figure 4-22. Серверная архитектура для Ешоп в контейнерах Backend architecture for eShop on Containers

На предыдущем рисунке обратите внимание, как Ешоп использует серверную часть для шаблона интерфейсной части (БФФ), предоставляя несколько шлюзов API. In the previous figure, note how eShop embraces the Backend for Frontends pattern (BFF) by exposing multiple API gateways. Ранее в этой главе мы обсуждали шаблон БФФ. We discussed the BFF pattern earlier in this chapter. Обратите особое внимание на микрослужбу агрегатора (серым), расположенную между шлюзом API Web-Shopping и внутренними службами для покупок. Pay close attention to the Aggregator microservice (in gray) that sits between the Web-Shopping API Gateway and backend Shopping microservices. Агрегатор получает один запрос от клиента, передает его в различные микрослужбы, объединяет результаты и отправляет их обратно запрашивающему клиенту. The Aggregator receives a single request from a client, dispatches it to various microservices, aggregates the results, and sends them back to the requesting client. Таким операциям обычно требуется синхронное взаимодействие, чтобы получить немедленный ответ. Such operations typically require synchronous communication as to produce an immediate response. В Ешоп внутренние вызовы из агрегатора выполняются с помощью gRPC, как показано на рис. 4-23. In eShop, backend calls from the Aggregator are performed using gRPC as shown in Figure 4-23.

Рис. 4-23. Figure 4-23. gRPC в Ешоп в контейнерах gRPC in eShop on Containers

для обмена данными gRPC требуются клиентские и серверные компоненты. gRPC communication requires both client and server components. На предыдущем рисунке обратите внимание на то, как агрегатор покупок реализует клиент gRPC. In the previous figure, note how the Shopping Aggregator implements a gRPC client. Клиент выполняет синхронные вызовы gRPC (красным) в серверные микрослужбы, каждый из которых реализует сервер gRPC. The client makes synchronous gRPC calls (in red) to backend microservices, each of which implement a gRPC server. Как клиент, так и сервер используют преимущества встроенных gRPCных коммуникаций из пакета SDK для .NET. Both the client and server take advantage of the built-in gRPC plumbing from the .NET SDK. Клиентские заглушки предоставляют механизм для вызова удаленных вызовов gRPC. Client-side stubs provide the plumbing to invoke remote gRPC calls. Серверные компоненты предоставляют gRPCные коммуникации, которые могут наследовать и использовать пользовательские классы служб. Server-side components provide gRPC plumbing that custom service classes can inherit and consume.

Микрослужбы, которые предоставляют как API RESTFUL, так и gRPC обмен данными, нуждаются в нескольких конечных точках для управления трафиком. Microservices that expose both a RESTful API and gRPC communication require multiple endpoints to manage traffic. Вы откроете конечную точку, которая прослушивает HTTP-трафик для вызовов RESTFUL, а другой — для вызовов gRPC. You would open an endpoint that listens for HTTP traffic for the RESTful calls and another for gRPC calls. Конечная точка gRPC должна быть настроена для протокола HTTP/2, необходимого для обмена данными gRPC. The gRPC endpoint must be configured for the HTTP/2 protocol that is required for gRPC communication.

Хотя мы стремимся разделять микрослужбы с помощью асинхронных шаблонов связи, некоторым операциям требуются прямые вызовы. While we strive to decouple microservices with asynchronous communication patterns, some operations require direct calls. gRPC должен быть основным выбором для прямого синхронного взаимодействия между микрослужбами. gRPC should be the primary choice for direct synchronous communication between microservices. Его высокопроизводительный протокол связи, основанный на HTTP/2 и буферах протоколов, делает его идеальным выбором. Its high-performance communication protocol, based on HTTP/2 and protocol buffers, make it a perfect choice.

Взгляд на будущее Looking ahead

Взглянув на gRPC, вы продолжите работать с собственными системами в облаке. Looking ahead, gRPC will continue to gain traction for cloud-native systems. Преимущества производительности и простота разработки очень привлекательны. The performance benefits and ease of development are compelling. Однако, скорее всего, в течение длительного времени все будет работать. However, REST will likely be around for a long time. Он предназначен для общедоступных API-интерфейсов и для обеспечения обратной совместимости. It excels for publicly exposed APIs and for backward compatibility reasons.

Читайте также:  Источник обновления системы windows
Оцените статью