サービス間通信とIDL(インタフェース記述言語)連載の2日目のエントリーです。 本当はGraphQLネイティブなデータベースの紹介をしようとしたのですが、紹介しようとしていたものがまだベータでクライアントライブラリが公開されていない(空っぽのリポジトリしかない)みたいな感じで試せなかったので、急遽2022/6/1に公開されたばかりのgRPC関連のライブラリのConnectを紹介することにしました。 Connectの開発元が公開したブログは次のサイトにあります。 Buf | Connect: A better gRPC 公式ドキュメントはこちらです。 Introduction | Connect なお、gRPCについての詳細はこのエントリーでは紹介しません。ちょうど、H.SakiさんがgRPCの詳しい紹介の記事を書いてくれているので、ぜひ、みなさんこちらを参照ください。 作ってわかる! はじ
この本は近年マイクロサービスなどで使用されているGoogle発のRPCフレームワーク「gRPC」の解説本です。 Goで実際にクライアント・サーバーを作り、その通信キャプチャすることでgRPCの内部を支えるしくみをひとつひとつ丁寧に解説しています。 Channel, Metadataなどの基本的な概念から、Interceptor, Load Balancerまで挿絵・スクリーンショット多めでの解説ありです! ■本書の内容 ・gRPCの概要と実装例 ・gRPCの高速かつ安定した通信を支えるしくみの解説 ・over TLS, Interceptor, Load Balancingなど応用的な技術の解説 ■本書の対象読者 ・gRPCとかマイクロサービスというのをやってみたい方 ・安定した通信をうまくやる技術を知りたい方 ・gRPCによるトラブルの調査方法を知りたい方 ・Googleの技術が好きな方
こんにちは。shirou(@r_rudi) と申します。アーキテクトという名の雑用係をしています。 Alpaca Japanでは、2021年8月に「アルパカ証券」という証券サービスをはじめました。 この一連の文章は、アルパカ証券の裏側のシステムやその開発体制などについて述べたものです。なるべく証券分野に限らず説明していく予定ですので、証券サービスを立ち上げようとしている人たちにはもちろん、それ以外の方にも参考にしていただけるような文章を目指したいと思っています。 アルパカ証券とはアルパカ証券の詳細はホームページをご覧ください。また、第一種金融商品取引業者登録完了時のプレスリリースにも、「アルパカ証券」サービスの特徴が記載されています。 全体設計方針まず最初に、アルパカ証券を構成するシステムの全体設計方針について説明します。 マイクロサービス vs モノリシック設計は2018年中頃ぐらいから
Error handlingHow gRPC deals with errors, and gRPC error codes. Standard error modelAs you’ll have seen in our concepts document and examples, when a gRPC call completes successfully the server returns an OK status to the client (depending on the language the OK status may or may not be directly used in your code). But what happens if the call isn’t successful? If an error occurs, gRPC returns one
- 質問ドキュメント(編集可能) : https://bit.ly/3d4U0iU - 質問ドキュメント(閲覧専用) : https://bit.ly/mercarigoOH_readonly - Twitterハッシュタグ : # mercarigo ( https://twitter.com/search?q=%23mercarigo&src=typed_query ) - 過去の Gophers Office Houres : https://bit.ly/30Y5wKT - gRPC and REST with gRPC in practice by kazegusuri https://speakerdeck.com/kazegusuri/grpc-and-rest-with-grpc-in-practice - connpass_Mercari グループ : https:/
gRPCで送受信されるメッセージは、標準ではProtocol Buffersでシリアライゼーションされることになっている。一方、gRPCのwire protocolはそこは柔軟になっていて、実際、多くの実装ではシリアライゼーション形式をカスタマイズ可能だ。 たとえば、ある種のニーズのためにFlatBuffersが必要だとか、HTTP/2をサポートする標準的なツールでの解析のためにJSONのほうが可読性が良いとか、社内のバイナリ表現の一貫性のためMsgPackが必要だとか、宗教的な理由でProtobufを使えないとか、そういうときはスキーマだけprotobufで書いておいて、シリアライズは好きなようにやれば良い。 で、具体的にはそれはどうやったらできるのだろう。これが本稿の話題である。いくつかの言語で実際にJSONでシリアライズするクライアントとサーバーを書いてみたので、その結果を紹介する。
こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 先日は、「gRPC Internal」というタイトルで gRPC の設計と内部実装についてブログを書きました。 こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37 )です。 今日は、WANTEDLY TECH BOOK 6 から「gRPC Internal」という章を抜粋して Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去 この gRPC ですが、Wantedly
この記事は Go5 Advent Calendar 2019 の2日目の記事です。 grpc-goではログやメトリクス取得、権限チェックなど、gRPCサーバの全てのメソッドで共通して行いたい処理を interceptor で行います。 本記事では、interceptor でメソッドごとの処理を記述する方法を紹介します。 gRPC の interceptor とは gRPCが提供している、メソッドの前後に処理を行うための仕組みです。gRPCのRPCには Unary RPCとStream RPCの2種類があり、それぞれに対して interceptor が定義されています。 interceptor の定義は下記のようになっています。どちらも context、request情報、Server情報が共通で、StreamInterceptorにのみ追加で ServerStream が渡されます。 ty
I'd like to test a gRPC service written in Go. The example I'm using is the Hello World server example from the grpc-go repo. The protobuf definition is as follows: syntax = "proto3"; package helloworld; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} } // The request message containing the user's name. message HelloRequ
Channelz is a tool that provides comprehensive runtime info about connections at different levels in gRPC. It is designed to help debug live programs, which may be suffering from network, performance, configuration issues, etc. The gRFC provides a detailed explanation of channelz design and is the canonical reference for all channelz implementations across languages. The purpose of this blog is to
This article is more than one year old. Older articles may contain outdated content. Check that the information in the page has not become incorrect since its publication. Author: William Morgan (Buoyant) Many new gRPC users are surprised to find that Kubernetes's default load balancing often doesn't work out of the box with gRPC. For example, here's what happens when you take a simple gRPC Node.j
以下では grpc-go (v1.12.2) を前提に書きます。 ただ、 grpc/proposal を参照しているので、ほかの言語のライブラリにも当てはまるところがあると思います。 gRPC クライアントの再接続 gRPC クライアントがサーバーと接続を確立したあとにネットワークが切れた場合、gRPC ライブラリ側で再接続を期待すると思います。 しかし、keepalive が適切に機能していない場合、基本的に再接続は行われません。 grpc-go では、デフォルトでアプリケーションレイヤーでの keepalive は無効です。 RPC タイムアウトが短く設定されているかどうかによって次のように動作します。 設定されている場合、再接続しない。以降のリクエストもタイムアウトしたまま。 設定されていない場合、 20 秒ほどで transport is closing エラーが返ってきて、再接続
On behalf of the Cloud Native Computing Foundation, I’m excited to announce the GA release of gRPC-Web, a JavaScript client library that enables web apps to communicate directly with backend gRPC services, without requiring an HTTP server to act as an intermediary. This means that you now easily build truly end-to-end gRPC application architectures by defining your client- and server-side data typ
アドベントカレンダー1番手です。 僕から見た今年のGoogle Cloud PlatformはMachine LearningとFirebaseかなーという印象でした。 データベース周りではSpannerも熱いですね。高くて使えてませんが ちなみに僕の好きなGoogle App Engineの今年ははChannel APIがシャットダウンされたこととGo 1.8が使えるようになりました。 だけど、はやくGo 1.9来て!!!!! 去年はGAEの構成について書きましたが今年はAPIをどうするか?という事を書きます。 gRPCとは gRPCは、Googleが開発したオープンソースのRPCフレームワークです。HTTP/2の上で Protocol Buffersでシリアライズされたデータを高速に送ることができます。 gRPCはProcol BuffersのIDLを使ってサービスとメソッドを定義しま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く