IoTアプリケーション5Gの迅速ビルドの時代にJingdongはサーバレス使用のクラウドサービス

Altキー

2019年10月31日には中国国際展示会で、産業省が発表しました:5Gコマーシャルが正式に発足しました。5Gコマーシャルは年齢の来ます!

5G商用ので、この技術は、アプリケーションシナリオの多くのフィールドを作るのデータ伝送速度、応答速度、データ接続、データ転送量、伝送の信頼性は、大幅に改善されたブレークを持っていることは事実で着地実施形態である、テイク普通の人々の生活に、そしてこれらは、物事が含まれます。

コンセプトは非常にシンプルなものですが、記事は、インテリジェントな物事を達成するために、インターネットと情報通信の交換機に接続されているが、様々な理由から、商用アプリケーションとによるものであったなしの大規模な上陸、用ネットワーク伝送を限定する理由。今日は、5Gはすぐにそう物事はネットワークレベルではもはや限られたアプリケーションであることを、より良いものの発展を促進します。企業にとって、すぐに物事の商用サービスを構築し、主導権を握ることが重要です。

Jingdongはサーバレスのクラウドサービスは、企業のニーズと、今これに適合されています。製品のサーバレス生態範囲は、基礎となるサーバーの展開のための懸念だけでなく、運搬能力、短い実装サイクル、無従量課金プリペイド価格ずに、ビジネス指向にユーザーを可能にします。これらの機能は、企業が技術的な問題を解決しながら、コストを節約するために、すぐに、高速なインターネット時代5Gに適応構築するための最良の選択です。

一例として、車とのネットワーク以下のデータは、我々は信頼性の高い非可用性のサービス・アプリケーションを構築するために、サービスキューを使用する方法を見て。クライアントの負荷が大きさの3または4桁、ダイナミックスケーリングサーバレスサービスに適したこれらの自然の特性、体積賃金ダウン24時間/内の車のネットワークアプリケーションに拡張することができます。

ケース・シナリオ:ネットワーク上のデータ収集センサーは、クラウドへのデータ送信、キューサービスを使用してシフト雲のピーク負荷、動的にスケーラブルなデータを受信し、その後、Elasticsearchより良い検索やアプリケーションのデータをダンプする能力を自動車に搭載された車両、などより良いサービスをユーザーに提供するか、会社のためのより多くのビジネス価値を提供します。
需要:キューサービスSDK、キューサービスアクセスポイントアドレス、Elasticsearchアクセスポイントアドレス(ESすでに作成されたインスタンス)、JingdongはクラウドユーザーAK / SKの
コード言語:ゴー

ステップ1

キュークライアントサービスとリソースの作成を作成します。

 func CreateClient() *sqs.SQS {
     ses, _ := session.NewSession(&aws.Config{
         Region: aws.String("cn-north-1"),
         Credentials: credentials.NewStaticCredentials("your AccessKey",
             "your SecretKey", ""),
         Endpoint:   aws.String("http://jqs.cn-north-1.jdcloud.com"),
         DisableSSL: aws.Bool(true),
     })
     _, err := ses.Config.Credentials.Get()
    if err != nil {
        log.Fatal("凭据创建失败", err)
    }
    client := sqs.New(ses)
    return client
}

func CreateQueueTask(name string) string {
    resp, err := sqsClient.CreateQueue(&sqs.CreateQueueInput{
        QueueName: aws.String(name),
    })
    if err != nil {
        log.Println("Create Queue Failed:", err)
        return ""
    }
    return *resp.QueueUrl
}

ステップ2

各車載機は、メッセージを送信します。

 func SendTask(url string, message interface{}) {
    body, _ := json.Marshal(message)
     _, err := sqsClient.SendMessage(&sqs.SendMessageInput{
         MessageBody: aws.String(string(body)),
         QueueUrl:    aws.String(url),
     })
     if err != nil {
         log.Println("Send Message Failed:", err)
         return
    }
    return
}

テストデータ

