CMS是公司的一套用于發(fā)布內(nèi)容的系統(tǒng),如APP用到的廣告,活動,banner,新聞等內(nèi)容發(fā)布系統(tǒng),且為APP提供API。
遷移之前,所有的API都是直接訪問數(shù)據(jù)庫,返回數(shù)據(jù)給APP,邏輯相對簡單,實現(xiàn)起來也很easy。但是發(fā)布起來有點麻煩,需要同時更新好幾臺服務(wù)器的站點,完全手工復(fù)制粘貼,存在一定風(fēng)險。
現(xiàn)在做SG遷移后,前后端分離,前端采用目前很火的vue框架,后端和API均通過sg發(fā)布到host上,采用分布式集群的方式運行。所有功能有獨立的hsf服務(wù),互不干擾。發(fā)布過程也相對簡單高效了不少。
當(dāng)然,上面只是我自己的理解,有錯的地方,還希望同學(xué)們指出來。
做sg遷移,首先需要做的是,在配置中心配置相應(yīng)的集群,節(jié)點,進程,包含一個host,三個站點(兩個API,一個前端) ?,站點的配置很容易,拷貝過來就是一個站點,但是很費勁,需要細(xì)心。今天就遇到了一個問題,在配置站點完成后,站點可正常瀏覽,但是打開各個功能模塊后卻顯示,無效的上下文,或者是token過期。檢查了配置中心,配置節(jié)點沒錯啊,webconfig也對啊,咋回事???
想了很久,后來請教了同事,才知道,token過期,一般都是因為redis連接池配置有問題。于是,趕緊從其他站點copy了一個過來對比,才發(fā)現(xiàn)果然如此啊。在配置的時候只關(guān)注hostid去了,卻沒想到redis的問題。改好后,果然不再報token過期的問題。
好吧,這算是過了一關(guān)。緊接著,按模塊測試。發(fā)現(xiàn)模塊加載不了數(shù)據(jù),顯示超時。第一反應(yīng)是數(shù)據(jù)庫配置有問題,檢查一下果然是,好吧,第一次部署,有點不熟,安慰自己一下,實際上就是不仔細(xì)?。。?!
接下來繼續(xù),尼瑪,咋回事呢?還是加載不了數(shù)據(jù)?。?/p>
讓我現(xiàn)在捋一捋,SG遷移的步驟:
1.新增一個HSF 和兩個SG的服務(wù)容器
2.將三個容器的信息注冊到配置中心,在配置中心保證hostid,以及其物理地址與服務(wù)器地址保持一致。
3.sg站點和host的配置保證幾點,redis連接池地址正確,數(shù)據(jù)庫地址正確、MQ地址正確
4.hsf服務(wù)和sg的配置節(jié)點已在配置中心注冊(因為注冊信息較多,我們通過SQL腳本來創(chuàng)建)
5.sg和hsf的公共服務(wù)包已發(fā)布
以上這五點應(yīng)該夠了,仔仔細(xì)細(xì)的核對了一番,沒檢查出啥毛病,但是,host仍然沒有接受到前端的請求。只能未完待續(xù)了,明天再請教。
ps:這是一篇跟測試不怎么相關(guān)的記錄性隨筆,可能過于流水賬,且問題還沒得到解決,但是,不妨礙它會成為我以后工作中的一份寶貴財富,誰不是慢慢成長的呢?
----------------------------------------------------------------------------------------------------------------------------------------------------
華麗麗的分割線
今天早上又重新確認(rèn)了一下問題所在,說出來真有點讓人哭笑不得。原因居然是因為HOST的端口沒開?。。。。。。。。。。。?!
想想也是醉了!
其實也應(yīng)該想到這個問題,從前端發(fā)過來的請求,后端一直沒有響應(yīng),排除掉數(shù)據(jù)連接的問題,也只有端口的問題了。這個問題,也是我忽略了。這個端口之前開過且是正常運行的,所以大意了。往往越是想當(dāng)然的地方,是越容易忽視!
不過,這樣一搗鼓,也是好事一件,至少整個遷移的過程算是了解了,掌握了。什么事情,不自己動手做一做,永遠(yuǎn)都GET不到點子上呀。
好事!
-----------------------------------------------------------------------------------------------------------------------------------------------------
為什么要采用VUE+HSF+SG框架?
對于傳統(tǒng)的程序 可以不用sg和hsf 把所有的邏輯寫到一個站點里 提供webapi給別人調(diào)用 把業(yè)務(wù)邏輯的實現(xiàn) 寫的站點的dll里 如果有數(shù)據(jù)庫 就訪問數(shù)據(jù)庫,但是這樣 擴展起來很難 負(fù)載均衡很難 服務(wù)治理很難 流量控制 安全控制都很難,如果系統(tǒng)很復(fù)雜 就會越寫越困難。
采用VUE+HSF+SG后,業(yè)務(wù)抽象出多層之后 業(yè)務(wù)邏輯很清晰 模塊間調(diào)用簡單很多 服務(wù)能力擴展起來也很容易 直接加host就是了 平滑擴展,實際上就是實現(xiàn)分層,讓模塊更清晰化。
-----------------------------------------------------------------------------------------------------------------------------------------------------
HSF和SG的概念
對于HSF 來說 HSF服務(wù)是注冊在集群里 HSF的Host也是注冊在集群里 所以當(dāng)發(fā)布一個HSF服務(wù)的時候 HSF的管理器(這樣說不嚴(yán)謹(jǐn) )就會判斷這個服務(wù)應(yīng)該發(fā)布到自己所在集群的Host里,Host作為一個服務(wù)的容器 就會把dll 加載起來。(所以,每發(fā)布一次HSF,HOST都需要重啟加載一次最新的HSF)
SG也是同樣的道理 但是對于SG 來說 它不是獨立的容器 是寄托在IIS之上的. 只不過,HSF是一個服務(wù)層的容器 SG是webapi層的容器。HSF是內(nèi)部調(diào)用 是方法級 SG是對外提供的,可以理解為SG相當(dāng)于是一個對外的接口。