邊緣服務網格 osm-edge

本文篇幅稍長,閱讀本文將了解以下內容:

?什么是 osm-edge 及其產生背景?邊緣計算與中心云計算的差異,以及帶來的挑戰?osm-edge 的設計及采用的技術?5 分鐘快速體驗邊緣服務網格

關于 osm-edge

osm-edge 是針對邊緣計算環境設計的服務網格,采用?osm[1]?作為控制平面,采用?Pipy[2]?作為數據平面,具有高性能、低資源、簡單、易用、易擴展、廣泛兼容(支持x86/arm64/龍芯/RISC-V)的特點。

基于 osm 的控制平面,osm-edge 充分支持?SMI[3]?規范;通過搭配使用支持 ingress、gateway API、跨集群服務發現的?fsm[4],"osm+fsm" 套件提供了完整的" k8s 集群內+多集群"的"東西+南北"流量管理和服務治理能力。

osm-edge 的開發和測試環境采用k3s[5]、k8e[6]?等流行的邊緣計算 k8s 發行版,目標是 osm-edge 用戶可以快速低成本的在 x86、arm、RISC-V、龍芯等硬件平臺上部署低資源高性能的服務網格,以更好的支撐微服務架構在低能耗的邊緣計算場景運行。

osm-edge 已經在 GitHub 上開源,倉庫地址[7]:https://github.com/flomesh-io/osm-edge,也可訪問?osm-edge 文檔中心[8]了解更多內容:https://osm-edge-docs.flomesh.io。

現邀請感興趣的小伙伴參與內測,參與內測并提交測試結果的小伙伴將獲得由 Flomesh 提供的小禮物。感興趣的小伙伴可以微信聯系 張曉輝(微信 duwasai,郵箱?tyrael@flomesh.io[9])。

產生的背景

在實際工作中,我們遇到多種行業的用戶對服務網格提出了類似的需求。這些行業用戶和場景包括:

?能源和電力公司。他們希望在每個變電站或者加油站建立簡易的機房,部署計算和存儲能力,用于對該地點覆蓋范圍內設備產生的數據的處理。他們希望把傳統數據中心的應用推向這些簡易機房,并充分采用數據中心的應用管理和運維能力?車聯網服務提供商。他們希望在非數據中心的環境建立自己的簡易計算環境用于數據采集以及提供服務給車和車主。這些環境可能是公路近距離的位置,或者停車場,以及車流密集的地方?零售商。他們希望在每個商店建立最簡的計算環境,除了支撐傳統的進存銷、收付款等能力,也希望引入新的數據采集、加工、傳輸能力?醫療機構。他們希望在每個醫院,或者是簡易的醫療點,提供網絡能力,除了面向患者的提供數字化服務能力,也同時完成數據采集,以及和上級管理部門的數據聯動?校園、醫院等園區。這些園區具有人員相對固定且人流密集的特點。他們希望在更多的人群聚集點附近部署計算資源,用于交付數字化服務,以及采集和處理實時的數據

這些都是典型的邊緣計算場景,他們具有相似的需求:

?用戶希望把傳統數據中心的計算模式,尤其是微服務,以及相關的應用交付、管理運維能力帶到邊緣側?在工作環境方面,用戶需要面對電力供應、算力有限、不穩定的網絡等因素。因此需要計算平臺具有更強的魯棒性,在極端的情況下可以快速部署或者完整恢復一個計算環境?通常需要部署的位置(我們稱為 POP=Point of Presence)數量眾多,而且在不斷的發展和擴展。因此需要更加精細的控制計算成本,一個 POP 點的造價、維護價格、擴容價格都成為重要的成本考量因素?普通的、或者低端的 PC 服務器更多的被用于這些場景用于替代云端標準的服務器;基于 ARM 等低功耗技術的算力同時進一步替代低端 PC 服務器。在這些不能媲美云端標準服務器的硬件平臺上,用戶仍然希望擁有足夠的算力以應對功能和數據量的增長。計算向靠近數據產生的位置前移、邊緣側數據量和功能需求的增長、邊緣側計算資源的有限性,這互相矛盾的三者要求邊緣側計算平臺擁有更好的計算能效比,也就是用盡可能少的電、盡可能少的服務器、運行更多的應用、支撐更大的數據量?POP 點的脆弱性和數量龐大的特點,要求應用更好的支持多集群、跨 POP 的故障遷移。比如某個 POP 點出現故障,那么臨近的 POP 點可以快速的分擔甚者臨時接管這些計算任務

