主頁 >  其他 > NebulaGraph 的云產品交付實踐

NebulaGraph 的云產品交付實踐

2022-09-20 08:01:53 其他

作者:喬雷,Vesoft.Inc 云原生技術專家

NebulaGraph 介紹

NebulaGraph 是由杭州悅數科技有限公司自主研發的一款開源分布式圖資料庫產品,擅長處理千億節點萬億條邊的超大資料集,同時保持毫秒級查詢延時,得益于其 shared-nothing 以及存盤與計算分離的架構設計,NebulaGraph 具備在線水平擴縮容能力;原生分布式架構,使用 Raft 協議保證資料一致性,確保集群高可用;同時兼容 openCypher,能夠無縫對接 Neo4j 用戶,降低學習及遷移成本,

NebulaGraph 經過幾年的發展,目前已經形成由云服務、可視化工具、圖計算、大資料生態支持、工程相關的 Chaos 以及性能壓測等產品構成的生態,接下來會圍繞云服務展開,分享落地程序中的實踐經驗,

交付模式

NebulaGraph 在云上的交付模式分為自管模式、半托管模式與全托管模式三種,

自管模式

自管模式基于各家云廠商的的資源堆疊編排產品交付,例如 AWS Cloudformation、Azure ResourceManager、Aliyun Resource Orchestration Service、GCP DeploymentManager 等等,自管模式的特點是所有資源部署在客戶的租戶內,用戶自己運維管理,軟體服務商負責將產品上架到 Marketplace,按照最佳實踐給客戶提供服務配置組裝和一鍵部署的能力,相比于傳統模式下以天計的交付周期,現在幾分鐘內就可以在云上部署一個圖資料庫,

半托管模式

半托管模式是在自管模式的基礎上為客戶提供了代運維的能力,阿里云計算巢通過將應用發布為服務的方式,為服務商提供了一個智能簡捷的服務發布和管理平臺,覆寫了服務的整個生命周期,包括服務的交付、部署、運維等,當客戶的集群出現問題時,服務商運維人員的所有操作均被記錄,資源操作通過 ActionTrail 記錄日志,實體操作保留錄屏,還原運維程序,做到運維安全合規可追溯,避免服務糾紛,

NebulaGraph 采用存盤與計算分離的架構,存盤計算分離有諸多優勢,最直接的優勢就是,計算層和存盤層可以根據各自的情況彈性擴容、縮容,存盤計算分離還帶來了另一個優勢:使水平擴展成為可能,通過計算巢提供的彈性伸縮能力,保障自身擴縮容需要,

全托管模式

全托管模式交付由服務商托管的圖資料庫產品,客戶按需訂閱付費,只需選擇產品規格與節點,NebulaGraph 全堆疊產品便可在幾分鐘內交付,客戶無需關注底層資源的監控運維,資料庫集群的穩定性保障作業,這些都將由服務商解決,

NebulaGraph DBaaS 依托于 Kubernetes 構建,Kubernetes 的架構設計帶來以下優勢:通過宣告式 API 將整體運維復雜性下沉,交給 IaaS 層實作和持續優化;抽象出 Loadbalance Service、Ingress、NodePool、PVC 等物件,幫助應用層可以更好通過業務語意使用基礎設施,無需關注底層實作差異;通過 CRD(Custom Resource Definition)/ Operator 等方法提供領域相關的擴展實作,最大化 Kubernetes 的應用價值,

落地實踐

落地實踐主要講述全托管模式產品的架構演進,云原生技術與業務平臺的融合,

IaC

下圖是 Azure 業務側基礎設施的架構,初始配置時對接到管理平臺需要耗時幾個小時,這在有大量用戶申請訂閱實體的情況下是完全不能接受的,

因此,我們想到了將基礎設施模板化,先定義出 dev、test、prod 三種運行環境,再將資源劃分為 VPC & Peering、Private DNS Zone、Kubernetes、Database、Container Registry、Bastion 等幾個類別,使用 terraform 完成自動化配置,但是,僅完成這一步是遠遠不夠的,為了滿足客戶側 Kubernetes 集群及時彈性要求,我們定義了 Cluster CRD,將 Cluster 的所有操作放入 Operator 里執行,terraform 的可執行檔案與模板代碼打包到容器鏡像后由 Job 驅動運行,Operator 向 Job 注入云廠商、地域、子網等環境變數,業務集群的狀態保存到 Cluster Status 里,到此,配置基礎設施實作了手動向自動化的演進,

Operators

紅帽出品了一本關于 Kubernetes 設計模式的書籍 《 Kubernetes Patterns 》,關注這個領域的同學想必不會陌生,這本書的出現是針對目前云原生時代的設計模式,之前的設計模式更多的是對單個模塊或是簡單系統的,但是云原生時代的開發方式和理念與之前的主機開發模式還是存在很大差異的,

在 DBaaS 平臺上線初期,創建一個訂閱實體大致由以下流程構成:

我們在資料庫里定義了 Task 表,包含 succeed、failed、running、pending 四種狀態,每個訂閱實體流程的任務節點狀態會存盤到 Task 表,服務啟動后會拉起一個監控執行緒,它主要負責定時檢查訂閱實體狀態,當訂閱實體狀態例外后會發送告警通知,然后根據預期的狀態執行恢復任務,訂閱實體的生命周期管理是一個長耗時的異步任務,這里涉及基礎設施資源管理,業務資料的更新等步驟,針對例外情況下不同流程的恢復處理導致業務邏輯復雜,后期再維護的成本逐漸增加,因此,我們對服務做了拆分重構,

