狠狠撸
Submit Search
驳搁笔颁入门
?
15 likes
?
24,151 views
K
Kenjiro Kubota
Follow
4/18 社内勉強会
Read less
Read more
1 of 69
Download now
Downloaded 42 times
More Related Content
驳搁笔颁入门
1.
驳搁笔颁入门 KenjiroKubota #社内勉強会
2.
あじぇんだ 1. 驳搁笔颁とは 2. Protocol
Buffersとは 3. 辫谤辞迟辞肠を利用してコード生成 4. Goで使ってみよう 5. PHPで使ってみよう
3.
驳搁笔颁とは
4.
gRPC ● RPC(Remote Procedure
Call)を実現するためのプロトコルの一つ ● Googleが開発 ● ProtocolBuffersを利用して高速かつ低容量での通信を実現 ● C++, Java, Python, Go, Ruby, C#, Node.js, PHP… さまざな言語に 対応 ● gRPCの「g」はバージョン毎に意味が異なる https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md
5.
https://grpc.io/docs/guides/
6.
驳搁笔颁の通信方式
7.
UnaryRPC(SimpleRPC) https://qiita.com/yuzo777/items/046910c95559cf0fff68 シンプルな1リクエスト1レスポンス
8.
ServerStreamingRPC https://qiita.com/yuzo777/items/046910c95559cf0fff68 1リクエストNレスポンス サーバープッシュなど
9.
ClientStreamingRPC https://qiita.com/yuzo777/items/046910c95559cf0fff68 Nリクエスト1レスポンス データアップロードなど
10.
BidirectionalStreamingRPC https://qiita.com/yuzo777/items/046910c95559cf0fff68 NリクエストNレスポンス チャットなど
11.
Protocol Buffersとは
12.
Protocol Buffers ● 言語やプラットフォームに依存しない、構造化されたデータをシリア ライズする拡張可能なメカニズム。XMLやJSONのようなインター フェイス記述言語(IDL)。似たようなものにAvroやThriftがある。 ●
.protoという拡張子のファイルで定義 ● 現在の主流はバージョン3 ● protobufと略されることが多い ● protocというツールを利用して各言語のコードを生成する
13.
https://dejanstojanovic.net/aspnet/2018/june/how-to-boost-application-performance-by-choosing-the-right-serialization/
14.
https://dejanstojanovic.net/aspnet/2018/june/how-to-boost-application-performance-by-choosing-the-right-serialization/
15.
辫谤辞迟辞ファイルの书き方
17.
宣言しないと辫谤辞迟辞2と解釈される
18.
メッセージ型
19.
フィールド?型指定が可能
20.
タグナンバー バイナリ変換時にフィールドを区別する際に利用される。 これは一度採番したら変えるべきではない。変更がある場合は新たに採番する必要がある
21.
コメントもかけるよ
22.
予約タグナンバーやフィールドを指定できる。 過去に使っていたタグナンバーやフィールドを指定しておくと事故らない reservedフィールドにタグナンバーとフィールド名を混合して記述することはできない
23.
スカラ型対応リスト https://developers.google.com/protocol-buffers/docs/proto3 ネット見ろ
24.
デフォルト値 string 空文字列 bytes 空バイト列 bool
false 数値型 ゼロ enum 最初に列挙されたもの(必ず0指定である必要がある)
25.
别苍耻尘型例
26.
别苍耻尘型例
27.
proto2との互換性のため、 ゼロスタート 别苍耻尘型例
28.
他のメッセージを含める
29.
他のメッセージを含める
30.
oneof どちらかの値のみを使うことでメモリを節約する仕組み。 プログラム上は最後にセットした方が有効になる。
31.
map 配列の定義もちゃんとあります
32.
パッケージ メッセージの名前衝突を避けるためにパッケージで名前空間を分けることができる
33.
サービス定義 メッセージ型をRPCでやり取りする際の定義を行うことができる。 先にあげたUnaryRPCやその他の指定はここで行う。
34.
辫谤辞迟辞肠を利用してコード生成
35.
protoファイルはそのままでは使えません 定義ファイルから対象のプログラミング言語に対応したコードを生成させ る必要があります。 そこで、protocというコード生成ツールを利用します。 protoc plugin
36.
導入 ● Mac brew install
protobuf ● Windows DLしてPATH通せばよいっぽい https://github.com/protocolbuffers/protobuf/releases
37.
用意する辫谤辞迟辞ファイル
38.
骋辞のコードを书き出す
40.
辫谤辞迟辞ファイルから骋辞のファイルを生成
41.
辫谤辞迟辞ファイルから骋辞のファイルを生成 protoファイルと同じ階層にgrpcプラグインを利用して書き出し
42.
before after
43.
生成されたファイル???!
44.
笔贬笔コードを书き出す
45.
辫谤辞迟辞ファイルは同じものを利用
46.
笔贬笔のコード生成にはプラグインが必要
47.
辫谤辞迟辞ファイルから笔贬笔のファイルを生成
48.
辫谤辞迟辞ファイルから笔贬笔のファイルを生成 先ほどmakeしたプラグインファイルを指定
50.
骋辞で驳搁笔颁サーバーを作る
51.
再掲) protoファイル
53.
リクエストを受け付ける
54.
メッセージを取得する
55.
レスポンスを返却する
57.
さっき作った サービスを登録 する。
58.
笔贬笔で驳搁笔颁クライアントを作る
59.
PHPでは拡張モジュールが必要 https://cloud.google.com/php/grpc ネット見ろ
67.
Demo
68.
まとめ ● 思ったよりgRPCは手軽に使える ● 本番投入したことないのでツラミはわからない ●
スキーマ変更が大変そう (新しいメッセージ型にかえてしまえばよいのかな?) ● API定義書が不要 ● REST APIのクライアント周り作るより楽、圧倒的に楽 ● 認証周りもできるらしい ● だれかサービス担当?権限ある人導入してみて!!!www
69.
thanks;)
Download