相比于云端數據中心的計算場景,邊緣計算三個核心和主要的差異和難點在于:

?邊緣計算要求支持異構的硬件架構。我們看到非 x86 的算力正在邊緣被廣泛的使用,他們通常具有低功耗、低成本的優勢?邊緣計算 POP 點是脆弱的。這種脆弱性體現在他們可能沒有極高可靠度的供電,或者是供電的功率不像數據中心一樣大;他們的運行環境可能更差,而不是數據中心的恒溫通風環境;他們的網絡可能是窄帶和不穩定的?邊緣計算是天然的分布式計算。幾乎所有的邊緣計算場景,都有多個 POP 點,而且 POP 點的數量在持續增加。POP 點之間可以互相災備,發生故障時可以向臨近 POP 點遷移,是邊緣計算的基礎能力

k8s 向邊緣側的演進,在一定程度上解決了邊緣計算的難點,尤其是對抗脆弱性;而服務網格向邊緣側發展,則側重邊緣計算中網絡問題,對抗網絡的脆弱性,以及對分布式提供基礎網絡支持,如故障遷移。在實踐中,容器平臺作為今天事實上準標準的應用交付手段,正在快速的向邊緣側演進,出現了大批針對邊緣特征的發行版,典型的如 k3s;但是服務網格作為容器平臺的重要網絡擴展,并沒有很快的跟上這個趨勢。事實上,目前用戶很難發現針對邊緣計算場景的服務網格,因此我們啟動了 osm-edge 開源項目,幾個重要的考量和目標是:

?支持和兼容 SMI 規范,這樣可以滿足用戶對服務網格管理標準化的需求?對于 ARM 生態的充分支持。ARM 作為邊緣計算的“一等公民”甚至首選計算平臺,服務網格應該也充分適配、滿足這種趨勢。事實上,osm-edge 是遵循 “ARM First” 的策略,也就是所有的功能都是優先在 ARM 平臺完成開發、測試,并具備交付能力?高性能且低資源。服務網格作為基礎設施,在邊緣側應該使用更少的資源(CPU/MEM)同時交付更高的性能(TPS/Latency)

采用的技術

從設計視角,osm-edge 主要包括如下幾個大的功能領域;同時從實現角度,我們選擇了對應的組件和技術:

?兼容 SMI 規范且輕量易用的控制平面。這個環節我們選擇了?osm[10],選擇的理由是包括支持 SMI 規范、輕量化、易用。該組件主要功能包括:1.兼容和支持 SMI 規范2.單一 k8s 集群內的東西流量的配置3.流量攔截和 sidecar 的注入4.證書管理?輕量化、高性能、低資源的 sidecar 代理。這個環節我們選擇了?pipy[11],該組件主要的功能包括:1.支持 SMI 規范所需要的各種網絡功能,如代理、路由、負載均衡、多路復用、故障遷移2.支持微服務所需要的各種功能,如服務發現、流量標簽/灰度發布、熔斷、降級、限流、限速3.支持應用網絡所需要的各種功能,如鏈路加解密、內容加驗簽4.對 MQTT 的良好支持,MQTT 作為邊緣計算的重要協議之一,服務網格在邊緣計算場景下,應該像支持 HTTP 一樣的支持 MQTT5.對多路復用的支持,在某些場景下,POP 點和云端連接的網絡可能是窄帶和不穩定的,多路復用網絡技術可以很好的支持數據的快速、穩定傳輸?南北流量管理和跨集群能力。這個環境我們選擇了集成?fsm[12],該組件可以使用 osm 標準客戶端部署,完成的功能主要包括:1.Ingress/Egress 和 Gateway API 的支持2.跨容器集群的服務發現和路由策略管理3.跨集群流量調度和故障遷移

架構

65b93578511044b37a843123a67f7223.jpeg

從控制平面的視角,對于熟悉 osm 架構的用戶,osm-edge 在 osm 基礎上擴展、替換、增加了如下組件:

