经过了前面几天的步骤, 已经算是走过一遍本机开发到交付的流程了,
接下来再依照团队推上k8s的流程新增好对应的deployment.yaml,
服务架上共用环境之後就会开始进行画面介接跟规格确认, 异动跟新增的需求也会开始随之而来。
趁着这个空档可以检视一下API接口执行时间: 首先先评估API被呼叫的平均频率大部分会落在哪里, 然後再评估API被呼叫的频率高峰次数会落在哪里, 最後是高峰频率乘上3~5倍来测试, 透过调整呼叫API的频率来观察API执行回应时间是否在可接受的范围内。
这边我会写个简单的可以看出执行时间差异的测试程序:
package main
import (
"context"
"fmt"
"log"
"sync"
"time"
coconut "github.com/evelynocean/coconut/pb"
"github.com/go-redis/redis"
"google.golang.org/grpc"
)
func main() {
// 连线到远端 gRPC 服务器。
conn, err := grpc.Dial("localhost:32100", grpc.WithInsecure())
if err != nil {
log.Fatalf("conn 连线失败:%v", err)
}
defer conn.Close()
coco := coconut.NewCoconutClient(conn)
n := 1000
var sum float64
req := &coconut.PointsRequest{
Level_1: "aaa",
Level_2: "bbb",
Level_3: "ccc",
}
wait := &sync.WaitGroup{}
for i := 0; i < n; i++ {
wait.Add(1)
go func() {
defer func() {
wait.Done()
}()
start := time.Now()
_, _ = coco.UpdatePoints(context.Background(), req)
sum += time.Since(start).Seconds()
}()
}
wait.Wait()
fmt.Println("total count:", n, ", avg execute_time:", (sum / float64(n)))
}
func newRedisConnection() (client *redis.Client, err error) {
client = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
DB: 2,
})
_, err = client.Ping().Result()
return
}
total count: 10 , avg execute_time: 0.04420415439999999
total count: 100 , avg execute_time: 0.14994730453000005
total count: 1000 , avg execute_time: 1.034294797929
看起来随着并发打API的次数拉高, API平均回应时间也跟着拉长了,
可以尝试针对这支API的内容进行调整, 看看是否能缩短执行时间。
今天就先到这里, 明天再来调校程序!
<<: Day8 NiFi - Processor Group
>>: 自动化测试,让你上班拥有一杯咖啡的时间 | Day 9 - 如何上传图片
今天的范例是超级无敌常用,有用到表格就一定会有的 分页(Pagination),从零到有不用三分钟!...
日志纪录是网站的一个非常重要的功能,不论是对外的使用者或是对内的管理,实际运营上一定都会遇到许许多多...
HTML、CSS和JS为什麽形影不离? HTML、CSS和JS各自的作用是什麽? 事实上,HTML、...
前言 这个章节将要来实作 Coarse Parallel Processing Using a Wo...
上一篇完成了基础设置,这次就来建立一个基础卡片。 设定基础卡片样式外观 标题部分因为了整个内容更完...