java商城相關(guān)架構(gòu)演化

本系列文章主要是針對(duì)java商城相關(guān)架構(gòu)演化的介紹,不講解具體業(yè)務(wù)、技術(shù)等。

最近公司要搞商城,讓我多方咨詢,最后看了很多,要不就是代碼、表字段注釋不全,要不就是bug多,要么就是文檔缺少,最后決定自己開發(fā)一套商城。

下面是開發(fā)的一些心得體會(huì),權(quán)且記錄下來,給自己做個(gè)記錄把。

之前一直都是在從事電商相關(guān)和互聯(lián)網(wǎng)金融開發(fā),處理過億級(jí)數(shù)據(jù)量,所以被目前這家公司看重。

由于Java是開源的,最近幾年Hadoop等開源產(chǎn)品越來越成熟,而且是基于Java的,所以最終選擇Java最后后臺(tái)開發(fā)語言,現(xiàn)在前端是自己的前端工程師寫的JS,后期準(zhǔn)備改成前端是PHP,中間是Go語言,后臺(tái)服務(wù)器是Java,因?yàn)?/b>PHP寫前端很厲害,不過這個(gè)也是后期了。

控制層:這幾年springMVC發(fā)展的非常火,而且開發(fā)效率比較高,struts系列已經(jīng)完全沒落了,所以現(xiàn)階段選擇SrpingMVC。

視圖層:網(wǎng)上已經(jīng)有非常多的測試過JSP、freemarkder、velocity等,結(jié)果性能:velocity>freemarker>jsp,開發(fā)速度:velocity>freemarker>jsp

數(shù)據(jù)庫設(shè)計(jì):

? ? 1、關(guān)鍵的一個(gè)是絕對(duì)不能有外鍵強(qiáng)關(guān)聯(lián),我看到類似用hibernate產(chǎn)品的一些公司,全部都是強(qiáng)關(guān)聯(lián),那你以后想刪除一些數(shù)據(jù),那真是噩夢的,這個(gè)還不用說,查詢性能方面影響也是巨大的。

? ?2、分庫分表,這個(gè)必須要支持的,做互聯(lián)網(wǎng)數(shù)據(jù)量是非常的巨大的,如果開始就不能支持分庫分表,那么后期會(huì)至少花上千萬去做這事,最好一個(gè)例子就是當(dāng)當(dāng)網(wǎng),當(dāng)年很多事單庫的,到現(xiàn)在也沒有實(shí)現(xiàn)分庫分表,它們只能使用一些分區(qū)表架構(gòu),分區(qū)表本身就存在很大問題,比如擴(kuò)展性、數(shù)據(jù)量過億都是問題!!!!

? 3、分布式圖片服務(wù)器:我看到有些公司圖片還是上傳到項(xiàng)目根目錄的,這個(gè)真是噩夢,測試圖片就有15個(gè)G,你怎么玩???

數(shù)據(jù)庫選擇:

最好還是myslq,

? ?1、輕量

? ?2、開源(阿里的alisql就是MySQL改個(gè)名字)

? ?3、功能能滿足電商需求

搜索:選擇lucene較好,原因是他封裝的較好。

權(quán)限:對(duì)于電商來說不應(yīng)該設(shè)計(jì)的過于復(fù)雜,我認(rèn)為主要就兩張表就夠了,一個(gè)是角色Role表,一個(gè)是資源Resources表,然后用戶和角色通過中間表關(guān)聯(lián)下就OK了,角色里面有資源,很簡單的邏輯。

SpringSecurity和Apache Shiro都是基于RBAC的,但是兩者的R是不一樣的,Security是Role,Shiro是Resource,所以Security不能細(xì)粒度的控制權(quán)限,這里就不推薦大家使用了,建議有些公司使用這個(gè)做權(quán)限的換成Shiro或者自定義一套,也是非常簡單的。其實(shí)互聯(lián)網(wǎng)項(xiàng)目并不需要太多的權(quán)限校驗(yàn),因?yàn)槊總€(gè)項(xiàng)目模塊都是獨(dú)立的,這個(gè)就減去一塊權(quán)限校驗(yàn),剩下來才是真正的角色權(quán)限邏輯。

注:這里不推薦使用是因?yàn)槲抑饕褪墙巧刂疲鋵?shí)這些權(quán)限框架主要是授權(quán),如果你項(xiàng)目沒有授權(quán)需要,那不如不用,用了反而增加開發(fā)成本。

緩存:

1、數(shù)據(jù)緩存

?? 目前使用Redis,我看到有的公司使用的是memcache,這個(gè)10年前,就這屌樣,功能非常的簡陋不說,主要一個(gè)問題是會(huì)有死緩存,就是緩存怎么也清空不了,這個(gè)你想想就知道多悲劇了,商家修改了價(jià)格,怎么也改不了,最后只能關(guān)閉機(jī)器重啟。還有的公司使用的還是hibernate提供的ehcache,這個(gè)大家自行了解即可,關(guān)鍵是他做集群有問題,搞電商不可能是單機(jī)的,剛上線至少是2臺(tái)服務(wù)器。

