主頁 >  其他 > 基于 KubeSphere 的 Nebula Graph 多云架構管理實踐

基于 KubeSphere 的 Nebula Graph 多云架構管理實踐

2021-07-03 06:27:35 其他

本文是杭州站 Meetup 講師喬雷根據其分享內容整理而成的文章,

圖資料庫是一種使用圖結構進行語意查詢的資料庫,它使用節點、邊和屬性來表示和存盤資料,圖資料庫的應用領域非常廣泛,在反應事物之間聯系的計算都可以使用圖資料庫來解決,常用的領域如社交領域里的好友推薦、金融領域里的風控管理、零售領域里的商品實時推薦等等,

Nebula Graph 簡介與架構

Nebula Graph 是一個高性能、可線性擴展、開源的分布式圖資料庫,它采用存盤、計算分離的架構,計算層和存盤層可以根據各自的情況彈性擴容、縮容,這就意味著 Nebula Graph 可以最大化利用云原生技術實作彈性擴展、成本控制,能夠容納千億個頂點和萬億條邊,并提供毫秒級查詢延時的圖資料庫解決方案,

Nebula Graph 架構圖

上圖所示為 Nebula Graph 的架構,一個 Nebula 集群包含三個核心服務,Graph Service、Meta Service 和 Storage Service,每個服務由若干個副本組成,這些副本會根據調度策略均勻地分布在部署節點上,

Graph Service 對應的行程是 nebula-graphd,它由無狀態無關聯的計算節點組成,計算節點之間互不通信,Graph Service 的主要功能,是決議客戶端發送 nGQL 文本,通過詞法決議Lexer 和語法決議 Parser 生成執行計劃,并通過優化后將執行計劃交由執行引擎,執行引擎通過 Meta Service 獲取圖點和邊的 schema,并通過存盤引擎層獲取點和邊的資料,

Meta Service 對應的行程是 nebula-metad ,它基于 Raft 協議實作分布式集群,leader 由集群中所有 Meta Service 節點選出,然后對外提供服務,followers 處于待命狀態并從 leader 復制更新的資料,一旦 leader 節點 down 掉,會再選舉其中一個 follower 成為新的 leader,Meta Service 不僅負責存盤和提供圖資料的 meta 資訊,如 Space、Schema、Partition、Tag 和 Edge 的屬性的各欄位的型別等,還同時負責指揮資料遷移及 leader 的變更等運維操作,

Storage Service 對應的行程是 nebula-storaged,采用 shared-nothing 的分布式架構設計,每個存盤節點都有多個本地 KV 存盤實體作為物理存盤其核心,Nebula 采用 Raft 來保證這些KV 存盤之間的一致性,目前支持的主要存盤引擎為 Rocksdb 和 HBase,

Nebula Graph 提供C++、Java、Golang、Python、Rust 等多種語言的客戶端,與服務器之間的通信方式為 RPC,采用的通信協議為 Facebook-Thrift,用戶也可通過 nebula-console、nebula-studio 實作對 Nebula Graph 操作,

多云架構挑戰

Nebula Graph 的云產品定位是 DBaaS (Database-as-a-Service)平臺,因此肯定要借助云原生技術來達成這一目標,到底該如何落地呢?首先要明確一點,任何技術都不是銀彈,只有合適的場景使用合適的技術,雖然我們擁有很多可供挑選的開源產品來搭建這個平臺,但是最終落實到交付給用戶的產品上,還有很多挑戰,

這里我列舉了三個方面的挑戰:

業務挑戰

多個云廠商的資源適配,這里需要實作統一的資源抽象模型,同時還要做好國際化,國際化需要考慮地域文化差異、當地法律法規差異、用戶消費習慣差異等多個要素,這些要素決定了需要在設計模式上去迎合當地用戶的使用習慣,從而提升用戶體驗,

性能挑戰

在大多數情況下,通過同一云廠商網路傳輸的資料移動速度比必須通過全球互聯網從一個云廠商傳輸到另一個云廠商的資料移動速度要快得多,這意味著跨云之間的網路連接可能成為多云體系結構的嚴重性能瓶頸,資料孤島很難打破,因為企業無法遷移格式不同且駐留在不同技術中的資料,缺乏可遷移性會帶給多云戰略帶來潛在的風險,在單個云廠商中,使用云廠商的原生自動擴展工具配置作業負載的自動擴展非常容易,當用戶的作業負載跨越多個云廠商時,自動擴展就會變得棘手,

運營挑戰

大規模的 Kubernetes 集群運營是非常有挑戰的事情,滿足業務的快速發展和用戶需求也是對團隊極大的考驗,首先是做到集群的管理標準化、可視化,其次全部的運維操作流程化,這需要有一個深入了解運維痛點的管理平臺,可以解決我們大部分的運維需求,資料安全上需要考慮在沒有適當的治理和安全控制的情況下,將資料從一個平臺遷移到另一個平臺(或從一個區域遷移到另一個區域)會帶來資料安全風險,

DBaaS(Database-as-a-Service)

云原生技術簡單概括就是為用戶提供一種簡易的、敏捷的、可彈性擴展的、可復制的方式,最大化使用云上資源的能力,云原生技術不斷演進也是為了用戶更好的專注于業務開發,大家可以看到這個金字塔,從 IaaS 到最上面的云原生應用層,產品形態越來越靈活,計算單元的粒度越來越細,模塊化程度、自動化運維程度、彈性效率、故障恢復能力都是越來越高,這說明每往上走一層,應用與底層物理基礎設施解耦就越徹底,用戶的關注點不再是從硬體服務器到業務實作整個鏈條,而是僅需要關注于當下業務本身,

