本發(fā)明涉及能源云服務(wù)技術(shù)領(lǐng)域,具體為一種實(shí)現(xiàn)能源云服務(wù)系統(tǒng)應(yīng)用模式快速轉(zhuǎn)換的方法。
能源云平臺(tái)在設(shè)計(jì)之初,就考慮到要面向不同的業(yè)務(wù)模式和用戶規(guī)?!?dāng)部署于小規(guī)模企業(yè)用戶內(nèi)部,只由該企業(yè)使用時(shí),由于小規(guī)模企業(yè)只有少量的接入設(shè)備,數(shù)據(jù)量和并發(fā)處理的業(yè)務(wù)都不多。對(duì)于這種用戶,理想的狀態(tài)是只需要一臺(tái)服務(wù)器即可運(yùn)行能源云平臺(tái);而對(duì)于平臺(tái)型運(yùn)營(yíng)的業(yè)務(wù)模式,將在同一個(gè)平臺(tái)內(nèi),為數(shù)百家甚至更多的企業(yè)客戶提供服務(wù)。數(shù)據(jù)量和并發(fā)業(yè)務(wù)數(shù)量都很龐大。
這兩種應(yīng)用場(chǎng)景下,適合采用的技術(shù)差異非常大,比如,大型平臺(tái)適合采用大規(guī)模、高并發(fā)的并行計(jì)算數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和計(jì)算數(shù)據(jù),采用數(shù)十個(gè)甚至更多的服務(wù)器同時(shí)存儲(chǔ)并計(jì)算數(shù)據(jù)。而對(duì)于一個(gè)數(shù)據(jù)量不是很大企業(yè)內(nèi)部使用的情況來(lái)說(shuō),采用并行數(shù)據(jù)庫(kù)就過(guò)于龐大和復(fù)雜了,如果只有一臺(tái)服務(wù)器,不但發(fā)揮不出高并發(fā)數(shù)據(jù)庫(kù)的優(yōu)勢(shì),還會(huì)導(dǎo)致系統(tǒng)的維護(hù)難度大大增加,需要專門的并行數(shù)據(jù)庫(kù)維護(hù)團(tuán)隊(duì),對(duì)于一般的企業(yè)來(lái)說(shuō),這個(gè)維護(hù)成本根本無(wú)法承受。
對(duì)于企業(yè)內(nèi)部獨(dú)立使用的場(chǎng)景,適合采用成熟、易用的傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),足夠處理企業(yè)內(nèi)部的數(shù)據(jù)計(jì)算,并且維護(hù)簡(jiǎn)單,部署和維護(hù)成本很低。而如果本系統(tǒng)為這種應(yīng)用場(chǎng)景而設(shè)計(jì),采用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),在作為大型平臺(tái)應(yīng)用時(shí),數(shù)據(jù)存儲(chǔ)量和計(jì)算的響應(yīng)速度都完全達(dá)不到要求,成為一套無(wú)法使用的擺設(shè)。
如果為兩種場(chǎng)景,采用不同的模式進(jìn)行設(shè)計(jì)和開(kāi)發(fā),使用兩套獨(dú)立的代碼,又無(wú)異于開(kāi)發(fā)了兩套系統(tǒng)。開(kāi)發(fā)量及今后升級(jí)修改、測(cè)試的工作量和周期都翻倍增加,為此,我們提出一種實(shí)現(xiàn)能源云服務(wù)系統(tǒng)應(yīng)用模式快速轉(zhuǎn)換的方法。
本發(fā)明的目的在于提供一種實(shí)現(xiàn)能源云服務(wù)系統(tǒng)應(yīng)用模式快速轉(zhuǎn)換的方法,以解決上述背景技術(shù)中提出的問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:一種實(shí)現(xiàn)能源云服務(wù)系統(tǒng)應(yīng)用模式快速轉(zhuǎn)換的方法,包括如下步驟:
(1)建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;
(2)建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;
(3)建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非??旖荩划?dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
優(yōu)選的,所述步驟(1)中提到的兼容方案是指不使用自增長(zhǎng)id,由業(yè)務(wù)系統(tǒng)創(chuàng)建一個(gè)全局id生成池,該池負(fù)責(zé)確保生成id的唯一性,并能在消費(fèi)者取走一個(gè)id后,能夠立即生成下一個(gè)id;同時(shí)要引入同步鎖機(jī)制,以確保完全并發(fā)的取id操作不會(huì)取出相同的id。
優(yōu)選的,所述步驟(1)中提到的兼容方案是指避免使用postgresql8.4以后新增的技術(shù)手段;比如對(duì)json數(shù)據(jù)格式的使用;采用子表的方式來(lái)存儲(chǔ)數(shù)據(jù)對(duì)象,而不是用json格式將其存放在主表的單個(gè)字段中。
優(yōu)選的,所述步驟(1)中提到的兼容方案是指對(duì)分表方式進(jìn)行設(shè)計(jì),使其符合greenplum在分布式存儲(chǔ)及mapreduce運(yùn)算時(shí),能夠最大限度的均勻分布命中的數(shù)據(jù),進(jìn)而發(fā)揮分布式并行數(shù)據(jù)庫(kù)的優(yōu)勢(shì)。
優(yōu)選的,bwin必贏官方授權(quán)平臺(tái)所述步驟(1)中提到的兼容方案是指在面向小規(guī)模用戶時(shí),只需要選用postgresql數(shù)據(jù)庫(kù)安裝部署即可;該數(shù)據(jù)庫(kù)維護(hù)工作量極小,不需要配備專門的dba;而當(dāng)作為大型平臺(tái)運(yùn)營(yíng)時(shí),可以搭建數(shù)十個(gè)節(jié)點(diǎn)的greenplum分布式并行數(shù)據(jù)庫(kù),并配備專門的運(yùn)維團(tuán)隊(duì)進(jìn)行管理和支持。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容,當(dāng)部署于小規(guī)模企業(yè)時(shí),只需要保留一個(gè)業(yè)務(wù)邏輯處理節(jié)點(diǎn)即可,使用容器復(fù)制即可部署,幾無(wú)工作量;而當(dāng)應(yīng)用于大規(guī)模企業(yè)或眾多企業(yè)共享的大型平臺(tái)時(shí),可以快速通過(guò)docker復(fù)制部署數(shù)量眾多的業(yè)務(wù)邏輯處理節(jié)點(diǎn),通過(guò)采用kafka作為信息流收發(fā)的組件,由于kafka本身就是面向動(dòng)態(tài)伸縮的云計(jì)算模式設(shè)計(jì)的,可以非常方便地組建節(jié)點(diǎn)集群,本發(fā)明解決了能源云平臺(tái)不能同時(shí)滿足應(yīng)用于眾多企業(yè)共用的平臺(tái)運(yùn)營(yíng)模式和中小規(guī)模企業(yè)內(nèi)部使用模式的問(wèn)題。
下面對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明提供一種技術(shù)方案:一種實(shí)現(xiàn)能源云服務(wù)系統(tǒng)應(yīng)用模式快速轉(zhuǎn)換的方法,包括如下步驟:
?。?)建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;
?。?)建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;
?。?)建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非??旖?;當(dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
首先建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;然后建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;最后建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非??旖?;當(dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
步驟(1)中提到的兼容方案是指不使用自增長(zhǎng)id,由業(yè)務(wù)系統(tǒng)創(chuàng)建一個(gè)全局id生成池,該池負(fù)責(zé)確保生成id的唯一性,并能在消費(fèi)者取走一個(gè)id后,能夠立即生成下一個(gè)id;同時(shí)要引入同步鎖機(jī)制,以確保完全并發(fā)的取id操作不會(huì)取出相同的id。
首先建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;其中兼容方案是指不使用自增長(zhǎng)id,由業(yè)務(wù)系統(tǒng)創(chuàng)建一個(gè)全局id生成池,該池負(fù)責(zé)確保生成id的唯一性,并能在消費(fèi)者取走一個(gè)id后,能夠立即生成下一個(gè)id;同時(shí)要引入同步鎖機(jī)制,以確保完全并發(fā)的取id操作不會(huì)取出相同的id;然后建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;最后建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非??旖荩划?dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
步驟(1)中提到的兼容方案是指避免使用postgresql8.4以后新增的技術(shù)手段;比如對(duì)json數(shù)據(jù)格式的使用;采用子表的方式來(lái)存儲(chǔ)數(shù)據(jù)對(duì)象,而不是用json格式將其存放在主表的單個(gè)字段中。
首先建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;其中兼容方案包括:第一方面,不使用自增長(zhǎng)id,由業(yè)務(wù)系統(tǒng)創(chuàng)建一個(gè)全局id生成池,該池負(fù)責(zé)確保生成id的唯一性,并能在消費(fèi)者取走一個(gè)id后,能夠立即生成下一個(gè)id;同時(shí)要引入同步鎖機(jī)制,以確保完全并發(fā)的取id操作不會(huì)取出相同的id;第二方面,避免使用postgresql8.4以后新增的技術(shù)手段;比如對(duì)json數(shù)據(jù)格式的使用;采用子表的方式來(lái)存儲(chǔ)數(shù)據(jù)對(duì)象,而不是用json格式將其存放在主表的單個(gè)字段中;然后建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;最后建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非??旖荩划?dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
步驟(1)中提到的兼容方案是指對(duì)分表方式進(jìn)行設(shè)計(jì),使其符合greenplum在分布式存儲(chǔ)及mapreduce運(yùn)算時(shí),能夠最大限度的均勻分布命中的數(shù)據(jù),進(jìn)而發(fā)揮分布式并行數(shù)據(jù)庫(kù)的優(yōu)勢(shì)。
首先建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;其中兼容方案包括:第一方面,bwin必贏官方授權(quán)平臺(tái)不使用自增長(zhǎng)id,由業(yè)務(wù)系統(tǒng)創(chuàng)建一個(gè)全局id生成池,該池負(fù)責(zé)確保生成id的唯一性,并能在消費(fèi)者取走一個(gè)id后,能夠立即生成下一個(gè)id;同時(shí)要引入同步鎖機(jī)制,以確保完全并發(fā)的取id操作不會(huì)取出相同的id;第二方面,避免使用postgresql8.4以后新增的技術(shù)手段;比如對(duì)json數(shù)據(jù)格式的使用;采用子表的方式來(lái)存儲(chǔ)數(shù)據(jù)對(duì)象,而不是用json格式將其存放在主表的單個(gè)字段中;第三方面,對(duì)分表方式進(jìn)行設(shè)計(jì),使其符合greenplum在分布式存儲(chǔ)及mapreduce運(yùn)算時(shí),能夠最大限度的均勻分布命中的數(shù)據(jù),進(jìn)而發(fā)揮分布式并行數(shù)據(jù)庫(kù)的優(yōu)勢(shì);然后建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;最后建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非??旖荩划?dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
步驟(1)中提到的兼容方案是指在面向小規(guī)模用戶時(shí),只需要選用postgresql數(shù)據(jù)庫(kù)安裝部署即可;該數(shù)據(jù)庫(kù)維護(hù)工作量極小,不需要配備專門的dba;而當(dāng)作為大型平臺(tái)運(yùn)營(yíng)時(shí),可以搭建數(shù)十個(gè)節(jié)點(diǎn)的greenplum分布式并行數(shù)據(jù)庫(kù),并配備專門的運(yùn)維團(tuán)隊(duì)進(jìn)行管理和支持。
首先建立能在兩種模式間快速轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)和計(jì)算機(jī)制,為小規(guī)模運(yùn)行的關(guān)系型數(shù)據(jù)庫(kù)選擇postgresql,采用兼容8.4版本的語(yǔ)法,并作出向greenplum的兼容方案,就可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容;其中兼容方案包括:第一方面,不使用自增長(zhǎng)id,由業(yè)務(wù)系統(tǒng)創(chuàng)建一個(gè)全局id生成池,該池負(fù)責(zé)確保生成id的唯一性,并能在消費(fèi)者取走一個(gè)id后,能夠立即生成下一個(gè)id;同時(shí)要引入同步鎖機(jī)制,以確保完全并發(fā)的取id操作不會(huì)取出相同的id;第二方面,避免使用postgresql8.4以后新增的技術(shù)手段;比如對(duì)json數(shù)據(jù)格式的使用;采用子表的方式來(lái)存儲(chǔ)數(shù)據(jù)對(duì)象,而不是用json格式將其存放在主表的單個(gè)字段中;第三方面,對(duì)分表方式進(jìn)行設(shè)計(jì),使其符合greenplum在分布式存儲(chǔ)及mapreduce運(yùn)算時(shí),能夠最大限度的均勻分布命中的數(shù)據(jù),進(jìn)而發(fā)揮分布式并行數(shù)據(jù)庫(kù)的優(yōu)勢(shì);第四方面,在面向小規(guī)模用戶時(shí),只需要選用postgresql數(shù)據(jù)庫(kù)安裝部署即可;該數(shù)據(jù)庫(kù)維護(hù)工作量極小,不需要企業(yè)配備專門的dba;而當(dāng)作為大型平臺(tái)運(yùn)營(yíng)時(shí),可以搭建數(shù)十個(gè)節(jié)點(diǎn)的greenplum分布式并行數(shù)據(jù)庫(kù),并配備專門的運(yùn)維團(tuán)隊(duì)進(jìn)行管理和支持;然后建立能在兩種模式間快速轉(zhuǎn)換的業(yè)務(wù)邏輯處理能力機(jī)制,采用tomcat作為處理業(yè)務(wù)邏輯運(yùn)算的web容器,并采用nginx作為前端負(fù)載均衡器,將業(yè)務(wù)請(qǐng)求均勻的分散到各個(gè)tomcat實(shí)例上,同時(shí),為了便于快速部署及伸縮,將nginx,tomcat分別采用docker容器進(jìn)行部署;當(dāng)需要擴(kuò)容節(jié)點(diǎn),增減業(yè)務(wù)處理單元的數(shù)量時(shí),只需要快速?gòu)?fù)制docker容器即可,無(wú)需反復(fù)安裝和配置;最后建立能在兩種模式間快速轉(zhuǎn)換的信息流收發(fā)機(jī)制,采用kafka作為信息流收發(fā)的組件,接收來(lái)自各個(gè)accs服務(wù)器傳輸?shù)拇罅繑?shù)據(jù),以及向accs服務(wù)器下發(fā)的數(shù)據(jù);將管理集群的zookeeper和一個(gè)最小集合(3個(gè)節(jié)點(diǎn))的kafka組成一個(gè)最小集群,并將其部署到docker容器中;當(dāng)小規(guī)模部署時(shí),只需要復(fù)制一個(gè)容器到運(yùn)行環(huán)境中即可完成部署,非常快捷;當(dāng)作為大型云平臺(tái)運(yùn)行時(shí),可以復(fù)制多個(gè)容器,并將新增容器中的kafka管理節(jié)點(diǎn)配置成原有的zookeeper即可完成擴(kuò)容;需要縮減節(jié)點(diǎn)時(shí),關(guān)閉需要縮減的節(jié)點(diǎn)即可,不需要額外操作。
本發(fā)明可以確保系統(tǒng)能在兩種模式的數(shù)據(jù)庫(kù)間完好兼容,當(dāng)部署于小規(guī)模企業(yè)時(shí),只需要保留一個(gè)業(yè)務(wù)邏輯處理節(jié)點(diǎn)即可,使用容器復(fù)制即可部署,幾無(wú)工作量;而當(dāng)應(yīng)用于大規(guī)模企業(yè)或眾多企業(yè)共享的大型平臺(tái)時(shí),可以快速通過(guò)docker復(fù)制部署數(shù)量眾多的業(yè)務(wù)邏輯處理節(jié)點(diǎn),通過(guò)采用kafka作為信息流收發(fā)的組件,由于kafka本身就是面向動(dòng)態(tài)伸縮的云計(jì)算模式設(shè)計(jì)的,可以非常方便地組建節(jié)點(diǎn)集群,本發(fā)明解決了能源云平臺(tái)不能同時(shí)滿足應(yīng)用于眾多企業(yè)共用的平臺(tái)運(yùn)營(yíng)模式和中小規(guī)模企業(yè)內(nèi)部使用模式的問(wèn)題。
盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對(duì)這些實(shí)施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同物限定。