日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格...

發布時間:2023/12/4 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  多運行時是一個非常新的概念。在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多運行時)的理念,對基于 Sidecar 模式的各種產品形態進行了實踐總結和理論升華。那到底什么是多運行時呢?首先還是得從分布式應用的四大類基本需求講起。簡單來講任何分布式應用都存在的四大類基本需求:

    1、生命周期:包括部署,健康檢查,水平擴展,配置管理等,目前這些需求的最佳實踐,都陸續在 kubernetes 上有了落地。

    2、網絡:網絡方面的需求 是 service Mesh 的主戰場,比如 istio 可以滿足這里絕大部分需求,除了 pub/sub。

    3、狀態:包括數據的讀寫,狀態其實是非常難以管理的,涉及冪等,緩存,數據流等等。

    4、綁定:主要是指和系統外部資源的交互。

  在傳統軟件時代,是耦合在應用代碼里的,但現如今,有越來越多的分布式能力從應用中剝離,而剝離的方式也在逐漸變化,從最早期,這些能力從業務代碼剝離到依賴庫中,然后有一些特性剝離到平臺層(kubernetes)。而如今會有更多的非業務能力,剝離到 sidecar 中。作者預測:理論上每個微服務可以有多個 runtime: 一個業務運行時,和多個分布式能力運行時,但最理想的情況是,或者最可能出現的情況是:在業務之外的運行時合并為一個,通過高度模塊化、標準化和可配置的方式,給業務提供所有分布式能力。而dapr則在很早之前就完成了對istio的集成,理論上我們可以通過運行兩個sidecar來提供分布式能力,istio關注網絡側,包括不限于服務注冊發現、A/B測、金絲雀部署、流量鏡像,監控鏈路等等。當然dapr這部分有一定重疊,但是沒有istio做的那么細致,這兩者可以互補。而dapr則可以提供istio并不具備的網絡功能比如訂閱/發布、狀態管理包括狀態冪等,一致性,actor等等,也包括綁定,通過綁定和外部系統交互這部分。

目錄:

一、通過Dapr實現一個簡單的基于.net的微服務電商系統

二、通過Dapr實現一個簡單的基于.net的微服務電商系統(二)——通訊框架講解

三、通過Dapr實現一個簡單的基于.net的微服務電商系統(三)——一步一步教你如何擼Dapr

四、通過Dapr實現一個簡單的基于.net的微服務電商系統(四)——一步一步教你如何擼Dapr之訂閱發布

通過Dapr實現一個簡單的基于.net的微服務電商系統(五)——一步一步教你如何擼Dapr之狀態管理

通過Dapr實現一個簡單的基于.net的微服務電商系統(六)——一步一步教你如何擼Dapr之Actor服務

通過Dapr實現一個簡單的基于.net的微服務電商系統(七)——一步一步教你如何擼Dapr之服務限流

通過Dapr實現一個簡單的基于.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤

通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權

通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權-百度版

通過Dapr實現一個簡單的基于.net的微服務電商系統(十)——一步一步教你如何擼Dapr之綁定

通過Dapr實現一個簡單的基于.net的微服務電商系統(十三)——istio+dapr構建多運行時服務網格之生產環境部署

附錄:(如果你覺得對你有用,請給個star)
一、電商Demo地址:https://github.com/sd797994/Oxygen-Dapr.EshopSample

二、通訊框架地址:https://github.com/sd797994/Oxygen-Dapr

  istio是什么呢?簡單來講istio是一個service mesh,和dapr的結構類似,都是通過在應用之上插入sidecar來提供分布式能力,同時通過控制平面來對這些sidecar進行具體的調度和管控,只不過istio更傾向于提供網絡能力,其官網的一句話描述可以概括:“通過領先的服務網格簡化可觀測性,流量管理,安全及策略。”其功能包括以下幾點:

    1、使用 TLS 加密、強身份認證和授權的集群內服務到服務的安全通信

    2、自動負載均衡的 HTTP, gRPC, WebSocket,和 TCP 流量

    3、通過豐富的路由規則、重試、故障轉移和故障注入對流量行為進行細粒度控制

    4、一個可插入的策略層和配置 API,支持訪問控制、速率限制和配額

    5、對集群內的所有流量(包括集群入口和出口)進行自動度量、日志和跟蹤

  說了那么多,我們還是聊聊如何通過dapr+istio對我們的電商demo進行多運行時集成吧。首先是安裝,安裝可以參考istio官方中文文檔,默認安裝profile=demo會幫我們安裝istiod+ingressgateway+egressgateway,istiod就是我們的控制平面核心,不同于dapr將控制平面分散在多個容器的做法,istio經歷過1.5的版本迭代后將所有的功能又合并到了一個容器中。而ingressgateway則是用于替代ingress-controller的,而egress是出口網關,由于istio默認對入口和出口流量都有管控,這里我們不需要限制出口流量,所以設置為ALLOW_ANY。同時這是不需要每次都拉取sidecar鏡像。

istioctl install --set profile=demo --set meshConfig.outboundTrafficPolicy.mode=ALLOW_ANY --set values.global.imagePullPolicy=IfNotPresent

  同樣的我們需要將ingressgateway作為nodeport指向我們的30882,記住這里需要先把之前安裝的ingress-controller的svc的30882修改為其他端口,否則會沖突。

