做乙個處理使用者資訊的微服務
客戶端通過使用者名稱,可以從服務端查詢使用者的基本資訊
grpc1. 編寫proto檔案proto
user.proto 定義客戶端請求、服務端響應的資料格式
user.pb.go 自動生成的,為資料互動提供的函式
server.go 微服務服務端
client.go 微服務客戶端
// 版本號2. 生成.go檔案syntax = "proto3";
// 指定生成 user.pb.go的包名
package proto;
// 定義客戶端請求的資料格式
message userrequest
// 定義服務端相應的額資料格式
message userresponse
// 相當於介面
// service 定義開放呼叫的額服務
service userinfoservice
}
3.編寫服務端
package main4. 編寫客戶端import (
"context"
"fmt"
pb "go-micro/my-micro/grpc/proto"
"google.golang.org/grpc"
"net"
)// 定義服務端實現約定的介面
type userinfoservice struct
var u = userinfoservice{}
// 實現服務端需要首先的介面
func (s *userinfoservice) getuserinfo(ctx context.context, req *pb.userrequest) (resp *pb.userresponse, err error) ,
} }err = nil
return
}func main()
fmt.printf("開始監聽:%s\n", addr)
// 2.例項化grpc
s := grpc.newserver()
// 3.在grpc上註冊微服務
// 第二個引數型別需要介面型別的變數
pb.registeruserinfoserviceserver(s,&u)
// 4.啟動grpc服務
s.serve(lis)
}
package mainimport (
"context"
"fmt"
pb "go-micro/my-micro/grpc/proto"
"google.golang.org/grpc"
)func main()
defer conn.close()
// 2. 例項化grpc客戶端
client := pb.newuserinfoserviceclient(conn)
// 3. 組裝引數
req := new(pb.userrequest)
req.name = "zhangsan"
// 4. 呼叫介面
resp, err := client.getuserinfo(context.background(), req)
if err != nil
fmt.printf("響應結果: %v\n", resp)
架構之路 理解微服務
如何理解微服務,解決什麼問題,有什麼好處。理解 單一職責原則,把相同原因而變化的東西聚合到一起,把不同原因而變化的東西分離開來 就比如,社會崗位分工一樣,每個人因崗位的不同,處理的內容不同,所以可以把每個崗位看做是單一職責原則。服務之間均通過網路呼叫進行通訊,從而加強服務之間的隔離性,避免緊耦合。通...
微服務架構成功之路
近年來,在軟體開發領域關於微服務的討論呈現出火爆的局面,有人傾向於在系統設計與開發中採用微服務方式實現軟體系統的松耦合 跨部門開發 同時,反對之聲也很強烈,持反對觀點的人表示微服務增加了系統維護 部署的難度,導致一些功能模組或 無法復用,同時微服務允許使用不同的語言和框架來開發各個系統模組,這又會增...
微服務架構成功之路
近年來,在軟體開發領域關於微服務的討論呈現出火爆的局面,有人傾向於在系統設計與開發中採用微服務方式實現軟體系統的松耦合 跨部門開發 同時,反對之聲也很強烈,持反對觀點的人表示微服務增加了系統維護 部署的難度,導致一些功能模組或 無法復用,同時微服務允許使用不同的語言和框架來開發各個系統模組,這又會增...