?Sidecar driver:該組件實現了sidecar和控制平面接口標準化,用戶可以選擇不同的 sidecar proxy 實現。該組件默認采用?Pipy proxy[13]?Pipy sidecar:該組件替換了標準 osm 的 Envoy proxy;同時作為兼容,用戶可以通過 sidecar driver 配置使用 envoy 或者其他的 sidecar proxy?Ingress:該組件來源于?fsm[14],提供了標準的 ingress 和 Gateway API

我們已經向 osm 社區提交了?Sidecar driver 設計的 proposal[15],以增強 osm 在代理控制平面的開放性設計。有了 sidecar dirver 的引入,各家代理廠商可以提供針對不同代理的實現,使 osm 可以支持多重不同的數據平面代理。

快速體驗

以下演示如何在 5 分鐘之內,下載、安裝、運行 osm-edge,并部署一個演示應用,并完成鏈路加密、訪問控制、流量分割等 SMI 標準功能。該演示使用 x86 版本的 Ubuntu 21,運行v1.23.8+k3s1版本的 k3s。更多版本和平臺的支持,請參考完整的新手上路文檔[16]

先決條件

一個運行中的 Kubernetes 集群,可以通過下面的命令快速創建 k3s 單節點集群:

export?INSTALL_K3S_VERSION=v1.23.8+k3s1
curl?-sfL?https://get.k3s.io?|?sh?-s?-?--disable?traefik?--write-kubeconfig-mode?644?--write-kubeconfig?~/.kube/config

osm-edge 支持的最低 Kubernetes 版本為 1.19。

下載并安裝 osm-edge 命令行工具

system=$(uname?-s?|?tr?[:upper:]?[:lower:])
arch=$(dpkg?--print-architecture)
release=v1.1.0
curl?-L?https://github.com/flomesh-io/osm-edge/releases/download/${release}/osm-edge-${release}-${system}-${arch}.tar.gz?|?tar?-vxzf?-
./${system}-${arch}/osm?version
cp?./${system}-${arch}/osm?/usr/local/bin/

在 Kubernetes 上安裝 osm-edge

此命令啟用?Prometheus[17]、Grafana[18]?和?Jaeger[19]?集成

export?osm_namespace=osm-system?
export?osm_mesh_name=osm?osm?install?\--mesh-name?"$osm_mesh_name"?\--osm-namespace?"$osm_namespace"?\--set=osm.enablePermissiveTrafficPolicy=true?\--set=osm.deployPrometheus=true?\--set=osm.deployGrafana=true?\--set=osm.deployJaeger=true?\--set=osm.tracing.enable=true

部署演示應用

演示應用包括了如下服務:

?bookbuyer?是一個 HTTP 客戶端,它發送請求給?bookstore。這個流量是允許的。?bookthief?是一個 HTTP 客戶端,很像?bookbuyer,也會發送 HTTP 請求給?bookstore。這個流量應該被阻止。?bookstore?是一個服務器,負責對 HTTP 請求給與響應。同時,該服務器也是一個客戶端,發送請求給?bookwarehouse?服務。這個流量是被允許的。?bookwarehouse?是一個服務器,應該只對?bookstore?做出響應。bookbuyer?和?bookthief?都應該被其阻止。?mysql?是一個 MySQL 數據庫,只有?bookwarehouse?可以訪問。

使用如下命令部署這些服務:

kubectl?create?namespace?bookstore
kubectl?create?namespace?bookbuyer
kubectl?create?namespace?bookthief
kubectl?create?namespace?bookwarehouse
osm?namespace?add?bookstore?bookbuyer?bookthief?bookwarehouse
kubectl?apply?-f?https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/apps/bookbuyer.yaml
kubectl?apply?-f?https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/apps/bookthief.yaml
kubectl?apply?-f?https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/apps/bookstore.yaml
kubectl?apply?-f?https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/apps/bookwarehouse.yaml
kubectl?apply?-f?https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/apps/mysql.yaml

把每個服務的GUI端口對外暴露,這樣用瀏覽器我們可以訪問這些端口,觀察演示的現象。

git?clone?https://github.com/flomesh-io/osm-edge.git?-b?main
cd?osm-edge
cp?.env.example?.env
./scripts/port-forward-all.sh?#可以忽略錯誤信息