kubectl edit svc istio-ingressgateway -n istio-system -> 文件內容改動如下:...- name: http2 #只需要修改http2即可nodePort: 30882port: 80protocol: TCP...type: NodePort #改成NodePort,下面的部分刪除 status:loadBalancer:ingress:- hostname: localhost

  接著我們看看kubectl get po -n istio-system 確保三個pod都已經running即可,接著我們安裝一些dashboard需要等下通過這些來觀察istio,進入安裝的istio根目錄,找到\samples\addons,執行kubectl apply -f . 即可將Kiali 和其他插件安裝完畢,其中kiali是istio的官方儀表板,安裝完成后可以通過istioctl dashboard kiali 將kiali啟動起來,當然你也可以通過修改kubectl edit svc kiali -n istio-system 設置nodeport來永久暴露kiali面板,這里不贅述。可以看到我們的dapreshop里所有的pod目前狀態都是missing sidecar,說明sidecar尚未注入。

?

?  接著我們來注入istio的sidecar到我們的電商demo。很簡單,只需要執行 kubectl label ns dapreshop istio-injection=enabled 在我們的dapreshop這個namespace打上自動注入的標簽,接著我們kubectl delete po --all -n dapreshop重啟所有pod即可將該空間下的pod都自動注入sidecar。如果你不需要某些pod注入sidecar,則禁用它即可:

? template:?

metadata:labels: app: accountserviceversion: v1annotations:sidecar.istio.io/inject: "false"

  如果一切順利,等待一段時間后,我們可以看到每一個pod都會被正確的注入istio的sidcar,而istio sidecar工作原理和dapr不一樣,它是通過修改ip規則轉發流量的方式強制攔截,流量模型如下:

  接著我們需要編寫入口流量,讓我們的流量通過istio的網關接管,yaml如下:

apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata:name: dapreshop-gatewaynamespace: dapreshop spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- "*" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: apigatewaynamespace: dapreshop spec:hosts:- "api.dapreshop.com"gateways:- dapreshop-gatewayhttp:- route:- destination:port:number: 80host: apigateway --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: mobiledapreshopnamespace: dapreshop spec:hosts:- "m.dapreshop.com"gateways:- dapreshop-gatewayhttp:- match:- uri:prefix: /route:- destination:port:number: 80host: mobilefrontend --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: admindapreshopnamespace: dapreshop spec:hosts:- "admin.dapreshop.com"gateways:- dapreshop-gatewayhttp:- match:- uri:prefix: /route:- destination:port:number: 80host: adminfrontend --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: oauthdapreshopnamespace: dapreshop spec:hosts:- "oauth.dapreshop.com"gateways:- dapreshop-gatewayhttp:- match:- uri:prefix: /route:- destination:port:number: 80host: oauthservice-dapr

  apply以后,我們可以通過kugectl get gw,vs -n dapreshop。可以看到相關資源已經注入成功了,接著就可以訪問我們的http://admin.dapreshop.com:30882/,可以看到頁面被正確打開了,說明流量已經通過istio正確轉發了。接著我們操作一下平臺,然后登錄kiali即可看到正確的鏈路調用情況了

?

?

?  今天的分享就到這里,這只是一個簡單的demo級別的演示,其他的還需要大家多自行摸索,照例歡迎fork+star~

相關文章:

  • Dapr能否引領云原生中間件的未來?

  • 云原生 | 阿里巴巴的Dapr實踐與探索

  • Dapr | 云原生的抽象與實現

  • Dapr 可視化指南

  • Dapr 知多少 | 分布式應用運行時

  • Dapr 正式發布 1.0

  • Dapr 交通流量控制示例

  • Dapr是如何簡化微服務的開發和部署

  • 微軟開源微服務運行時Dapr,賦能云原生應用開發

  • YARP實現Dapr服務調用的反向代理

  • Dapr微服務應用開發系列0:概述

  • Dapr微服務應用開發系列1:環境配置

  • Dapr微服務應用開發系列2:Hello World與SDK初接觸

  • Dapr微服務應用開發系列3:服務調用構件塊

  • Dapr微服務應用開發系列4:狀態管理構件塊

  • Dapr微服務應用開發系列5:發布訂閱構建塊

  • Windows環境下Dapr入門

  • 云原生 | .NET 5 with Dapr 初體驗

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(二)——通訊框架講解

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(三)——一步一步教你如何擼Dapr

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(四)——一步一步教你如何擼Dapr之訂閱發布

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(五)——一步一步教你如何擼Dapr之狀態管理

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(六)——一步一步教你如何擼Dapr之Actor服務

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(七)——一步一步教你如何擼Dapr之服務限流

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(九)——一步一步教你如何擼Dapr之OAuth2授權-百度版

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(十)——一步一步教你如何擼Dapr之綁定

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(十一)——一步一步教你如何擼Dapr之自動擴/縮容

  • 通過Dapr實現一個簡單的基于.net的微服務電商系統(十三)——istio+dapr構建多運行時服務網格之生產環境部署

  • WebAssembly + Dapr = 下一代云原生運行時?

  • dapr 應用開發 | 環境配置

  • 乘風破浪,.Net Core遇見Dapr,為云原生而生的分布式應用運行時

  • Dapr案例之高德 Serverless 平臺建設及實踐

  • 在非容器(集群)環境下運行dapr

  • 構建屬于你自己的dapr服務發現

  • 構建屬于你自己的dapr綁定組件

總結

以上是生活随笔為你收集整理的通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。