前言
接上一篇《大型網(wǎng)站架構(gòu)演變》,從本篇開始煞赢,將從0到1構(gòu)建一個單體的電商項目抛计,并以此為基礎(chǔ),從集群到分布式照筑,再到微服務(wù)吹截,進(jìn)行逐步演變。我們先從用戶注冊入手凝危,從頭開始分析波俄,并搭建項目。下面我們開始吧蛾默。
前后端分離開發(fā)模式
在早期傳統(tǒng)的Java Web開發(fā)的時候懦铺,我們的前端代碼(html/css/js)和后端代碼(Java)是耦合到一起的,都在一個工程里面支鸡,這樣導(dǎo)致前后端開發(fā)人員在協(xié)作時冬念,并不太方便的。另外牧挣,這種模式下急前,web容器(如tomcat)還承擔(dān)了頁面的渲染工作,比如JSP就是由web容器渲染處理成html返回給客戶端的瀑构,這樣的話裆针,實際上一旦網(wǎng)站用戶、流量上去后,web容器在這方面壓力會很大的据块。
我們采用前后端分離開發(fā)模式的話码邻,那么,前端是一套工程代碼另假,后端是一套工程代碼像屋,兩者是沒有耦合到一起的,是分開部署的边篮。一般己莺,我們會把前端部署到高性能反向代理服務(wù)器Nginx上(早期可能是Apache上,靜態(tài)資源服務(wù)器)戈轿,前端會通過restful api來和后端通信凌受,以JSON這種格式來進(jìn)行數(shù)據(jù)傳輸。這種模式思杯,非常利于前后端開發(fā)人員的分工胜蛉,提高了協(xié)作的效率,而且我們只需要維護一套后端代碼色乾,可以為多種client提供服務(wù)誊册。
Maven構(gòu)建聚合工程
我們將采用主流的方式,通過Maven來管理項目暖璧,并對項目進(jìn)行分層設(shè)計案怯,構(gòu)建聚合工程。
在Idea中完成maven工程聚合(api->service->mapper->pojo->common):
(聚合之后澎办,別忘記安裝嘲碱,建立依賴關(guān)系,也就是install喔~)
數(shù)據(jù)庫建模
我們不用急于編寫代碼局蚀,應(yīng)該分析清楚業(yè)務(wù)后麦锯,進(jìn)行數(shù)據(jù)庫設(shè)計。一般情況下琅绅,我們并不會直接在數(shù)據(jù)庫中進(jìn)行設(shè)計离咐,而是利用一些數(shù)據(jù)庫建模工具,如PowerDesigner奉件、ERWin等,我這里會使用PDMan(開源昆著、國產(chǎn)县貌、漂亮、極簡)來進(jìn)行凑懂。
在設(shè)置好數(shù)據(jù)庫連接后煤痕,我們可以設(shè)計這樣一張users表。注意到,這里把主鍵id設(shè)置為字符串摆碉,而非自增的塘匣。是因為在前面一篇文章,我們提及過進(jìn)行分庫分表需要全局唯一id作為主鍵巷帝,因此我們在這里先這么處理忌卤,為以后打下伏筆。表設(shè)計好了后楞泼,我們利用建模工具驰徊,同步到mysql中。
這里我們可以發(fā)現(xiàn)PDMan有一個非常好用的功能堕阔,那就是可以記錄每次數(shù)據(jù)庫表結(jié)構(gòu)的變更記錄棍厂,類似于git的版本管理機制。
Mybatis 數(shù)據(jù)庫逆向生成工具
為了進(jìn)一步提高效率超陆,當(dāng)我們的數(shù)據(jù)庫表設(shè)計好了之后牺弹,我們可以利用MyBatis數(shù)據(jù)庫逆向生成工具來幫助我們自動生成一些文件,比如數(shù)據(jù)庫對應(yīng)的實體entity时呀,與之對應(yīng)的mapper.xml张漂,和相應(yīng)的接口映射類。
然后退唠,我們把自動生成的這些文件copy至項目中即可(需要依賴及配置)鹃锈。注意MyMapper文件,其實這是一個通用mapper瞧预。通俗點說屎债,通用Mapper是對單表的CRUD操作進(jìn)行了較為詳細(xì)的實現(xiàn),使得我們可以按照自己的需求選擇通用的方法垢油。
整合SpringBoot
依賴
啟動類
配置
小結(jié)
到這里盆驹,咱們已經(jīng)講述了前后端開發(fā)模式、Maven構(gòu)建聚合工程滩愁、數(shù)據(jù)庫建模躯喇、MyBatis逆向生成工具以及SpringBoot整合等相關(guān)話題。朋友們硝枉,夜已深了廉丽,本文就先到這里吧(詳情可以參見,我的公眾號:豐哲同學(xué))妻味。