在一個瀏覽器中,打開下面的 URL:

注意:如果需要從宿主機訪問,需要將?localhost?替換成虛擬機的 IP 地址;或者在宿主機上運行?port-forward-all.sh腳本。

?http://localhost:8080 -?bookbuyer?http://localhost:8083 -?bookthief?http://localhost:8084 -?bookstore

訪問控制

通過上面的命令安裝 osm-edge,所有的服務都是沒有訪問控制的(寬松流量模式),或者說所有的訪問都是允許的。通過在瀏覽器中觀察每個服務的頁面數量增長可以看到沒有訪問控制時候的情況:

在?bookbuyerbookthief?UI 中的計數分別對應了購買和盜竊的書籍數量,而在?bookstore-v1?中這些都應該在增加:

?http://localhost:8080 -?bookbuyer?http://localhost:8083 -?bookthief

在?bookstore?UI 中的對于書籍銷售的計數也應該在增加:

?http://localhost:8084 -?bookstore

接下來演示通過禁用寬松流量策略模式,拒絕對?bookstore?服務的訪問:

kubectl?patch?meshconfig?osm-mesh-config?-n?osm-system?-p?'{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":false}}}'??--type=merge

此時會發現計數將不再增加。

現在執行下面的命令,放行?bookbuyer?對?bookstore?的訪問:

kubectl?apply?-f?https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/access/traffic-access-v1.yaml

這里再去查看?bookbuyer?和?bookstoreUI,會發現計數恢復增加,而?bookthiefUI 的計數仍然停止。

通過訪問控制,我們成功阻止?bookthief從?bookstore?盜竊書籍,而正常的購買不受影響。

可觀測性

Metrics

使用下面的命令開啟命名空間下的 metrics 采集,否則前面創建的 Pod 產生的 metrics 并不會被采集:

osm?metrics?enable?--namespace?"bookstore,bookbuyer,bookthief,bookwarehouse"

在執行了端口轉發腳本之后,在瀏覽器中打開?http://localhost:3000?可以訪問已經安裝的 Grafana,默認的用戶名和密碼分別為?adminadmin

osm-edge 內置了多個 dashboard 提供控制平面和數據平面各項指標的可視化展示。比如下圖中展示的是?bookthief?服務的 pod?http://localhost:3000?訪問其他?service?的指標:

c82935425a3d750148093ec773fbefa9.png

下圖展示的是?bookthief?以?deployment?為粒度,訪問其他?service的指標。與上個圖的差別在于,假如?bookthief?有多個副本,這里會展示所有副本的匯總數據:

2fab54a096fe4b018c05da837aef969c.png

接下來展示的 osm-edge 組件、以及網格基礎信息等的指標:

69e69b17800f9165690a142f867fcb9f.png

Tracing

在瀏覽器中輸入?http://localhost:16686/search?可訪問 Jaeger 的儀表板:

a44c297567b78c67258c1ae401a6de00.png

儀表板中可以查詢服務相關的 tracing 信息:

d350da2386b5d54da7334de8f33363c3.png

展示服務拓撲圖:

326b0eae6eb26f250c97f317838ccccb.png

Logging

osm-edge 控制平面將診斷日志輸出到了標準輸出上,用于服務網格的管理,可以通過調整日志的級別來控制日志信息的輸出。輸出到標準輸出上的日志,可以通過日志采集工具采集聚合并存儲。

卸載服務網格

在完成 osm-edge 的快速體驗后,如果要卸載全部與之相關的資源,就需要刪除這些示例應用和相關的 SMI 資源,并且卸載掉 osm-edge 控制平面和集群范圍內的 osm-edge 資源。

刪除示例應用:

kubectl?delete?ns?bookbuyer?bookthief?bookstore?bookwarehouse

卸載控制平面:

osm?uninstall?mesh

總結

通過這篇文章我們介紹了邊緣計算中不斷出現的多樣化的需求,以及對網絡基礎設施帶來的挑戰。osm-edge 將服務網格向邊緣進一步延伸,使得原本在中心云計算中才能使用的服務網格在邊緣場景中的應用變成可能。同時 osm-edge 實現了 SMI(服務網格接口規范),提供服務網格的通用功能。閱讀本文之后,可能會發現邊緣服務網格實際上不僅僅用于邊緣計算,中心云計算大規模、高密度的部署同樣適合。