我們先行調研了作業流編排系統,比如 Uber 的 Cadence,基礎設施編排領域的成熟案例有 Banzai Cloud,Hashicorp,但是也因引入三方系統帶來額外的運維成本,

另一套方案基于 Operator 的設計模式實作,核心原理是回圈控制協調,直到運行成功,將每個訂閱實體的管理流程放入協調器里,實體狀態保存到到 Status ,平臺業務層模塊驅動 Operator 并同步各種 Event,最終我們選擇了基于 Operator 的實作方案,將各種長耗時的任務剝離出來抽象為 CRD,統一交由 workflow-operator 來管理,

經過重構后,訂閱實體的生命周期管理非常簡潔,復雜度大幅降低,

成本控制

隨著企業將更多核心業務從資料中心遷移到云上,越來越多的企業迫切需要對云上環境進行預算制定、成本核算和成本優化,同樣地,客戶也對云上的費用支出例外敏感,

首先,我們在存盤層服務做了優化,通過 NVMe cache 降低存盤資費,NVMe 是專門為 NAND、閃存等非易失性存盤設計的,NVMe 協議建立在高速 PCIe 通道上,使用NVMe Cache,可以取得相比于同等大小的高性能磁盤不差的性能,而成本至少可以減少50%,

上次分享有介紹過我們的日志存盤基于 ES 系統,大家都知道,ES 系統存盤是非常耗費資源的,因此我們對業務平臺的應用日志存盤做了優化,主要是對 filebeat 做了定制開發,支持多家云廠商的物件存盤服務,改造 Rotater 支持檔案順序索引,可以按照行數切割檔案;基于 fsnotify 庫監聽檔案事件,將切割出來的小檔案上傳到物件存盤;當獲取日志時,可以根據 offset 計算出對應的日志檔案索引從而快速獲取日志,

從用戶控制臺到資料庫的請求鏈路也做了相應優化,每個云廠商都會為型別為 LoadBalancer 的 Service 或者 Ingress 提供配套的服務組件,這些組件可以解決負載均衡設備配置流程繁瑣的問題,通過在 Ingress 資源的 Annotation 里添加幾個配置項,就可以輕松拉起一個負載均衡設備,但凡事總有利弊,作為服務商簡化了管理,對應的在用戶端就會增加資費成本,另外,在實踐的程序中發現每家云廠商對基礎設施支持的完成度不盡相同,綜合以上因素考慮,我們基于 nginx-ingress-controller 做了鏈路優化,在管理平臺與業務集群打通網路的條件下,通過 External Service 將流量轉發到對應的訂閱實體,

在開發測驗流程上我們基于 Kubesphere 做了以下嘗試,
將基礎設施層抽象出 Cloud 介面,里面包含節點池、 負載均衡、DNS 域名等各個子介面,我們針對本地環境提供 Local Provider 的實作,除非像 Privatelink 比較特殊的服務,但是不會影響整體功能測驗,

我們將 Kubernetes 集群分為兩種,一類是由云廠商托管的 cloud 集群,另外一類就是自己搭建的本地集群,將他們匯入到 Kubesphere 統一管理,

控制成本的核心是資源回收,我們通過 CronJob 定時創建、銷毀 cloud 型別的開發、測驗集群,同時設定 k8s 集群的系統節點池規格滿足最小化運行需求,內測期間無訪問流量的實體自動回收,通過這些策略將成本控制在一個比較理想的狀態,

為了給不熟悉 Kubernetes 的同學測驗業務流程,我們為必要的服務組件提供了 helm charts 包,將他們上傳到 Kubesphere 應用倉庫然后提供應用模板來測驗流程,

總結與展望

總結

經過1年多的實踐,我們總結出以下幾點心得:

為了滿足安全合規、成本優化、提升地域覆寫性和避免廠商鎖等需求,以及客戶出于資料主權和安全隱私的考慮,混合云/多云架構已經成為通用解決方案,云原生軟體架構的目標是構建松耦合、具備彈性、韌性的分布式應用軟體架構,可以更好地應對業務需求的變化和發展,保障系統穩定性,IaC 可以進一步延伸到 Evething as Code,覆寫整個云原生軟體的交付、運維流程,釋放生產力,成本優化至關重要,不論是對客戶還是對服務商而言,

展望

在應用研發的程序中,越來越多的開發者接受了無服務器的理念,Serverless 資料庫可按需求自動縮放配置,根據應用程式的需求自動擴展容量,并內置高可用和容錯能力,采用 Serverless 資料庫開發者將無需考慮選型問題,只需要關注如何設計 schema ,怎樣查詢資料,及如何進行相應的優化即可,對于 NebulaGraph,我們期望未來可以幫助用戶實作端到端的 Serverless 架構,進一步提升用戶體驗,

本文由博客一文多發平臺 OpenWrite 發布!

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

標籤:其他

上一篇:【時間復雜度和空間復雜度】簡單理解與學習

下一篇:一文讀懂 Prometheus 長期存盤主流方案

標籤雲
其他(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