2、圖片、文件等緩存

?? 訪問圖片下載、頁面下載也是非常耗費(fèi)帶寬的,那么怎么解決?

?? 圖片、文件(css、js、html靜態(tài)頁面)都需要做CDN緩存來解決,類似京東、淘寶都是通過替換文件的方式,比如你第一次訪問了,這個(gè)文件在你們本機(jī)電腦設(shè)置的時(shí)間是永久保存方式,不過期的,那么要替換css、js怎么玩?換一個(gè)文件名呀,看著惡心不?但是訪問速度確實(shí)非常快的。。。

靜態(tài)化:一般模版語言都可以實(shí)現(xiàn)靜態(tài)化,可以實(shí)現(xiàn)全站60%都是靜態(tài)頁面,數(shù)據(jù)從集群Redis緩存中讀取。

服務(wù)化:目前使用dubbo,雖然阿里開源的產(chǎn)品代碼質(zhì)量被人詬病,但是阿里的東西經(jīng)受住高并發(fā)、大流量的考驗(yàn),即時(shí)老外的東西再好,也沒有這樣的場景去考驗(yàn),雖然權(quán)衡后選擇dubbo。

分布式圖片服務(wù)器:這個(gè)也是非常重要的環(huán)節(jié),目前我們測試系統(tǒng)都有15個(gè)G的圖片了!!!!線上估計(jì)會(huì)是以T計(jì)算的,肯定是需要獨(dú)立的圖片服務(wù)器的。目前推薦使用FastDFS,這個(gè)還不錯(cuò)--圖片、壓縮包之類的文件都可以上傳。

集群、分布式:前面的分庫分表、服務(wù)化、圖片服務(wù)器都是為集群、負(fù)載、分布式做準(zhǔn)備的,業(yè)務(wù)層用dubbo做分布式服務(wù)。

負(fù)載均衡:使用Nginx來做高可用負(fù)載,給予CDN切換方式做高可用,一般公司市值30億美金的都能滿足。在以后的話就用F5吧。。。。。收費(fèi)的嘛,你懂得。。。

下面整理下整個(gè)架構(gòu)吧:

? ? 展示層/控制層:springMVC

??? 持久層:本團(tuán)隊(duì)開發(fā)的mybatis增強(qiáng)版本(程序員幾乎不需要寫SQL、配置等)

? ??數(shù)據(jù)庫:MySQL/Oracle,支持主從復(fù)制、讀寫分離、多機(jī)備份、支持分庫分表

??? 緩存機(jī)制:redis,CDN圖片緩存,也是支持熱備份、高并發(fā)

??? 靜態(tài)化機(jī)制:velocity/freemarker等模版語言

? ? 分布式圖片服務(wù)器:FastDFS

? ?

??? 搜索引擎: Lucene?? ??

? ? 服務(wù)器:Linux

? ? 中間件:tomcat、nginx,還有其他N多的支持集群部署的安裝間接軟件,就不一一列舉了

? ? 圖片服務(wù)器:通過分布式文件系統(tǒng)FastDFS

? ? 集群方案:多機(jī)tomcat,seesion統(tǒng)一管理,圖片統(tǒng)一管理。這些需要一套解決方案。

? ? 服務(wù)器要求:linux/windows,8G內(nèi)存,空間200G以上

? ??

? ?最后對(duì)于JAVA領(lǐng)域商城的開發(fā),其實(shí)在PHP、.NET語言中,已經(jīng)有非常多的成熟同類產(chǎn)品了,比如shopnc、ecshop等等等,但是PHP的邏輯都是寫在前臺(tái)文件中,這個(gè)就跟JAVA中的邏輯都是寫在了JSP中一樣,這樣雖然便于開發(fā),但是安全性、擴(kuò)展性方面都不行,后期二次開發(fā)、維護(hù)也不方便。另外.NET語言大家都是知道的,它是不開源的,這個(gè)我覺得不敢用的,哪天你遇到致命bug了,沒法從底層排查,這也是為什么銀行、金融、電商很多行業(yè)不用這個(gè)語言原因了。

?

? 還有外行的人被推薦使用apache ofbiz,這個(gè)框架就是個(gè)大雜燴,大家不過分神話它。

? 另外對(duì)于JAVA開發(fā)方面,其實(shí)如果有好的架構(gòu),JAVA程序員只寫邏輯,前端只寫前端,數(shù)據(jù)庫DBA只關(guān)注DBA,這樣的話,開發(fā)起來會(huì)非常的方便。我們團(tuán)隊(duì)目前也是花了很長時(shí)間,也借鑒了很多成熟的框架,研發(fā)了一套適合商城開發(fā)的一套架構(gòu)。等到以后有機(jī)會(huì)可以開源出來給大家。

如果有需要商城定制的可以聯(lián)系本人Q:4407509,我們官網(wǎng):www.hulianrongyun.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評(píng)論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,786評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,796評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,995評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,230評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,697評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容