PaaS 平臺的容器編排系統是 Kubernetes,自然而然地就能想到基于 Kubernetes 構建這套平臺,Kubernetes 提供了容器運行時介面,你可以選擇任意一種實作這套介面的運行時來構建應用運行的基礎環境,因此,利用好 Kubernetes 提供的能力,就能達到事半功倍的效果,Kubernetes 提供了從命令列終端 kubectl 到容器運行依賴的存盤、網路、計算的多個擴展點,用戶可以根據業務場景實作一些自定義擴展插件對接到 kubernetes 平臺,而不用擔心侵入性,

用戶視圖

NebulaCloud 目前為用戶提供兩種訪問方式,一種是通過瀏覽器進入 Studio 操作視窗,在資料匯入后可以做圖探索,nGQL 陳述句執行等操作,另一種是通過廠商提供的 private-link 打通用戶到 NebulaCloud 之間的網路連接,用戶可以通過 nebula-console 或者 nebula client 直連到 Nebula 實體,

NebulaCloud 架構

從業務架構上看,NebulaCloud 可以分為三層,最底層是資源適配層,主要負責提供資源層面上的適配,提供對多云廠商、多地域集群、同構或異構資源池的抽象描述,再往上是業務層與資源層,業務層涵蓋基礎服務、實體管理、租戶管理、計費管理、資料匯入管理等業務模塊;資源層負責提供 Nebula 集群的運行環境,在調度策略下提供最佳的資源配置,最上層是網關層,對外提供訪問服務,

NebulaCloud 架構圖

NebulaCloud 內部流程

這里以 AWS 為例策略地描述一個 Nebula 集群的創建程序,用戶創建實體請求提交后,nebula-platform 服務根據輸入的廠商、地域、規格等引數資訊做資源調度,比如資源池、負載均衡、安全策略等配置,然后通過 nebula-operator 的 api 完成實體的創建,最后配置 ALB 規則,為用戶提供訪問實體的入口,

Nebula-Operator

在 Kubernetes 中,定義一個新物件可以有兩種方式,一個是 CustomResourceDefinition, 一個是 Aggregation ApiServer,其中 CRD 是目前主流的做法,nebula-operator 就是 CRD 來實作的,

CRD+Custom Controller 就是典型的 Operator 模式了,通過向 Kubernetes 系統注冊好的 CRD,我們可以使用 controller 來觀察 Nebula 集群以及與它相關聯的資源物件狀態,然后按照寫的協調邏輯來驅動 Nebula 集群向期望狀態轉移,這么實作可以把 Nebula 相關的管理作業都沉淀到 Operator 里,用戶使用 NebulaGraph 的復雜度降低,可以輕松完成彈性擴縮容、滾動升級等核心操作,我們基于 kubernetes 的 Restful API 生成了一套管理 Nebula 集群的 API,這樣用戶可以拿著 API 就能實作對接自己的 PaaS 平臺,搭建自己的圖計算平臺,

nebula-operator 目前的功能還在不斷完善中,實體的滾動升級需要 Nebula 提供底層支持,預計今年會支持上,

KubeSphere 多集群管理

平臺化管理

KubeSphere 衍生自青云公有云的操作面板,除了繼承顏值,同時在功能上也是相當完備,NebulaCloud 需要對接的主流云廠商都已經支持上,因此一套管理平臺就可以運維所有的 Kubernetes 集群,多集群管理是我們最為看重的功能點,

我們在本地環境部署了 Host 集群,其余的云上托管 Kubernetes 集群通過直連接入的方式作為 Member 集群,這里需要注意 ApiServer 訪問配置放通單個 IP,比如本地環境的出口公網 IP,

流程化操作

我們使用 IaC 工具 pulumi 部署新集群,再通過自動化腳本工具設定待管理集群 member 角色,全部程序無需人工操作,集群的創建由平臺的告警模塊來觸發,當單集群的資源配額達到告警水位后,會自動觸發彈性出一套新的集群,

自動化監控

KubeSphere 提供了豐富的內置告警策略,同時還支持自定義告警策略,內置的告警策略基本可以覆寫日常所需的監控指標,在告警方式上也有多種選擇,我們采用了郵件與釘釘相結合的方式,重要緊急的可以通過釘釘直接釘到值班人員,普通級別的可以走郵件方式,

智能化運營

KubeSphere 提供了集群多個維度的全域展示視圖,目前管理的集群數量少足夠使用,未來隨著接入 member 集群數量的增加,可以通過運營資料的分析做資源的精細化調度和故障預測,進一步提前發現風險,提升運營的質量,

其他

KubeSphere 還有很多好用的配套工具,比如日志查詢、事件查詢、操作審計日志等,這些工具在精細化運營都是必不可少的, 我們目前已經接入了測驗環境集群,在深度使用掌握 KubeSphere 的全貌后會嘗試接入生產集群,

未來規劃

我們將充分挖掘自定義告警策略并加以利用,同時結合 Nebula 集群自身的監控指標打造監控全景圖;覆寫核心指標的多級、多維度的告警機制,將風險消滅在源頭;完善周邊配套工具,通過主動、被動以及流程化等減少誤操作風險;啟用 DevOps 作業流,打通開發、測驗、預發、生產環境,減少人力介入,

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

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

標籤:其他

上一篇:【NLP學習其3.5】詞嵌入的特性,為什么詞之間會有聯系?

下一篇:【NLP學習其3.5】詞嵌入的特性,為什么詞之間會有聯系?

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