PCG-第一次作业
软件92 易俊泉
基本题目
请基于//gen目录下的桩代码,基于自己熟悉的程序语言开发对应的服务端程序和客户端程序。
基本要求:
服务端程序提供PutPet、GetPet、DeletePet三个接口,客户端访问这三个服务进行宠物数据的写入、查询和删除操作。
扩展要求:
创建镜像和yaml文件基于minikube部署
完成情况
文件目录
主要文件的目录结构如下:
D:.
│ deploy.yaml
│ gRPC.md
│ README.md
├─client
│ │ Client_Java.md
│ ├─.idea
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ │ PetClient.java
├─deploy-client
│ client-0.0.1-SNAPSHOT.jar
│ Dockerfile
├─go_client_test
│ gotest.go
├─proto
│ │ buf.yaml
│ │
│ ├─google
│ │ └─type
│ │ datetime.proto
│ │
│ └─pet
│ └─v1
│ pet.proto
│
└─server
│ Dockerfile
│ server.go
│ Server_Go.md
server.go
: 服务端用go实现
PetClient.java
: 客户端用java实现
gotest.go
: 客户端测试用go实现
操作指南
快速开始
基于源码方式
环境:
- jdk:11
- golang:go1.19 windows/amd64
运行服务端:进入server\server.go
所在目录,运行go run server.go
,有如下欢迎界面即为成功
2022/10/22 00:23:18 gRPC服务端启动成功:8088!
2022/10/22 00:23:18
██████╗ ██████╗ ██████╗ ██████╗
██╔════╝ ██╔══██╗██╔══██╗██╔════╝
██║ ███╗██████╔╝██████╔╝██║
██║ ██║██╔══██╗██╔═══╝ ██║
╚██████╔╝██║ ██║██║ ╚██████╗
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝
运行服务端:进入client\src\main\java\PetClient.java
所在目录,运行该程序,进入欢迎界面
00:24:19.641 [main] INFO PetClient -
Start your travel to gRPC!
00:24:19.655 [main] INFO PetClient - 192.168.114.1
00:24:19.655 [main] INFO PetClient -
██████╗ ██████╗ ██████╗ ██████╗
██╔════╝ ██╔══██╗██╔══██╗██╔════╝
██║ ███╗██████╔╝██████╔╝██║
██║ ██║██╔══██╗██╔═══╝ ██║
╚██████╔╝██║ ██║██║ ╚██████╗
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝
00:24:20.006 [main] INFO PetClient -
Please choose what you want to do:
Enter 1 : put pet.
Enter 2 : get pet by id.
Enter 3 : delete pet by id.
键盘输入1,进入PUT模式
输入宠物类型
00:25:46.521 [main] INFO PetClient -
Please input the PetType(a number):
0: UNSPECIFIED
1: CAT
2: DOG
3: SNAKE
4: HAMSTER
-1: UNRECOGNIZED
1
输入名字
00:28:01.752 [main] INFO PetClient -
Please input the name(e.g petty):
tom
得到结果,保存id,便于接下来测试使用
00:28:25.459 [main] INFO PetClient -
The pet is successfully put:
pet_type: PET_TYPE_CAT
pet_id: "630b9024-515d-11ed-91de-5405db4d0f35"
name: "tom"
created_at {
year: 2022
month: 10
day: 22
minutes: 28
seconds: 25
nanos: 397625100
}
选择不退出
00:28:25.460 [main] INFO PetClient -
Do you want to exit ? : y/n
n
进入GET模式
00:29:03.039 [main] INFO PetClient -
Please choose what you want to do:
Enter 1 : put pet.
Enter 2 : get pet by id.
Enter 3 : delete pet by id.
2
输入id630b9024-515d-11ed-91de-5405db4d0f35
,获得宠物信息
00:30:49.676 [main] INFO PetClient -
The pet is successfully gotten:
pet_type: PET_TYPE_CAT
pet_id: "630b9024-515d-11ed-91de-5405db4d0f35"
name: "tom"
created_at {
year: 2022
month: 10
day: 22
minutes: 28
seconds: 25
nanos: 397625100
}
选择不退出
进入DELETE模式
00:29:03.039 [main] INFO PetClient -
Please choose what you want to do:
Enter 1 : put pet.
Enter 2 : get pet by id.
Enter 3 : delete pet by id.
3
输入id630b9024-515d-11ed-91de-5405db4d0f35
,删除宠物
退出系统
00:32:59.593 [main] INFO PetClient -
Do you want to exit ? : y/n
y
基于镜像方式
由于本人对k8s掌握不是很熟练,所以仅仅将两个容器放在一个pod中,便于端口访问
服务端也没有进行交互,仅仅测试一下gRPC的正常使用与部署正确
启动Docker
启动minikube
minikube start
进入主目录,运行deploy.yaml配置文件
kubectl apply -f deploy.yaml
# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: grpc-deployment #要创建的 deployment 的名字
spec:
selector: #deployment资源和pod资源关联的方式
matchLabels:
app: grpc
template:
metadata:
labels:
app: grpc
spec:
containers:
- image: yijunquan/grpc-client:v1.0.0
name: grpc-client-container #容器名称
ports:
- name: http
protocol: TCP
containerPort: 19090
- image: yijunquan/grpc-server:v1.0.0
name: grpc-server-container #容器名称
ports:
- name: grpc
protocol: TCP
containerPort: 8088
查看pods
kubectl get pods kubectl get pods
NAME READY STATUS RESTARTS AGE
grpc-deployment-58b6988fff-c7rwx 1/2 NotReady 1 (6s ago) 9s
根据pod名字查看运行结果
kubectl logs grpc-deployment-58b6988fff-c7rwx
欢迎界面
00:07:05.871 [main] INFO PetClient -
Start gRPC client !
00:07:05.872 [main] INFO PetClient -
██████╗ ██████╗ ██████╗ ██████╗
██╔════╝ ██╔══██╗██╔══██╗██╔════╝
██║ ███╗██████╔╝██████╔╝██║
██║ ██║██╔══██╗██╔═══╝ ██║
╚██████╔╝██║ ██║██║ ╚██████╗
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝
测试PUT功能
00:07:06.173 [main] INFO PetClient -
Test pet PUT function
00:07:06.173 [main] INFO PetClient -
Put the first pet .......
00:07:06.173 [main] INFO PetClient -
PetType: cat
00:07:06.173 [main] INFO PetClient -
PetName: Tom
00:07:06.174 [main] INFO PetClient -
Start to put by using gRPC ......
00:07:06.469 [main] INFO PetClient -
The pet is successfully put:
68bba956-515a-11ed-b274-0242ac110002
测试GET功能
00:07:06.473 [main] INFO PetClient -
Test pet GET function
00:07:06.474 [main] INFO PetClient -
Get pet by id 68c099f0-515a-11ed-b274-0242ac110002
00:07:06.588 [main] INFO PetClient -
The pet is successfully gotten:
pet_type: PET_TYPE_DOG
pet_id: "68c099f0-515a-11ed-b274-0242ac110002"
name: "wang"
created_at {
year: 2022
month: 10
day: 21
hours: 16
minutes: 7
seconds: 6
nanos: 471270500
}
测试DELETE功能
00:07:06.588 [main] INFO PetClient -
Test pet DELETE function
00:07:06.588 [main] INFO PetClient -
Get pet by id 68bba956-515a-11ed-b274-0242ac110002
00:07:06.594 [main] INFO PetClient -
The pet is successfully deleted!
PCG-第一次作业
软件92 易俊泉
基本题目
请基于//gen目录下的桩代码,基于自己熟悉的程序语言开发对应的服务端程序和客户端程序。
基本要求: 服务端程序提供PutPet、GetPet、DeletePet三个接口,客户端访问这三个服务进行宠物数据的写入、查询和删除操作。
扩展要求: 创建镜像和yaml文件基于minikube部署
完成情况
文件目录
主要文件的目录结构如下:
server.go
: 服务端用go实现PetClient.java
: 客户端用java实现gotest.go
: 客户端测试用go实现操作指南
客户端使用Java,镜像制作请参考:Client_Java.md
服务端使用Go,镜像制作请参考:Server_Go.md
有关gRPC的原理与使用,请参考:gRPC.md
快速开始
基于源码方式
环境:
运行服务端:进入
server\server.go
所在目录,运行go run server.go
,有如下欢迎界面即为成功运行服务端:进入
client\src\main\java\PetClient.java
所在目录,运行该程序,进入欢迎界面键盘输入1,进入PUT模式
输入宠物类型
输入名字
得到结果,保存id,便于接下来测试使用
选择不退出
进入GET模式
输入id
630b9024-515d-11ed-91de-5405db4d0f35
,获得宠物信息选择不退出
进入DELETE模式
输入id
630b9024-515d-11ed-91de-5405db4d0f35
,删除宠物退出系统
基于镜像方式
启动Docker
启动minikube
进入主目录,运行deploy.yaml配置文件
查看pods
根据pod名字查看运行结果
欢迎界面
测试PUT功能
测试GET功能
测试DELETE功能