CMS是公司的一套用于發(fā)布內(nèi)容的系統(tǒng)兄纺,如APP用到的廣告大溜,活動(dòng),banner估脆,新聞等內(nèi)容發(fā)布系統(tǒng)钦奋,且為APP提供API。
遷移之前疙赠,所有的API都是直接訪問(wèn)數(shù)據(jù)庫(kù)付材,返回?cái)?shù)據(jù)給APP,邏輯相對(duì)簡(jiǎn)單圃阳,實(shí)現(xiàn)起來(lái)也很easy厌衔。但是發(fā)布起來(lái)有點(diǎn)麻煩,需要同時(shí)更新好幾臺(tái)服務(wù)器的站點(diǎn)捍岳,完全手工復(fù)制粘貼富寿,存在一定風(fēng)險(xiǎn)。
現(xiàn)在做SG遷移后锣夹,前后端分離页徐,前端采用目前很火的vue框架,后端和API均通過(guò)sg發(fā)布到host上银萍,采用分布式集群的方式運(yùn)行变勇。所有功能有獨(dú)立的hsf服務(wù),互不干擾贴唇。發(fā)布過(guò)程也相對(duì)簡(jiǎn)單高效了不少贰锁。
當(dāng)然,上面只是我自己的理解滤蝠,有錯(cuò)的地方豌熄,還希望同學(xué)們指出來(lái)。
做sg遷移物咳,首先需要做的是锣险,在配置中心配置相應(yīng)的集群蹄皱,節(jié)點(diǎn),進(jìn)程芯肤,包含一個(gè)host巷折,三個(gè)站點(diǎn)(兩個(gè)API,一個(gè)前端) ?崖咨,站點(diǎn)的配置很容易锻拘,拷貝過(guò)來(lái)就是一個(gè)站點(diǎn),但是很費(fèi)勁击蹲,需要細(xì)心署拟。今天就遇到了一個(gè)問(wèn)題,在配置站點(diǎn)完成后歌豺,站點(diǎn)可正常瀏覽推穷,但是打開(kāi)各個(gè)功能模塊后卻顯示,無(wú)效的上下文类咧,或者是token過(guò)期馒铃。檢查了配置中心,配置節(jié)點(diǎn)沒(méi)錯(cuò)啊痕惋,webconfig也對(duì)啊区宇,咋回事啊值戳?
想了很久议谷,后來(lái)請(qǐng)教了同事,才知道述寡,token過(guò)期柿隙,一般都是因?yàn)閞edis連接池配置有問(wèn)題叶洞。于是鲫凶,趕緊從其他站點(diǎn)copy了一個(gè)過(guò)來(lái)對(duì)比,才發(fā)現(xiàn)果然如此啊衩辟。在配置的時(shí)候只關(guān)注hostid去了螟炫,卻沒(méi)想到redis的問(wèn)題。改好后艺晴,果然不再報(bào)token過(guò)期的問(wèn)題昼钻。
好吧,這算是過(guò)了一關(guān)封寞。緊接著然评,按模塊測(cè)試。發(fā)現(xiàn)模塊加載不了數(shù)據(jù)狈究,顯示超時(shí)碗淌。第一反應(yīng)是數(shù)據(jù)庫(kù)配置有問(wèn)題,檢查一下果然是,好吧亿眠,第一次部署碎罚,有點(diǎn)不熟,安慰自己一下纳像,實(shí)際上就是不仔細(xì)熬A摇!>怪骸憔购!
接下來(lái)繼續(xù),尼瑪潭兽,咋回事呢倦始?還是加載不了數(shù)據(jù)啊山卦!
讓我現(xiàn)在捋一捋鞋邑,SG遷移的步驟:
1.新增一個(gè)HSF 和兩個(gè)SG的服務(wù)容器
2.將三個(gè)容器的信息注冊(cè)到配置中心,在配置中心保證hostid,以及其物理地址與服務(wù)器地址保持一致账蓉。
3.sg站點(diǎn)和host的配置保證幾點(diǎn)枚碗,redis連接池地址正確,數(shù)據(jù)庫(kù)地址正確铸本、MQ地址正確
4.hsf服務(wù)和sg的配置節(jié)點(diǎn)已在配置中心注冊(cè)(因?yàn)樽?cè)信息較多肮雨,我們通過(guò)SQL腳本來(lái)創(chuàng)建)
5.sg和hsf的公共服務(wù)包已發(fā)布
以上這五點(diǎn)應(yīng)該夠了,仔仔細(xì)細(xì)的核對(duì)了一番箱玷,沒(méi)檢查出啥毛病怨规,但是,host仍然沒(méi)有接受到前端的請(qǐng)求锡足。只能未完待續(xù)了波丰,明天再請(qǐng)教。
ps:這是一篇跟測(cè)試不怎么相關(guān)的記錄性隨筆舶得,可能過(guò)于流水賬掰烟,且問(wèn)題還沒(méi)得到解決,但是沐批,不妨礙它會(huì)成為我以后工作中的一份寶貴財(cái)富纫骑,誰(shuí)不是慢慢成長(zhǎng)的呢?
----------------------------------------------------------------------------------------------------------------------------------------------------
華麗麗的分割線
今天早上又重新確認(rèn)了一下問(wèn)題所在九孩,說(shuō)出來(lái)真有點(diǎn)讓人哭笑不得先馆。原因居然是因?yàn)镠OST的端口沒(méi)開(kāi)!L杀颉C呵健g偷住!7妗8鲞蟆!I柙ぁa慵摺!1钫怼魄梯!
想想也是醉了!
其實(shí)也應(yīng)該想到這個(gè)問(wèn)題宾符,從前端發(fā)過(guò)來(lái)的請(qǐng)求酿秸,后端一直沒(méi)有響應(yīng),排除掉數(shù)據(jù)連接的問(wèn)題魏烫,也只有端口的問(wèn)題了辣苏。這個(gè)問(wèn)題,也是我忽略了哄褒。這個(gè)端口之前開(kāi)過(guò)且是正常運(yùn)行的稀蟋,所以大意了。往往越是想當(dāng)然的地方呐赡,是越容易忽視退客!
不過(guò),這樣一搗鼓链嘀,也是好事一件萌狂,至少整個(gè)遷移的過(guò)程算是了解了,掌握了怀泊。什么事情茫藏,不自己動(dòng)手做一做,永遠(yuǎn)都GET不到點(diǎn)子上呀包个。
好事刷允!
-----------------------------------------------------------------------------------------------------------------------------------------------------
為什么要采用VUE+HSF+SG框架冤留?
對(duì)于傳統(tǒng)的程序 可以不用sg和hsf 把所有的邏輯寫(xiě)到一個(gè)站點(diǎn)里 提供webapi給別人調(diào)用 把業(yè)務(wù)邏輯的實(shí)現(xiàn) 寫(xiě)的站點(diǎn)的dll里 如果有數(shù)據(jù)庫(kù) 就訪問(wèn)數(shù)據(jù)庫(kù)碧囊,但是這樣 擴(kuò)展起來(lái)很難 負(fù)載均衡很難 服務(wù)治理很難 流量控制 安全控制都很難,如果系統(tǒng)很復(fù)雜 就會(huì)越寫(xiě)越困難纤怒。
采用VUE+HSF+SG后糯而,業(yè)務(wù)抽象出多層之后 業(yè)務(wù)邏輯很清晰 模塊間調(diào)用簡(jiǎn)單很多 服務(wù)能力擴(kuò)展起來(lái)也很容易 直接加host就是了 平滑擴(kuò)展,實(shí)際上就是實(shí)現(xiàn)分層泊窘,讓模塊更清晰化熄驼。
-----------------------------------------------------------------------------------------------------------------------------------------------------
HSF和SG的概念
對(duì)于HSF 來(lái)說(shuō) HSF服務(wù)是注冊(cè)在集群里 HSF的Host也是注冊(cè)在集群里 所以當(dāng)發(fā)布一個(gè)HSF服務(wù)的時(shí)候 HSF的管理器(這樣說(shuō)不嚴(yán)謹(jǐn) )就會(huì)判斷這個(gè)服務(wù)應(yīng)該發(fā)布到自己所在集群的Host里像寒,Host作為一個(gè)服務(wù)的容器 就會(huì)把dll 加載起來(lái)。(所以瓜贾,每發(fā)布一次HSF诺祸,HOST都需要重啟加載一次最新的HSF)
SG也是同樣的道理 但是對(duì)于SG 來(lái)說(shuō) 它不是獨(dú)立的容器 是寄托在IIS之上的. 只不過(guò),HSF是一個(gè)服務(wù)層的容器 SG是webapi層的容器祭芦。HSF是內(nèi)部調(diào)用 是方法級(jí) SG是對(duì)外提供的筷笨,可以理解為SG相當(dāng)于是一個(gè)對(duì)外的接口。