Altキー

試験機の構成:CPU64、メモリ256G、100Mbpsの帯域幅(Jingdongのホストので)

シーン:パブリックネットワーク、センドシングル(JQSの)

ステップ3

サービス・ダンプElasticsearchでキューからプルメッセージ

func ReceiveMessageTask(url string) interface{} {
     result, err := sqsClient.ReceiveMessage(&sqs.ReceiveMessageInput{
         AttributeNames:        aws.StringSlice([]string{"All"}),
         MaxNumberOfMessages:   aws.Int64(1),
         MessageAttributeNames: aws.StringSlice([]string{"All"}),
         QueueUrl:              aws.String(url),
         VisibilityTimeout:     aws.Int64(30),
         WaitTimeSeconds:       aws.Int64(0),
     })
    log.Println(*result.Messages[0].Body)
    if err != nil {
        log.Println("Receive Message Failed:", err)
        return ""
    }

    if len(result.Messages) > 0 {
        _, delErr := sqsClient.DeleteMessage(&sqs.DeleteMessageInput{
            QueueUrl:      aws.String(url),
            ReceiptHandle: result.Messages[0].ReceiptHandle,
        })
        if err != nil {
            log.Println("Delete Message Failed:", delErr)
        }

        message := new(gpsMessage)
        Err := json.Unmarshal([]byte(*result.Messages[0].Body), message)
        if Err != nil {
            log.Println("Receive Message Unmarshal Failed", Err)
            return ""
        }
        return message
    }
    return ""
}

func Build(url string, method string, body interface{}) []byte {
    client := &http.Client{}
    //向服务端发送get请求
    bodyData, _ := json.Marshal(body)
    request, _ := http.NewRequest(method, url, bytes.NewReader(bodyData))

    request.Header.Set("Accept", "application/json")
    request.Header.Set("Content-Type", "application/json")
    //接收服务端返回给客户端的信息
    response, _ := client.Do(request)
    r, _ := ioutil.ReadAll(response.Body)
    return r
}

func PostMessageToES(p string, body interface{}) string {
    postReturn := new(postRes)
    postResponse := Build(p, "POST", body)
    err := json.Unmarshal(postResponse, postReturn)
    if err != nil {
        log.Println("Unmarshal Failed", err)
    }
    jsonS, _ := json.Marshal(postReturn)
    log.Println("postResult:", string(jsonS))
    return postReturn.Id
}

ステップ4

インデックスでElasticsearch検索からの需要情報

func GetMessageFromES(p string) {
     message := new(esMessage)
     getResponse := Build(p, "GET", nil)
     log.Println("getPath:", p)
     Err := json.Unmarshal(getResponse, message)
     if Err != nil {
         log.Println("Unmarshal Failed", Err)
     }
     jsonM, _ := json.Marshal(message)
    log.Println("getResult:", string(jsonM))
}

例の結果

Altキー

データを取得するために、車のダイナミックなマップをマップするために、達成するために、ヘルプ自動操縦、ダイナミックナビゲーション、車両健康分析および他のシナリオにデータを使用した車両情報に基づいて行うことができます。

Jingdongはキュークラウドバースサービスのサーバレス開発などのサービス、運用・保守、ユーザーが解決するための事業を開始するクラウドパートナーJingdongはゼロコストと有料の使用モデルをサポートするためのミドルウェアサービスの非ミリ秒スケーリング機能を達成するために複雑な問題や資源スケーリングしきい値の監視。FAASは、より豊かなシーンを満たすために、サービス機能と組み合わせて使用し、オープンクラウドネイティブの21世紀に基づいて新しいアプリケーションを作成し、全体のクラウドサーバレスJingdongの生態を呼び出します。「をクリックして学び」、それを体験しに来て!

ようこそ「をクリックしJingdongは雲をよりエキサイティングなコンテンツのために」

Altキー
Altキー

おすすめ

転載: www.cnblogs.com/jdclouddeveloper/p/12195509.html