我的物联网项目(十二) 单体应用架构不行?
單體應(yīng)用架構(gòu)在創(chuàng)業(yè)型項目里面是非常合適的,畢竟它主要的擔(dān)當(dāng)還是在驗證創(chuàng)業(yè)模式以及迅速功能實現(xiàn),所以它從開發(fā)到部署,在少量開發(fā)人員的基礎(chǔ)上能非常減少成本,主要是門檻低,開發(fā)效率也非常高。到目前為此,這個物聯(lián)網(wǎng)項目從開發(fā)開始到現(xiàn)在線上運行大概經(jīng)歷了5個月左右的時間,訂單數(shù)據(jù)從日訂單幾百到現(xiàn)在的七八萬,在應(yīng)用層本身來說并沒什么壓力瓶頸,中間主要升級了數(shù)據(jù)庫RDS的配置,由原來的4核8G升級到了8核16G,對數(shù)據(jù)庫稍微做了些優(yōu)化,依然跑到很穩(wěn)定。公司從實施想法開始,到目前半年的時間里面,不斷的總結(jié)創(chuàng)業(yè)思路和改變策略,所以開發(fā)的業(yè)務(wù)變化由不斷的“試誤型”開始趨向于明確“清晰型”,而且業(yè)務(wù)垂直方向也越來越深,由自己做投放商急迫需要轉(zhuǎn)型做招商平臺城市合伙人,而且廣告內(nèi)容,和線下門店信息推廣也在融合,其實和我之前的電商O2O很類似,一開始自己做個簡單交易網(wǎng)站賣東西,做著做著就做B2C,B2B平臺,其它的商家也進(jìn)入這個平臺開網(wǎng)店,將線下的信息廣告推廣也融合進(jìn)來,大概套路都一樣,無非是前期自己先驗證模式,覺得可行就做平臺告訴別人應(yīng)該怎么怎么做。公司在半年的時間里面也各種融資好幾輪,達(dá)到了好幾千萬級別的融資,接著而來的對軟件平臺的需求和要求也越來越高。想法誰都有,關(guān)鍵是要去實施,互聯(lián)網(wǎng)游戲的規(guī)則就是這樣,技術(shù)實施永遠(yuǎn)跟著產(chǎn)品想法的屁股在后面追。
單體應(yīng)用架構(gòu)在項目這幾個月業(yè)務(wù)變化頻繁,不斷迭代的過程中,的確也出現(xiàn)了很多問題。最開始,業(yè)務(wù)比較簡單,你寫同一個工程里面寫代碼,我也在同一個工程里面寫代碼,測試完畢后,我這邊就直接打成個war包(因為線上部署在tomcat的ROOT目錄里面,我有時候直接在本地tomcat的ROOT里面解壓縮成zip包),丟到線上服務(wù)器,簡單方便,速度快的很,這種發(fā)包方式我們簡稱“全量部署”,哪怕你這次改一點點需求只動了一個類里面的一行代碼,我也是將所有的代碼打包一次,簡單業(yè)務(wù)簡單方法處理是沒有問題,隨著業(yè)務(wù)需求的累加,并且不斷的迭代,這種打包方法隱患慢慢多了起來,有幾次線上發(fā)包“全量部署”,出現(xiàn)之前OK的功能代碼不OK(其實這次發(fā)布不涉及到這些功能),細(xì)查之,知道開發(fā)人員提交了沒測試的代碼,就算后面非常謹(jǐn)慎和寧愿操作麻煩想保持SVN代碼的“純潔性”,但是風(fēng)險問題依然存在,后面一段時間,我改用了“增量部署”,就是這次改掉了哪幾個類,哪幾個文件,在發(fā)包文檔里面一 一描述,發(fā)包的時候只去測試好的測試環(huán)境拿下來這幾個文件,傳到正式環(huán)境里面,稍微控了下風(fēng)險。
當(dāng)然,單體應(yīng)用架構(gòu)本身對應(yīng)用服務(wù)器的性能消耗也沒有做到很好的水平擴展,如果后期線上量大,我也只能單臺的去升級配置,越到后面升級配置越貴,當(dāng)然,我們目前的業(yè)務(wù)還沒有這么夸張,但是隨著業(yè)務(wù)的擴展,肯定無法避免這些東西。另外,數(shù)據(jù)庫隨著業(yè)務(wù)的水平擴展,業(yè)務(wù)的粒度細(xì)分,也不可能所有的表都在同一個數(shù)據(jù)庫里面,這個也要求后期提前做好分庫分表的架構(gòu)準(zhǔn)備。
我們生在一個微服務(wù)四處橫行的年代,基本上屬于那種不玩單體應(yīng)用架構(gòu),就玩微服務(wù)架構(gòu),不玩微服務(wù)架構(gòu),就玩單體應(yīng)用架構(gòu)。如果再倒退10年,可能就玩SOA面向服務(wù)企業(yè)架構(gòu),雖然和微服務(wù)最終實現(xiàn)的目標(biāo)差不多,但是SOA表現(xiàn)的方式更多是以系統(tǒng)級別的形式表現(xiàn),系統(tǒng)與系統(tǒng)的交互,所以更多的是通過傳統(tǒng)的webservice的調(diào)用來滿足按照業(yè)務(wù)的拆分。好在當(dāng)今有微服務(wù)眾多的成熟框架,實現(xiàn)起來更加靈活簡單,而且入門也相當(dāng)簡單,更主要的開發(fā)起來比SOA更加輕量級。并且這些成熟框架本身集成了微服務(wù)中需要解決的基礎(chǔ)共用的東西在里面,比如微服注冊與發(fā)現(xiàn),路由網(wǎng)關(guān),客戶端負(fù)載均衡,傳輸協(xié)議等等。話雖如此,但是真正用微服務(wù)從頭到尾開發(fā)過幾個項目的開發(fā)人員并不多,我們連續(xù)好幾個月也一直在招聘對微服務(wù),服務(wù)化相對熟悉的人,也寥寥無幾,來面試的人可能也就是在書上看了些資料,搭建個簡單的框架,但是真正沉淀在實際業(yè)務(wù)場景用微服務(wù)開發(fā)的人員一直沒遇到。
經(jīng)過再三考慮,我們決定使用springcloud來開發(fā)V2.0版本,業(yè)務(wù)拆分全部微服務(wù)化實現(xiàn),V1.0單體應(yīng)用架構(gòu)在這段時間里會小范圍維護(hù),集中精力大概用2,3個月時間完成V2.0版本的迭代,腦袋一蒙,后面的大把的坑在等著我們,我們也準(zhǔn)備好了打場硬仗。
轉(zhuǎn)載于:https://www.cnblogs.com/dgcjiayou/p/7886716.html
總結(jié)
以上是生活随笔為你收集整理的我的物联网项目(十二) 单体应用架构不行?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物理层协议
- 下一篇: 计算机基础中的分层教学,分层教学法在计算