在下一篇文章中,將通過數據平面的基準測試來為大家呈現 osm-edge 如何以高性能、低資源特性應對邊緣計算的基礎網絡需求。

引用鏈接

[1]?osm:?https://github.com/openservicemesh/osm
[2]?Pipy:?https://github.com/flomesh-io/pipy
[3]?SMI:?https://github.com/servicemeshinterface/smi-spec
[4]?fsm:?https://github.com/flomesh-io/fsm
[5]?k3s:?https://k3s.io/
[6]?k8e:?https://getk8e.com
[7]?倉庫地址:?https://github.com/flomesh-io/osm-edge
[8]?osm-edge 文檔中心:?https://osm-edge-docs.flomesh.io
[9]?tyrael@flomesh.io:?mailto:tyrael@flomesh.io
[10]?osm:?https://github.com/openservicemesh/osm
[11]?pipy:?https://github.com/flomesh-io
[12]?fsm:?https://github.com/flomesh-io/fsm
[13]?Pipy proxy:?https://github.com/flomesh-io
[14]?fsm:?https://github.com/flomesh-io/fsm
[15]?Sidecar driver 設計的 proposal:?https://github.com/openservicemesh/osm/issues/4874
[16]?新手上路文檔:?https://osm-edge-docs.flomesh.io/docs/getting_started/
[17]?Prometheus:?https://github.com/prometheus/prometheus
[18]?Grafana:?https://github.com/grafana/grafana
[19]?Jaeger:?https://github.com/jaegertracing/jaeger

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280377.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

powershell獲取exe文件返回值

一、目的 1.powershell能簡單寫一些小腳本,不需要exe開發這么笨重。 2.在windows實現某個特定功能,做成一個exe能方便查看管理。 二、實現 1.C# code 運行結束加入返回值 Environment.ExitCode 1; //自定義數字 2.powershell 調用并獲取 需要增加…

自定義ViewGroup實現仿微信圖片選擇器

先求一個windows版本的gif制作工具!!! 這個代碼只是做了簡單的選擇功能,圖片的壓縮與展示沒做。可以自己在接口的方法中去實現。 寫這個自定義view的初衷是為了學習LayoutParams,參考博客:http://www.jians…

[PHP] 多表外連接性能測試及優化

原文:https://blog.csdn.net/tang_huan_11/article/details/41925639 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!轉載于:https://www.cnblogs.com/0616--ataozhijia/p/10364188.html

活水亭觀書有感其一_如何將iPad置于“信息亭”模式,將其限制為單個應用程序...

活水亭觀書有感其一An iPad makes a great “kiosk” device–a tablet restricted to one specific app for your home or small business. You can create a makeshift kiosk using the Guided Access feature, or enable Single App Mode for a true kiosk environment. iPa…

Shell字符串

一 介紹 shell程序的字符串可以用單引號,也可以用雙引號,也可以不用,字符串是最有用的數據類型。 二 單引號 單引號字符串的限制: 》單引號內的內容原樣輸出,單引號字符串的變量是無效的。 》單引號內不能出現單引號&a…

powershell 特殊符號處理

