万师傅使用云产品,上手简单、开箱即用、省去运维烦恼
云棲號案例庫:【點(diǎn)擊查看更多上云案例】
不知道怎么上云?看云棲號案例庫,了解不同行業(yè)不同發(fā)展階段的上云方案,助力你上云決策!
整體架構(gòu)
每當(dāng)我在思考技術(shù)選型方案的時(shí)候,翻翻阿里云的官網(wǎng),總能找到我想要的東西。于是,我們的大數(shù)據(jù)體系就變成了這樣,如圖:
?
離線
2.1 選型原則
團(tuán)隊(duì)成員,大都是Hive方向或是算法方向出身。為追求上手簡單、專注數(shù)據(jù)的分析和挖掘、減少不必要的學(xué)習(xí)成本和費(fèi)用成本,使用了阿里云MaxCompute。
2.2 數(shù)據(jù)采集
數(shù)據(jù)源共包含三類:
(1)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù);
(2)服務(wù)器上的日志文件;
(3)前端埋點(diǎn)日志;
采集方式如圖:
?
關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),使用dataworks中的“數(shù)據(jù)集成”功能,定時(shí)離線同步到MaxCompute中;
其他兩類數(shù)據(jù),以及關(guān)系型數(shù)據(jù)庫的Binlog,直接使用了萬能的“日志服務(wù)SLS”。WebTracking支持直接收集HTML、H5、iOS和 Android的日志;Logtail支持收集服務(wù)器上的日志文件,以及關(guān)系型數(shù)據(jù)庫的Binlog。數(shù)據(jù)都收集過來之后,再定時(shí)將數(shù)據(jù)投遞到MaxCompute中;
如上兩個(gè)步驟,完成了三類數(shù)據(jù)的收集。比業(yè)界常見的Flume+Kafka、Kettle、Logstash等方式,上手更快、維護(hù)更簡單。
2.3 數(shù)據(jù)倉庫
2.3.1 分層
?
數(shù)據(jù)倉庫的分層模型,大體的思路和網(wǎng)上爛大街的數(shù)倉分層原則相似,總體分ODS、DW、RPT三層。具體實(shí)踐的過程中,根據(jù)我們的實(shí)際情況,慢慢形成了我們自己的風(fēng)格。
ODS層,大部分是和數(shù)據(jù)源中的數(shù)據(jù)一模一樣的,也有極少部分經(jīng)過了簡單的ETL、或者只截取了與統(tǒng)計(jì)有關(guān)的字段。數(shù)據(jù)已采用了其他備份方式,所以這里不再需要使用MaxCompute做冷備。
DW層是最核心的數(shù)據(jù)倉庫層。由于公司技術(shù)正在朝著微服務(wù)轉(zhuǎn)型,系統(tǒng)、數(shù)據(jù)庫拆分得越來越細(xì),對數(shù)據(jù)的統(tǒng)計(jì)分析很不利。所以我們依靠數(shù)據(jù)倉庫層,將相關(guān)的數(shù)據(jù)放到一起,便于上層的開發(fā)、更有利于日常的臨時(shí)數(shù)據(jù)需求的快速響應(yīng)。數(shù)據(jù)倉庫層的數(shù)據(jù)結(jié)構(gòu),不會隨著微服務(wù)系統(tǒng)和數(shù)據(jù)的拆分而變化,讓系統(tǒng)拆分對于這套離線數(shù)據(jù)分析的影響終結(jié)在這一層,不滲透到更上層。
RPT層的具體做法,市面上有很多種。根據(jù)我們的實(shí)際情況,決定采用按業(yè)務(wù)劃分的方式。曾經(jīng)我們也嘗試過按數(shù)據(jù)產(chǎn)品劃分,但是時(shí)間長了,出現(xiàn)了幾個(gè)嚴(yán)重的問題。首先,不同數(shù)據(jù)產(chǎn)品中對于相同指標(biāo)的定義混亂,導(dǎo)致各個(gè)部門對于數(shù)據(jù)沒有一個(gè)統(tǒng)一的概念。其次,技術(shù)上的系統(tǒng)拆分的影響范圍,隨著數(shù)據(jù)產(chǎn)品的增多而大面積擴(kuò)大,極易出現(xiàn)修改遺漏的現(xiàn)象。
2.3.2 DATAWORKS
配套MaxCompute一起使用的Dataworks,是一個(gè)全能型的可視化工具,集成了幾乎一切我們使用MaxCompute時(shí)所需要配套的功能,也解決了很多開源產(chǎn)品中無法解決的痛點(diǎn),例如:可視化調(diào)度、智能監(jiān)控告警、數(shù)據(jù)權(quán)限控制等。
實(shí)際使用時(shí),我們的數(shù)據(jù)在MaxCompute中的流轉(zhuǎn),全部是通過MaxCompute SQL節(jié)點(diǎn)和機(jī)器學(xué)習(xí)節(jié)點(diǎn)進(jìn)行的。定時(shí)依賴+調(diào)度依賴+跨周期依賴,也讓方案的設(shè)計(jì)變得更靈活。
業(yè)務(wù)流程是按實(shí)際業(yè)務(wù)模塊劃分、沒有按照數(shù)據(jù)產(chǎn)品劃分,這樣可以解決“找任務(wù)難”、“不同團(tuán)隊(duì)對相同指標(biāo)的定義不一致”等問題。
當(dāng)某個(gè)業(yè)務(wù)有變更時(shí),可以快速定位到需要配合修改的任務(wù)都有哪些,有效地避免了遺漏。
技術(shù)文檔的同步更新一直是業(yè)界難以解決的痛點(diǎn),數(shù)據(jù)字典也不例外。按照業(yè)務(wù)模塊劃分了之后,有新增指標(biāo)時(shí),更容易發(fā)現(xiàn)是否已有相同或相似的指標(biāo),即使數(shù)據(jù)字典更新不及時(shí)也不會有大影響。
實(shí)時(shí)
3.1 選型原則
團(tuán)隊(duì)初始成員均為Java出身,并且我們當(dāng)前沒有、未來也不準(zhǔn)備擁有自己的Hadoop集群。綜合考慮,采用了阿里開源的JStorm作為核心的流式計(jì)算引擎,同時(shí)也在嘗試業(yè)界最新的Flink,為未來做準(zhǔn)備。至于沒有使用阿里云商業(yè)版的“實(shí)時(shí)計(jì)算”,完全是出于成本考慮,在我們的場景下,自建JStorm集群的成本會遠(yuǎn)低于使用“實(shí)時(shí)計(jì)算”。
與核心的流式計(jì)算引擎相配套的中間件及數(shù)據(jù)存儲,使用的全部都是阿里云的產(chǎn)品,開箱即用、省去運(yùn)維煩惱。
3.2 實(shí)踐
3.2.1 消息隊(duì)列
消息隊(duì)列類的產(chǎn)品,主要使用了“日志服務(wù)SLS”和“消息隊(duì)列RocketMQ”兩種。
“日志服務(wù)SLS”這款產(chǎn)品,大于等于開源組合ELK,不僅有日志采集、搜索引擎、分析展示,還有消息隊(duì)列、監(jiān)控告警等功能,價(jià)格也很合理。尤其,這幾個(gè)功能的組合,可以輕松實(shí)現(xiàn)業(yè)務(wù)日志告警、nginx監(jiān)控等等使用傳統(tǒng)方式要開發(fā)很久的需求。如果單純作為消息隊(duì)列使用,還可以關(guān)閉索引,以節(jié)省費(fèi)用。
“消息隊(duì)列RocketMQ”的使用,主要看中了“定時(shí)延時(shí)消息”這一功能,可以實(shí)現(xiàn)很多定時(shí)延時(shí)任務(wù)的需求場景。
3.2.2 緩存
Redis,不需要過多介紹。
3.2.3 數(shù)據(jù)庫
阿里云包含了非常多的數(shù)據(jù)庫類產(chǎn)品,根據(jù)我們的實(shí)際需求,主要使用了以下幾款:
(1)RDS for MYSQL,與MYSQL一致,不需要過多介紹;
(2)PolarDb,阿里云自研的云原生數(shù)據(jù)庫,與RDS價(jià)格一致。對于我們使用者來說,它是一個(gè)可以支持更高讀并發(fā)、單實(shí)例容量更大的MYSQL。可以幫助我們建立離線數(shù)據(jù)中心,也解決了“所有數(shù)據(jù)庫的查詢都要先經(jīng)過Redis緩存”的問題,節(jié)省了少量Redis的費(fèi)用;
(3)TableStore,這款產(chǎn)品的初衷應(yīng)該是想要對標(biāo)開源的HBase,主要用于單一索引、龐大數(shù)據(jù)量、單條或小范圍檢索、高并發(fā)、低延時(shí)的查詢場景。在單條查詢時(shí),性能幾乎可以媲美Redis,而且也擁有TTL功能。被我們大量使用在用戶畫像、冪等校驗(yàn)等場景中;
其他產(chǎn)品,例如DRDS、AnalyticDb,或MongoDb、Elasticsearch等,由于目前的場景不需要,所以沒有投入使用。
數(shù)據(jù)展示
4.1 選型原則
前端產(chǎn)品的選型原則很簡單,由于我們的團(tuán)隊(duì)沒有專門的前端開發(fā),所以只能選擇阿里云的產(chǎn)品、或者免費(fèi)的、可對接的開源產(chǎn)品。
4.2 實(shí)踐
- 阿里云的可視化產(chǎn)品主要有兩個(gè):QuickBI和DataV。我們都有使用。
- QuickBI主要用于日常的數(shù)據(jù)展示、分析,幫助運(yùn)營、產(chǎn)品等部門進(jìn)行決策;
- DataV主要用于“非交互式”的數(shù)據(jù)展示場景,例如展會、大屏等。
云棲號案例庫:【點(diǎn)擊查看更多上云案例】
不知道怎么上云?看云棲號案例庫,了解不同行業(yè)不同發(fā)展階段的上云方案,助力你上云決策!
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
云棲號 - 上云就看云棲號
總結(jié)
以上是生活随笔為你收集整理的万师傅使用云产品,上手简单、开箱即用、省去运维烦恼的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进击的Kubernetes调度系统(一)
- 下一篇: 【开发者成长】阿里代码缺陷检测探索与实践