主頁 >  其他 > Apache Flink on K8s:四種運行模式,我該選擇哪種?

Apache Flink on K8s:四種運行模式,我該選擇哪種?

2020-09-21 14:03:07 其他

1. 前言

Apache Flink 是一個分布式流處理引擎,它提供了豐富且易用的API來處理有狀態的流處理應用,并且在支持容錯的前提下,高效、大規模的運行此類應用,通過支持事件時間(event-time)、計算狀態(state)以及恰好一次(exactly-once)的容錯保證,Flink迅速被很多公司采納,成為了新一代的流計算處理引擎,

2020 年 2 月 11 日,社區發布了 Flink 1.10.0 版本, 該版本對性能和穩定性做了很大的提升,同時引入了 native Kubernetes 的特性,對于 Flink 的下一個穩定版本,社區在 2020 年 4 月底凍結新特性的合入,預計在 2020 年 5 月中旬會推出 Flink 1.11,在新版本中將重點引入新特性,以擴容 Flink 的使用場景,

Kubernetes 專案源自 Google 內部 Borg 專案,基于 Borg 多年來的優秀實踐和其超前的設計理念,并憑借眾多豪門、大廠的背書,時至今日,Kubernetes 已經成長為容器管理領域的事實標準,在大資料及相關領域,包括 Spark,Hive,Airflow,Kafka 等眾多知名產品正在遷往 Kubernetes,Apache Flink 也是其中一員,

Flink 選擇 Kubernetes 作為其底層資源管理平臺,原因包括兩個方面:

1)Flink 特性:流式服務一般是常駐行程,經常用于電信網質量監控、商業資料即席分析、實時風控和實時推薦等對穩定性要求比較高的場景;

2)Kubernetes 優勢:為在線業務提供了更好的發布、管理機制,并保證其穩定運行,同時 Kubernetes 具有很好的生態優勢,能很方便的和各種運維工具集成,如 prometheus 監控,主流的日志采集工具等;同時 K8S 在資源彈性方面提供了很好的擴縮容機制,很大程度上提高了資源利用率,

在 Flink 的早期發行版 1.2 中,已經引入了 Flink Session 集群模式,用戶得以將 Flink 集群部署在 Kubernetes 集群之上,

隨著 Flink 的逐漸普及,越來越多的 Flink 任務被提交在用戶的集群中,用戶發現在 session 模式下,任務之間會互相影響,隔離性比較差,因此在 Flink 1.6 版本中,推出了 Per Job 模式,單個任務獨占一個 Flink 集群,很大的程度上提高了任務的穩定性,

在滿足了穩定性之后,用戶覺得這兩種模式,沒有做到資源按需創建,往往需要憑用戶經驗來事先指定 Flink 集群的規格,在這樣的背景之下,native session 模式應用而生,在 Flink 1.10 版本進入 Beta 階段,我們增加了 native per job 模式,在資源按需申請的基礎上,提高了應用之間的隔離性,

本文根據 Flink 在 Kubernetes 集群上的運行模式的趨勢,依次分析了這些模式的特點,并在最后介紹了 Flink operator 方案及其優勢,

2. Flink運行模式

本文首先分析了 Apache Flink 1.10 在 Kubernetes 集群上已經GA(生產可用)的兩種部署模式,然后分析了處于 Beta 版本的 native session 部署模式和即將在 Flink 1.11 發布的 native per-job 部署模式,最后根據這些部署模式的利弊,介紹了當前比較 native kubernetes 的部署方式,flink-operator,

我們正在使用的 Flink 版本已經很好的支持了 native session 和 native per-job 兩種模式,在 flink-operator 中,我們也對這兩種模式也做了支持,

接下來將按照以下順序分析了 Flink 的運行模式,讀者可以結合自身的業務場景,考量適合的 Flink 運行模式,

  • Flink session 模式
  • Flink per-job 模式
  • Flink native session 模式
  • Flink native per-job 模式

這四種部署模式的優缺點對比,可以用如下表格來概括,更多的內容,請參考接下來的詳細描述,

2.1 Session Cluster 模式

2.1.1 原理簡介

Session 模式下,Flink 集群處于長期運行狀態,當集群的Master組件接收到客戶端提交的任務后,對任務進行分析并處理,用戶將Flink集群的資源描述檔案提交到 Kubernetes 之后,Flink 集群的 FlinkMaster 和 TaskManager 會被創建出來,如下圖所示,TaskManager 啟動后會向 ResourceManager 模塊注冊,這時 Flink Session 集群已經準備就緒,當用戶通過 Flink Clint 端提交了 Job 任務時,Dispatcher 收到該任務請求,將請求轉發給 JobMaster,由 JobMaster 將任務分配給具體的 TaskManager,

