إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
باستخدام Dapr Workflow، يمكنك بسهولة تنسيق المراسلة وإدارة الحالة ومنطق معالجة الفشل عبر الخدمات المصغرة المختلفة. يمكن أن يساعدك Dapr Workflow على إنشاء تطبيقات طويلة الأمد ومتسامحة مع الأخطاء وحالة.
في هذا الدليل، تستخدم مثال سير عمل معالجة الطلبات المتوفر ل:
- إنشاء سجل حاويات Azure والمجموعة AKS لهذا النموذج.
- تثبيت ملحق Dapr على نظام مجموعة AKS.
- نشر نموذج التطبيق إلى AKS.
- ابدأ واستعلم عن مثيلات سير العمل باستخدام استدعاءات واجهة برمجة تطبيقات HTTP.
مثال سير العمل هو مشروع ASP.NET Core مع:
-
ملف
Program.csيحتوي على إعداد التطبيق، بما في ذلك تسجيل سير العمل وأنشطة سير العمل. - تعريفات سير العمل الموجودة في
Workflowsالدليل. - تعريفات نشاط سير العمل الموجودة في
Activitiesالدليل.
Prerequisites
- اشتراك في Azure مع دور مالك أو مسؤول
- دور مسؤول التحكم في الوصول المستند إلى دور خدمة Azure Kubernetes
- أحدث إصدار من Azure CLI
- أحدث إصدار من Dapr
- أحدث عامل إرساء
- أحدث خوذة
إعداد البيئة
استنساخ نموذج المشروع
استنساخ مثال تطبيق سير العمل.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
انتقل إلى الدليل الجذر للعينة.
cd dapr-workflows-aks-sample
إنشاء نظام مجموعة Kubernetes
إنشاء مجموعة موارد للاحتفاظ بمجموعة AKS.
az group create --name <your-resource-group> --location eastus
إنشاء نظام مجموعة AKS.
az aks create --resource-group <your-resource-group> --name <your-AKS-cluster> --node-count 2 --generate-ssh-keys
تأكد من kubectl تثبيت وأشار إلى نظام مجموعة AKS الخاص بك. في حال كنت تستخدم Azure Cloud Shell، يكون kubectl مثبتاً بالفعل.
لمزيد من المعلومات، راجع البرنامج التعليمي نشر نظام مجموعة AKS.
نشر التطبيق إلى AKS
تثبيت Dapr على نظام مجموعة AKS
تثبيت ملحق Dapr على نظام مجموعة AKS. قبل أن تبدأ، تأكد أنك:
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group <your-resource-group> --name dapr --extension-type Microsoft.Dapr
بعد بضع دقائق، يظهر المخرج اتصال Dapr بعنقود AKS الخاص بك. بعد ذلك، قم بتهيئة Dapr في مجموعة العناصر.
dapr init -k
تحقق من تثبيت DAPR:
kubectl get pods -A
نشر مكون مخزن حالة الممثل في Redis
انتقل إلى Deploy الدليل في الإصدار المتشعب من النموذج:
cd Deploy
نشر مكون Redis:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml
شغّل التطبيق
بمجرد نشر Redis، انشر التطبيق إلى AKS:
kubectl apply -f deployment.yaml
كشف Dapr sidecar ونموذج التطبيق:
kubectl apply -f service.yaml
export APP_URL=$(kubectl get svc/workflows-sample -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export DAPR_URL=$(kubectl get svc/workflows-sample-dapr -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
تحقق من تصدير الأوامر أعلاه:
echo $APP_URL
echo $DAPR_URL
بدء سير العمل
الآن بعد أن تم نشر التطبيق و Dapr إلى نظام مجموعة AKS، يمكنك الآن بدء تشغيل مثيلات سير العمل والاستعلام عليها. إعادة تخزين العناصر في المخزون باستخدام استدعاء API التالي إلى نموذج التطبيق:
curl -X GET $APP_URL/stock/restock
بدء سير العمل:
curl -i -X POST $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/start \
-H "Content-Type: application/json" \
-H "dapr-app-id: dwf-app" \
-d '{"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}'
يشمل الناتج المتوقع معرف مثيل يتم توليدها تلقائيا:
HTTP/1.1 202 Accepted
Content-Type: application/json
Traceparent: 00-00000000000000000000000000000000-0000000000000000-00
Date: Tue, 23 Apr 2024 15:35:00 GMT
Content-Length: 21
{"instanceID":"<generated-id>"}
تحقق من حالة سير العمل:
curl -i -X GET $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/<instance-id> \
-H "dapr-app-id: dwf-app"
الإخراج المتوقع:
HTTP/1.1 200 OK
Content-Type: application/json
Traceparent: 00-00000000000000000000000000000000-0000000000000000-00
Date: Tue, 23 Apr 2024 15:51:02 GMT
Content-Length: 580
مراقبة سجلات التطبيقات:
kubectl logs -l run=workflows-sample -c workflows-sample --tail=20
الإخراج المتوقع:
{
"instanceID":"1234",
"workflowName":"OrderProcessingWorkflow",
"createdAt":"2024-04-23T15:35:00.156714334Z",
"lastUpdatedAt":"2024-04-23T15:35:00.176459055Z",
"runtimeStatus":"COMPLETED",
"dapr.workflow.input":"{ \"input\" : {\"Name\": \"Paperclips\", \"TotalCost\": 99.95, \"Quantity\": 1}}",
"dapr.workflow.output":"{\"Processed\":true}"
}
لاحظ أنه تم وضع علامة على حالة سير العمل كمكتملة.