cloud-org / edge-proxy

2022第三届云原生编程挑战赛-赛道2:针对边缘计算场景的ACK@Edge高效的边缘自治方案 队伍: 唔想返工
6 stars 1 forks source link

[test] 响应体部分裁剪 #22

Closed ronething closed 2 years ago

ronething commented 2 years ago

以下针对资源分:

ronething commented 2 years ago

tag: v0.0.68

type AutoGenerated struct {
    Kind       string   `json:"kind"`
    APIVersion string   `json:"apiVersion"`
    Metadata   Metadata `json:"metadata"`
    Items      []Items  `json:"items"`
}
type Metadata struct {
    ResourceVersion string `json:"resourceVersion"`
}
type Labels struct {
    CloudNativeChallenge string `json:"cloud-native-challenge"`
    Type                 string `json:"type"`
}
type NAMING_FAILED struct {
}
type FTest struct {
}
type FData struct {
    NAMING_FAILED NAMING_FAILED `json:"."`
    FTest         FTest         `json:"f:test"`
}
type FCloudNativeChallenge struct {
}
type FType struct {
}
type FLabels struct {
    NAMING_FAILED         NAMING_FAILED         `json:"."`
    FCloudNativeChallenge FCloudNativeChallenge `json:"f:cloud-native-challenge"`
    FType                 FType                 `json:"f:type"`
}
type FMetadata struct {
    FLabels FLabels `json:"f:labels"`
}
type FieldsV1 struct {
    FData     FData     `json:"f:data"`
    FMetadata FMetadata `json:"f:metadata"`
}
type ManagedFields struct {
    Manager    string    `json:"manager"`
    Operation  string    `json:"operation"`
    APIVersion string    `json:"apiVersion"`
    Time       time.Time `json:"time"`
    FieldsType string    `json:"fieldsType"`
    FieldsV1   FieldsV1  `json:"fieldsV1"`
}
type Metadata struct {
    Name              string          `json:"name"`
    Namespace         string          `json:"namespace"`
    UID               string          `json:"uid"`
    ResourceVersion   string          `json:"resourceVersion"`
    CreationTimestamp time.Time       `json:"creationTimestamp"`
    Labels            Labels          `json:"labels"`
    ManagedFields     []ManagedFields `json:"managedFields"`
}
type ConfigMap struct {
    Metadata Metadata `json:"metadata"`
    Data     map[string]string `json:"data"`
}
type ConfigMapList struct {
    Kind       string `json:"kind"`
    APIVersion string `json:"apiVersion"`
    //Metadata   Metadata `json:"metadata"`
    Items []ConfigMap `json:"items"`
}

type Metadata struct {
    Name      string `json:"name"`
    Namespace string `json:"namespace"`
    //UID               string          `json:"uid"`
    //ResourceVersion   string          `json:"resourceVersion"`
    //CreationTimestamp time.Time       `json:"creationTimestamp"`
    Labels map[string]string `json:"labels"` //  其实也可以剔除,如果为了更小的响应体可以试试 labelSelector-cachemgr: v0.0.168 22-test-响应体裁剪 v0.0.169
    //ManagedFields     []ManagedFields `json:"managedFields"`
}

type ConfigMap struct {
    Metadata Metadata `json:"metadata"`
    //Data     map[string]string `json:"data"`
}
ronething commented 2 years ago

score_resourceUsage: 174173.949552

对比之前 5w 左右,多了 12w+ 分,

再看 data.len,

减少了 80w bytes 左右

ronething commented 2 years ago

data 字段加入的分数:tag: v0.0.69 资源分可以超 14w

type ConfigMap struct {
    Metadata Metadata `json:"metadata"`
    Data     map[string]string `json:"data"`
}
ronething-bot commented 2 years ago
ronething-bot commented 2 years ago
ronething-bot commented 2 years ago
func testUnmarshal(data []byte) {
    data = data[4:] // 固定前缀取出来,然后进行响应体的反序列化
    var unknown runtime.Unknown
    err := unknown.Unmarshal(data)
    if err != nil {
        klog.Errorf("unknown unmarshal err: %v", err)
        return
    }
    klog.Infof("unknown: %v, %v", unknown.APIVersion, unknown.Kind)
    var configmaps v1.ConfigMapList
    //var configmaps types.ConfigMapList
    if err = proto.Unmarshal(unknown.Raw, &configmaps); err != nil {
        klog.Errorf("proto unmarshal err: %v", err)
        return
    }

    //klog.Infof("cms is %v", configmaps)
    klog.Infof("cms.len: %v", len(configmaps.Items))
    return
}