2.1.2 特點分析

這種型別的 Flink 集群,FlinkMaster 和 TaskManager 是以Kubernetes deployment的形式長期運行在 Kubernetes 集群中,在提交作業之前,必須先創建好 Flink session 集群,多個任務可以同時運行在同一個集群內,任務之間共享 K8sResourceManager 和 Dispatcher,但是 JobMaster 是單獨的,這種方式比較適合運行短時作業、即席查詢、任務提交頻繁、或者對任務啟動時長比較敏感的場景,

優點:作業提交的時候,FlinkMaster 和 TaskManager已經準備好了,當資源充足時,作業能夠立即被分配到 TaskManager 執行,無需等待 FlinkMaster,TaskManager,Service 等資源的創建;

缺點:1)需要在提交 Job 任務之前先創建 Flink 集群,需要提前指定 TaskManager 的數量,但是在提交任務前,是難以精準把握具體資源需求的,指定的多了,會有大量 TaskManager 處于閑置狀態,資源利用率就比較低,指定的少了,則會有任務分配不到資源,只能等集群中其他作業執行完成后,釋放了資源,下一個作業才會被正常執行,

  1. 隔離性比較差,多個 Job 任務之間存在資源競爭,互相影響;如果一個 Job 例外導致 TaskManager crash 了,那么所有運行在這個 TaskManager 上的 Job 任務都會被重啟;進而,更壞的情況是,多個 Jobs 任務的重啟,大量并發的訪問檔案系統,會導致其他服務的不可用;最后一點是,在 Rest interface 上是可以看到同一個 session 集群里其他人的 Job 任務,

2.2 Per Job Cluster 模式

顧名思義,這種方式會專門為每個 Job 任務創建一個單獨的 Flink 集群,當資源描述檔案被提交到 Kubernetes 集群, Kubernetes 會依次創建 FlinkMaster Deployment、TaskManagerDeployment 并運行任務,任務完成后,這些 Deployment 會被自動清理,

2.2.1 特點分析

優點:隔離性比較好,任務之間資源不沖突,一個任務單獨使用一個 Flink 集群;相對于 Flink session 集群而且,資源隨用隨建,任務執行完成后立刻銷毀資源,資源利用率會高一些;

缺點:需要提前指定 TaskManager 的數量,如果 TaskManager 指定的少了會導致作業運行失敗,指定的多了仍會降低資源利用率;資源是實時創建的,用戶的作業在被運行前,需要先等待以下程序:

· Kubernetes scheduler為FlinkMaster和 TaskManager 申請資源并調度到宿主機上進行創建;

· Kubernetes kubelet拉取FlinkMaster、TaskManager 鏡像,并創建出FlinkMaster、TaskManager容器;

· TaskManager啟動后,向Flink ResourceManager 注冊,

這種模式比較適合對啟動時間不敏感、且長時間運行的作業,不適合對任務啟動時間比較敏感的場景,

2.3 Native Session Cluster 模式

2.3.1 原理分析

  1. Flink提供了Kubernetes模式的入口腳本 kubernetes-session.sh,當用戶執行了該腳本之后,Flink 客戶端會生成 Kubernets 資源描述檔案,包括 FlinkMaster Service,FlinkMasterDeloyment,Configmap,Service并設定了owner reference,在 Flink 1.10 版本中,是將 FlinkMaster Service 作為其他資源的 Owner,也就意味著在洗掉 Flink 集群的時候,只需要洗掉 FlinkMaster service,其他資源則會被以及聯的方式自動洗掉;

  2. Kubernetes 收到來自 Flink 的資源描述請求后,開始創建FlinkMaster Service,FlinkMaster Deloyment,以及 Configmap 資源,從圖中可以看到,伴隨著 FlinkMaster 的創建,Dispatch 和K8sResMngr 組件也同時被創建了,這里的 K8sResMngr 就是 Native 方式的核心組件,正是這個組件去和 Kubernetes API server 進行通信,申請 TaskManager 資源;當前,用戶已經可以向Flink 集群提交任務請求了;

  3. 用戶通過 Flink client 向 Flink 集群提交任務,flink client 會生成 Job graph,然后和 jar 包一起上傳;當任務提交成功后,JobSubmitHandler 收到了請求并提交給 Dispatcher并生成 JobMaster, JobMaster 用于向 KubernetesResourceManager 申請 task 資源;

  4. Kubernetes-Resource-Manager 會為 taskmanager 生成一個新的組態檔,包含了 service 的地址,這樣當 Flink Master 例外重建后,能保證 taskmanager 通過 Service 仍然能連接到新的 Flink Master;

  5. TaskManager 創建成功后注冊到 slotManager,這時 slotManager向TaskManager 申請 slots,TaskManager 提供自己的空閑 slots,任務被部署并運行;

