在 SAP BTP Kyma Runtime 上使用 Redis 讀取和存儲數據

https://developers.sap.com/tu...html

This sample provides a Redis deployment and two serverless functions that interact with it.

這個例子提供了一個 Redis 應用部署和兩個使用 Redis 的 serverless 函數。git

The function cache-order will be set to subscribe to an order.created event provided by the Commerce mock application.

Commerce Mock 應用有一個 order.created 事件,cache-order 函數訂閱這個事件。github

Once triggered, the function will perform an API call to the Commerce mock to obtain additional details regarding the order and then cache the information into Redis.

一旦 order.created 事件觸發,cache-order 函數響應該事件,調用一個 Commerce Mock API,讀取建立訂單的更多明細,而後將數據存儲到 Redis 裏。redis

The function get-order, exposed as an API, is used to then retrieve the order details from the Redis cache.

函數 get-order, 以 API 的形式暴露,負責從 Redis cache 裏讀取訂單明細。app

從這個Github倉庫裏下載 sample 代碼。less

進入 Kyma 控制檯,點擊 Create Binding:
ide

In this step, you will bind the Commerce Mock application to the dev namespace. This will allow the APIs and Events of the mock application to be used within the namespace.

這一步會將 Commerce Mock 應用同 dev 命名空間綁定在一塊兒,這使得 Mock 應用的 API 和 Events 可以在 dev 命名空間內被使用。函數

點擊 Create:
微服務

Create the Events service instances - 建立事件服務實例

In this step, you will create service instances of the Events the Commerce Mock application exposes. This will allow the events to be consumed from resources within the namespaces such as functions or microservices.

建立 Commerce Mock 應用暴露的事件的服務實例。這樣,dev 命名空間下的資源,好比 functions 和 microservices 就可以消費這些事件。this

選擇 commerce-mock:

選擇 SAP Commerce Cloud - Events:

點擊 Add 按鈕,建立一個 Service 實例:

建立好的 service 實例:

Step 4: Create API service instances

In this step, you will create a service instance of the Commerce Webservices the Mock application exposes.

Mock Application 暴露的 Commerce Web Service, 能夠基於其建立服務實例。該服務實例可以將 API 暴露給同一命名空間下的其餘資源,好比函數和微服務。

查看兩個成功建立的服務實例:

下一步,部署三個資源到 Kyma 上:

  1. cache-order: This function will subscribe to an event published by the Commerce mock application. Once triggered, it will call back to the Commerce mock application to obtain the totalPriceWithTax and then cache the information into Redis.

該函數訂閱 Commerce Mock Application 暴露的 order.created 事件。該事件發生後,cache-order 函數調用 Commerce mock Application,得到 totalPriceWithTax,而後存儲到 Redis 去。

  1. get-order: This function will be exposed as an API allowing retrieval of data stored within the Redis cache.

Redis cache 裏經過 cache-order 存儲的訂單信息,經過 get-order 暴露給消費者。

  1. redis-deployment: This deployment defines the Redis cache configuration and the associated Kubernetes service which exposes the Redis instance to the two Serverless functions.

這個 deployment 定義了 Redis cache 配置信息,以及關聯的 Kubernetes Service, 後者將 Redis 實例暴露給(1)(2) 兩個 serverless 函數使用。

依次將 k8s 文件夾下的 yaml 文件進行部署:

確保 deployment 狀態所有爲 Running:

Add event subscription to function

In this step, you will configure the function cache-order, deployed in the previous step, to run when the order.created event is fired from the Commerce Mock application.

這一步,將 cache-order 訂閱到 order.created 事件上。

從 functions 列表裏找到 cache-order:

建立一個事件訂閱 Event subscription:

cache-order function 須要調用對應的 API,所以須要爲其建立 service binding.

經過這個 Service Binding,就能夠藉助該 Service Instance,調用 Commerce Webservice了:

對 function 代碼進行微調

找到環境變量裏包含 GATEWAY_URL 的變量:

點擊 commerce-mock 的 host 超連接,手動觸發一個 order.created 事件。

點擊 Remote API:

找到 SAP Commerce Cloud - Events:

點擊按鈕 Send Event,模擬發送一個 order.created 事件,payload 裏包含的 orderCode 爲 76270000:

事件成功發送:

在 cache-order 的 logs 面板裏,果真看到了訂單 code 76270000 對應的處理日誌:

下一步,再試試 get-order 函數,是否可以從 Redis cache 中讀取訂單信息。

點擊這個超連接:https://get-order.c-46d70f2.k...

會收到以下錯誤消息:"error": "No orderCode received!"

這是由於咱們還沒有爲該 serverless function 指定 orderCode.

試試在 url 後手動加上 orderCode:

https://get-order.c-46d70f2.k...

如今就可以正常工做了。

更多Jerry的原創文章,盡在:"汪子熙":

相關文章
相關標籤/搜索