顯示字符串有雙引號 “ 兩個雙引號產生一個雙引號,這里不包括最外層的雙引號。 $a"PowerShell" """My name is $a"",this program said." 使用轉義字符 轉義序列由反引號定義,也就是鍵盤F1下面與波浪線同鍵…

如何使用 System.Text.Json 序列化 DateTimeOffset 為 Unix 時間戳

在 .NET 中,日期和時間通常使用 DateTime 或 DateTimeOffset 來表示。這兩種數據類型都可以表示日期和時間,但它們之間有一些明顯的區別。DateTime 是不帶時區信息的,而 DateTimeOffset 是帶時區偏移量的,可以用來表示一個特定的時…

IDEA 學習筆記之 安裝和基本配置

安裝和基本配置: 下載:https://www.jetbrains.com/idea/download/#sectionwindows 下載Zip安裝包: 基礎知識: Eclipse的工作區IDEA的項目 Eclipse的項目IDEA的模塊 修改信息提示:Alt/ 關閉當前窗口:CtrlW 自…

大廠高級前端面試題答案

阿里 使用過的koa2中間件https://www.jianshu.com/p/c1e... koa-body原理https://blog.csdn.net/sinat_1... 有沒有涉及到Clusterhttp://nodejs.cn/api/cluster.... 介紹pm2PM2是node進程管理工具,可以利用它來簡化很多node應用管理的繁瑣任務,如性能監控…

js app緩存自動刷新_如何通過清除緩存來刷新App Store中的內容

js app緩存自動刷新Are you finding that you’re not seeing new apps on the App Store, or that updates to apps won’t go away even after you’ve installed the updates? Here’s a simple fix. 您是否發現自己在App Store上沒有看到新的應用程序,或者即使…

Office Web APP預覽如何去掉頂部版權標志“Microsoft Office Web Apps”

在Office Web APP的預覽會涉及4中類型的文 件:Word、Excel、PowerPoint、PDF,不同的類型在預覽時調用的文件是不一樣的,其中Word和 PDF調用的是同一個文件。每個預覽的頁面都有對應的CSS文件,如下:PowerPointC:\Progra…

ORA-01400: 無法將 NULL 插入 (CHARGE_WQRL.SF_JMQTFY_T.BH)

[ERROR] JmCheckManageDaoImpl:901 - java.sql.SQLException: ORA-01400: 無法將 NULL 插入 ("CHARGE_WQRL"."SF_JMQTFY_T"."BH") 這個問題很多時候是沒有為該表建立觸發器(trigger)導致的,或者是序列&#xf…

用最少的代碼,寫一個智能會議APP(MAUI)

Xamarin和MAUI移動開發是.NET核心方向之一,國外社區資源非常豐富,影響力挺大的。而國內則資源很是欠缺,GitHub上的國產開源案例太少了。隨著小米/美的/碧桂園等WPF招聘大戶開始要求移動開發,不少群友都在找相關資源。這里分享一套…

word多級列表修改編號_如何更改在Word中的編號列表中使用的數字類型

word多級列表修改編號By default, Word uses Arabic numbers (1, 2, 3, etc.) when you create numbered lists. However, you can change the numbers to a different type or to letters. The character after the number or letter can also be changed. 默認情況下&#xf…

微服務學習筆記

微服務是一種架構模式或者說是一種架構風格,他提倡將單一的應用程序劃分為一組小的服務,每個服務運行在其獨立的進程中,服務之間互相協調,互相配合,為用戶提供最終價值。dubbo與spring Cloud之間的區別之一是dubbo基于…

Go語言實時GC - 三色標記算法

前言 Go語言能夠支持實時的,高并發的消息系統,在高達百萬級別的消息系統中能夠將延遲降低到100ms以下,很大一部分需要歸功于Go高效的垃圾回收系統。 對于實時系統而言,垃圾回收系統可能是一個極大的隱患,因為在垃圾回收…

每小時50哈希——看看一個內部員工是如何摧毀整個公司網絡的?

本文講的是每小時50哈希——看看一個內部員工是如何摧毀整個公司網絡的?,我們以前曾調查過黑客會通過連接在USB端口的正在充電的手機實施攻擊,在這項研究中,我們重新審視了USB端口的安全性。我們發現,手機充電時&#…

推薦一款 在線+離線數據 同步框架 Dotmim.Sync

移動智能應用可以分為在線模式、純離線模式與“在線離線”混合模式。在線模式下系統數據一般存儲在服務器端的大中型數據庫(如 SQL Server、Oracle、MySQL 等),移動應用依賴于穩定可靠的網絡連接;純離線模式下系統數據一般存儲在移…

如何在Windows 10中將您喜歡的設置固定到開始菜單

If you find you’re accessing the same settings over and over in Windows 10, you can add these settings to the Start menu as tiles for quick and easy access. We’ll show you how to do this. 如果發現要在Windows 10中反復訪問相同的設置,則可以將這些…

20155202《網絡對抗》Exp9 web安全基礎實踐

20155202《網絡對抗》Exp9 web安全基礎實踐 實驗前回答問題 (1)SQL注入攻擊原理,如何防御 SQL注入產生的原因,和棧溢出、XSS等很多其他的攻擊方法類似,就是未經檢查或者未經充分檢查的用戶輸入數據,意外變成…