2.3.2. 特點分析

之前我們提到的兩種部署模式,在 Kubernetes 上運行 Flink 任務是需要事先指定好 TaskManager 的數量,但是大部分情況下,用戶在任務啟動前是無法準確的預知該任務所需的 TaskManager 數量和規格,

指定的多了會資源浪費,指定的少了會導致任務的執行失敗,最根本的原因,就是沒有 Native 的使用 Kubernetes 資源,這里的 Native,可以理解為 Flink 直接與 Kuberneter 通信來申請資源,

這種型別的集群,也是在提交任務之前就創建好了,不過只包含了 FlinkMaster 及其 Entrypoint(Service),當任務提交的時候,Flink client 會根據任務計算出并行度,進而確定出所需 TaskManager 的數量,然后 Flink 內核會直接向 Kubernetes API server 申請 taskmanager,達到資源動態創建的目的,

  • 優點:相對于前兩種集群而言,taskManager 的資源是實時的、按需進行的創建,對資源的利用率更高,所需資源更精準,
  • 缺點:taskManager 是實時創建的,用戶的作業真正運行前, 與 Per Job集群一樣, 仍需要先等待 taskManager 的創建, 因此對任務啟動時間比較敏感的用戶,需要進行一定的權衡,

2.4 Native Per Job 模式

在當前的 Apache Flink 1.10 版本里,Flink native per-job 特性尚未發布,預計在后續的 Flink 1.11 版本中提供,我們可以提前一覽 native per job 的特性,

2.4.1 原理分析

當任務被提交后,同樣由 Flink 來向 kubernetes 申請資源,其程序與之前提到的 native session 模式相似,不同之處在于:

  1. Flink Master是隨著任務的提交而動態創建的;
  2. 用戶可以將 Flink、作業 Jar 包和 classpath 依賴打包到自己的鏡像里;
  3. 作業運行圖由 Flink Master 生成,所以無需通過 RestClient 上傳 Jar 包(圖 2 步驟 3),

2.4.2. 特點分析

native per-job cluster 也是任務提交的時候才創建 Flink 集群,不同的是,無需用戶指定 TaskManager 資源的數量,因為同樣借助了 Native 的特性,Flink 直接與 Kubernetes 進行通信并按需申請資源,

  • 優點:資源按需申請,適合一次性任務,任務執行后立即釋放資源,保證了資源的利用率;
  • 缺點:資源是在任務提交后開始創建,同樣意味著對于提交任務后對延時比較敏感的場景,需要一定的權衡;

3.1 簡介

分析以上四種部署模式,我們發現,對于 Flink 集群的使用,往往需要用戶自行維護部署腳本,向 Kubernetes 提交各種所需的底層資源描述檔案(Flink Master,TaskManager,組態檔,Service),

在 session cluster 下,如果集群不再使用,還需要用戶自行洗掉這些的資源,因為這類集群的資源使用了 Kubernetes 的垃圾回識訓制 owner reference,在洗掉 Flink 集群的時候,需要通過洗掉資源的 Owner 來進行及聯洗掉,這對于不熟悉 Kubernetes 的 Flink 用戶來說,就顯得不是很友好了,

而通過 Flink-operator,我們可以把 Flink 集群描述成 yaml 檔案,這樣,借助 Kubernetes 的宣告式特性和協調控制器,我們可以直接管理 Flink 集群及其作業,而無需關注底層資源如 Deployment,Service,ConfigMap 的創建及維護,

當前 Flink 官方還未給出 flink-operator 方案,不過 GoogleCloudPlatform 提供了一種基于 kubebuilder 構建的 flink-operator方案,接下來,將介紹 flink-operator 的安裝方式和對 Flink 集群的管理示例,

當 Fink operator 部署至 Kubernetes 集群后, FlinkCluster 資源和 Flink Controller 被創建,其中 FlinkCluster 用于描述 Flink 集群,如 JobMaster 規格、TaskManager 和 TaskSlot 數量等;Flink Controller 實時處理針對 FlinkCluster 資源的 CRUD 操作,用戶可以像管理內置 Kubernetes 資源一樣管理 Flink 集群,

