1.寫 proto文件,定義接口和服務
2.實現 接口,注冊 handle
3.調用服務:直接用rpc 客戶端調用,或者用 api http web等調用
api http web 等服務可以對客戶端請求做轉發,將請求轉向到 srv
在傳統的應用中,所有的功能都是存在於單一的代碼庫(Monotholic Code Base)中。在表面上看,代碼庫中的代碼可以有幾種聚合方式。可能會按照其類型分割,比如controllers, entity, factories,也有可能按照其功能拆分成幾個包,比如auth, articles等等。但無論如何,整個應用是建立在一個單一代碼庫上的。
微服務是對於上述第二種聚合方式的拓展。我們依舊將應用按照其功能拆分成幾個包,但不同的是,這些功能包現在都是一個可獨立運行的代碼庫。
何為protobuf/gRPC
由於每個微服務對應一個獨立運行的代碼庫,一個很自然的問題就是如何在這些微服務之間通信。gRPC使用protobuf來描述數據格式。使用Protobuf,你可以清晰的定義一個微服務的接口。gRPC支持全新的HTTP 2協議,正好可以使用二進制數據。gRPC甚至可以建立雙向的流數據。HTTP 2是gRPC的基礎
message
由protobuf處理,而service
則是由protobuf的grpc插件處理。這個grpc插件使我們定義的service
能使用message
protoc自動生成的,它將proto文件中的service
轉化成了需要我們在Golang代碼中需要編寫的interface