例如,用戶通過 yaml 檔案描述期望的 Flink 集群并向 Kubernetes 提交,Flink controller 分析用戶的 yaml,得到 FlinkCluster CR,然后呼叫 API server 創建底層資源,如JobMaster Service, JobMaster Deployment,TaskManager Deployment,

通過使用 Flink Operator,有如下優勢:

1. 管理 Flink 集群更加便捷

flink-operator 更便于我們管理 Flink 集群,我們不需要針對不同的 Flink 集群維護 Kubenretes 底層各種資源的部署腳本,唯一需要的,就是 FlinkCluster 的一個自定義資源的描述檔案,創建一個 Flink session 集群,只需要一條 kubectl apply 命令即可,下圖是 Flink Session集群的 yaml 檔案,用戶只需要在該檔案中宣告期望的 Flink 集群配置,flink-operator 會自動完成 Flink 集群的創建和維護作業,如果創建 Per Job 集群,也只需要在該 yaml 中宣告 Job 的屬性,如 Job 名稱,Jar 包路徑即可,通過 flink-operator,上文提到的四種 Flink 運行模式,分別對應一個 yaml 檔案即可,非常方便,

apiVersion: flinkoperator.k8s.io/v1beta1kind: FlinkClustermetadata:  name: flinksessioncluster-samplespec:  image:    name: flink:1.10.0    pullPolicy: IfNotPresent  jobManager:    accessScope: Cluster    ports:      ui: 8081    resources:      limits:        memory: "1024Mi"        cpu: "200m"  taskManager:    replicas: 1    resources:      limits:        memory: "2024Mi"        cpu: "200m"    volumes:      - name: cache-volume        emptyDir: {}    volumeMounts:      - mountPath: /cache        name: cache-volume  envVars:    - name: FOO      value: bar  flinkProperties:    taskmanager.numberOfTaskSlots: "1"

2. 宣告式

通過執行腳本命令式的創建 Flink 集群各個底層資源,需要用戶保證資源是否依次創建成功,往往伴隨著輔助的檢查腳本,借助 flink operator 的控制器模式,用戶只需宣告所期望的 Flink 集群的狀態,剩下的作業全部由 Flink operator 來保證,在 Flink 集群運行的程序中,如果出現資源例外,如 JobMaster 意外停止甚至被洗掉,Flink operator 都會重建這些資源,自動的修復 Flink 集群,

3. 自定義保存點

用戶可以指定 autoSavePointSeconds 和保存路徑,Flink operator 會自動為用戶定期保存快照,

4. 自動恢復

流式任務往往是長期運行的,甚至 2-3 年不停止都是常見的,在任務執行的程序中,可能會有各種各樣的原因導致任務失敗,用戶可以指定任務重啟策略,當指定為 FromSavePointOnFailure,Flink operator 自動從最近的保存點重新執行任務,

5. sidecar containers

sidecar 容器也是 Kubernetes 提供的一種設計模式,用戶可以在 TaskManager Pod 里運行 sidecar 容器,為 Job 提供輔助的自定義服務或者代理服務,

6. Ingress 集成

用戶可以定義 Ingress 資源,flink operator 將會自動創建 Ingress 資源,云廠商托管的 Kubernetes 集群一般都有 Ingress 控制器,否則需要用戶自行實作 Ingress controller,

7. Prometheus 集成

通過在 Flink 集群的 yaml 檔案里指定 metric exporter 和 metric port,可以與 Kubernetes 集群中的 Prometheus 進行集成,

最后

通過本文,我們了解了 Flink 在 Kubernetes 上運行的不同模式,其中 Native 模式在資源按需申請方面比較突出,借助 kubernetes operator,我們可以將 Flink 集群當成Kubernetes原生的資源一樣進行 CRUD 操作,限于篇幅,本文主要分析了 Flink 在 Kubernetes 上的運行模式的區別,后續將會有更多的文章來對 Flink 在 Kubernetes 上的最佳實踐進行描述,敬請期待,

參考檔案

Kubernetes native integration

https://docs.google.com/document/d/1-jNzqGF6NfZuwVaFICoFQ5HFFXzF5NVIagUZByFMfBY/edit#heading=h.thxqqaj3vxmz

Flink operator 使用檔案

https://github.com/tkestack/flink-on-k8s-operator/tree/nativePerJob

【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/97468.html

標籤:其他

上一篇:Unity周記: 2020.09.14-09.20

下一篇:貪吃蛇c語言代碼

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more