1 京淘介紹
2 要求
- 專案在自己的電腦中做一遍
- 專案一定要個跟上
3 京淘專案概述
3.1 電商網站的特點
3.1.1 高併發
概念:在單位時間內,使用者大量的訪問伺服器.
說明:
說明:例如淘寶的雙11交易額特別的巨大.淘寶資料庫的處理的峰值25.6萬/秒.
電商網站中,高併發是主要考慮的問題.
3.2 分散式
說明:分散式主要分為 1.分散式計算 2分散式系統
3.2.1 分散式計算
說明:一項任務交給多臺伺服器完成.
例子:一項任務如果由一個人完成需要10個小時.如果由10個人共同完成這項任務.僅需1個小時.(大資料)
3.2.2 分散式系統
說明:將系統按照功能模組進行拆分.拆分為不同的系統.完成不用的任務.
1.傳統專案
2.分散式系統
分散式系統的作用:
- 對外統一.對內獨立
- 大型專案構建時,內部會根據業務需求,劃分為不同的子模組.不同的模組處理的業務不同.開發相對互補影響.極大的提供開發效率.
- 如果某項業務出現問題.影響的範圍較小
3.2.3 叢集
說明:通過多臺伺服器,處理的是相同的業務
圖例:
說明:
- 採用叢集的部署,可以有效的抗擊高併發.
- 在叢集部署中,會採用高可用的方式,目的讓伺服器儘可能的不”當機”
總結:分散式專案也可以部署叢集.讓我們的後臺更加的強大
3.2.4 海量資料
說明:由於軟體行業的不斷的發展,資料的積累量越來越多,如果實現快速的檢索,分析.處理是現在電商網站面臨的重大的難題.
(大資料) AI 區塊鏈(概念)------徵信問題 王欣
4 京淘架構設計
4.1 技能點介紹
4.1.1 功能模組劃分
說明:京淘專案主要分為 2大支撐系統
序號 |
專案名稱 |
主要作用 |
1 |
jt-manage |
京淘後臺管理系統 負責商品的更新和維護 |
2 |
jt-web |
京淘前臺系統,主要負責商品的展現 |
3 |
jt-cart |
京淘購物車系統,負責使用者購物車資訊維護 |
4 |
jt-sso |
京淘單點登陸系統,實現session資料共享 |
5 |
jt-order |
京淘訂單系統,負責訂單維護 |
6 |
jt-search |
京淘專案的全文檢索 |
7 |
jt-rabbitMQ |
訊息佇列系統 |
8 |
jt-parent |
負責jar包的管理和依賴 |
9 |
jt-common |
管理工具類檔案 |
4.1.2 京淘的技能點
說明:京淘的網際網路專案包含了當下最新最熱門的技術.
序號 |
知識點 |
重要程度 |
|
掌握程度 |
1 |
業務:商品分類、商品、前臺、許可權單點登入、購物車、訂單、商品全文檢索 |
★★★★★ |
1 |
熟練 |
2 |
Spring、SpringMVC、MyBatis主流框架 |
★★★ |
1 |
熟練 |
3 |
Maven 一鍵構建繼承和聚合 |
★★ |
1 |
熟練 |
4 |
PowerDesinger表設計及優化 |
★★★★ |
3 |
會用 |
5 |
富客戶端EasyUI、KindEditor圖文控制元件 |
★ |
1 |
會用 |
6 |
RESTFul 訪問方式 |
★★★★★ |
1 |
熟練 |
7 |
通用Mapper外掛,自動生成呼叫程式碼 |
★ |
1 |
會用 |
8 |
Nginx 負載均衡/反向代理 |
★★★★★ |
1 |
精通 |
9 |
Tomcat叢集 |
★★★ |
1 |
熟練 |
10 |
Linux/CentOS 作業系統 |
★★★ |
1 |
熟練 |
11 |
MySQL主從複製,Amoeba/mycat讀寫分離 |
★★★★★ |
3 |
精通 |
12 |
Redis 快取資料庫,分片,哨兵,叢集高可用 |
★★★★★ |
1 |
精通 |
13 |
JSONP瀏覽器跨域 |
★★ |
2 |
會用 |
14 |
HttpClient系統間呼叫 |
★★★ |
1 |
熟練 |
15 |
石英鐘定時任務 |
★ |
1 |
會用 |
16 |
RabbitMQ 訊息佇列 |
★★★ |
3 |
熟練 |
17 |
Lucene、Solr搜尋 |
★★★★ |
3 |
熟練 |
18 |
Jsoup爬蟲技術 |
★★★★ |
3 |
熟練 |
19 |
Dubbo框架 |
★★★★ |
4 |
熟練 |
20 |
Docker容器技術 |
★★★★ |
4 |
熟練 |
21 |
Druid阿里資料庫連線池 |
★★★ |
4 |
熟練 |
5 Maven
5.1 傳統專案的問題
5.1.1 分析
- 傳統專案的jar包需要專人來維護和編輯.(架構師)
- Jar包衝突問題比較麻煩
- 傳統系統中打包釋出也是問題(分散式專案打包更加麻煩)
5.2 Maven介紹
5.2.1 Maven介紹
說明:使用Maven可以一鍵構建專案,管理/更新/維護專案的工具
5.2.2 Maven下載
說明:
說明:使用Maven直接從官網根據自己的系統選擇正確的版本
5.2.3 Maven安裝
5.2.3.1 檢測JDK
說明:如果修改完jdk後依然是1.8則需要進入控制皮膚中,解除安裝1.8JDK
5.2.4 配置Maven
1.Maven路徑
2.新增maven變數
3.將maven加入path中
; %MAVEN_HOME%\bin
檢測是否配置成功.重新開啟cmd命令提示框
命令:mvn -version
如果出現圖上的資訊.表示Maven配置成功
5.2.5 Maven的重要組成部分
1.使用者(USER) 使用Maven的呼叫者
2.本地倉庫 使用者需要的jar包儲存到了本地(本機),預設的本地倉庫的儲存路徑c:/user/.m2/reposipoory
3.中央倉庫 位置在海外.在中央倉庫中儲存著現在主流的公司的全部的jar包.下載時速度較慢
4.映象 在國內相當於中央倉庫的代理,並且速度很快 阿里雲映象/達內映象
5.Settings配置檔案 maven中屬性配置檔案 配置本地倉庫/私服映象
特點:maven是基於網路的!!!!.使用maven時要麼使用網路,要麼新增私服映象!!!!
5.2.6 配置本地倉庫
說明:將本地倉庫的路徑複製E:\software\mvn_repo.修改大約55行左右
2.新增私服映象
說明:在培訓期間使用達內私服映象伺服器.
5.2.7 複製settings檔案
說明:將settings配置檔案存入m2下
${user.home}/.m2/settings.xml.
Maven預設訪問的就是user級別.所以必須配置,否則無效
修改全域性的settings檔案
${maven.conf}/settings.xml
5.2.8 配置maven的jdk
說明:通過maven建立專案時,預設使用1.7的JDK
配置:大約在settings檔案的262行新增jdk的配置.作用可以通過maven建立專案時預設使用就是1.7
<profile> <id>jdk17</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile>
5.2.9 Maven如何實現自動的jar包依賴
問題:
- Maven是如何自動的依賴jar包?
- Maven如何保證jar包檔案不被篡改?
答案:
- 由於maven在進行jar包依賴時,會執行依賴的pom.xml檔案,如果該檔案中有自己的依賴.則maven再次自動的通過座標實現jar包的匯入.
- 如何保證不背篡改
6 Eclipse整合Maven
6.1 環境配置
6.1.1 修改JDK
6.1.2 修改字符集編碼
6.1.3 關閉校驗
6.2 引入maven工具
6.2.1 匯入maven
說明:新增maven工具後,將maven打鉤表示啟動
6.2.2 引入settings檔案
7 專案的拆分
7.1 專案的垂直拆分
7.1.1 垂直拆分
說明:根據不同的功能模組將模組系統化這樣的拆分方式叫做垂直拆分.其實就是分散式的思想
7.1.2 分散式專案如何管理jar包
問題:將模組進行系統化之後,每一個模組都是一個特定的系統.每個系統都需要自己的jar包檔案.分散式系統如何統一管理jar包
解決:
建立一個專門負責管理jar包的專案jt-parent.主要維護專案中所有公用的jar包檔案(ssm)
7.1.3 分散式專案如何管理工具類
問題:分散式專案中,有一些工具類需要進行復用,.但是如果將每個工具類都單獨寫入專案則不方便維護.
解決:為工具類單獨的建立專案jt-common.之後將jt-common打包,形成jar包檔案.可以通過pom.xml檔案直接依賴
補充說明:繼承和依賴的區別
繼承可以引用父類的全部的jar包檔案.
依賴只能依賴特定的某個jar包檔案.
7.1.4 簡述分散式專案的注意專案
答:
- 什麼是分散式????
根據不同的業務模組將專案進行拆分.並且將模組系統化.會產生2個問題.1專案中的jar包如何維護.2專案中的工具類如何維護.
通過建立管理jar包的專案jt-parent專案.其他的專案只需要繼承該專案即可.
建立工具類專案jt-common,其他的專案如果需要工具類引用,只需要依賴工具類即可.
Jt-parent/jt-common稱之為專案的支援系統
8 構建京淘後臺管理系統
8.1 Jt-parent
8.1.1 構建jt-parent
說明:jt-parent專案的作用主要管理jar包檔案.並且專案型別為pom.
8.1.2 Maven的座標
以上的三個資訊共同構成了maven的座標.
GroupId:組id 一般是公司的名稱
ArtifactId: 專案名稱
Version: 專案的版本號
問題:中央倉庫如何管理jar包???
解答:Maven的中央倉庫其實就是採用座標的方式管理jar包檔案
8.1.3 選擇骨架
說明:通過骨架構建專案,其實就是maven提供的專案建立的模板.模板內包含了專案所需要的配置檔案及資料夾.
1.選擇骨架
2.定義座標
3.修改pom
4.更新maven
說明:如果出現以上的報錯資訊,則需要更新maven專案
- 匯入jt-parent的依賴包
說明:將課前資料中的jt-parent中的pom.xml檔案匯入後即可.
8.1.4 將jt-parent打包
說明:如果jt-parent專案建立成功後需要手動的打包.runas-mvn install.
8.2 構建jt-common
8.2.1 選擇骨架
8.2.2 定義座標
8.2.3 繼承jt-parent
8.2.4 引入工具類檔案
說明:將課前資料中的jt-common中的工具類匯入專案中.匯入完成之後打包
補充:如果打包不成功,將本地倉庫中的jt全部刪除後重新打包
8.3 構建京淘後臺管理系統
8.3.1 骨架的選擇
8.3.2 定義座標
8.3.3 修改JDK
說明:由於maven中自已依賴的JDK不完整,所以需要我們手動的修改.
8.3.4 繼承parent
8.3.5 依賴工具類
9 引入tomcat外掛
9.1 Tomcat中存在的問題
9.1.1 資源問題
說明:
1.如果使用本地的tomcat,那麼需要定期清空webapp.否則專案啟動會很久.
2.如果需要多個tomcat伺服器則需要手動的修改埠號.8005 8080 8009
9.1.2 引入tomcat外掛
說明:使用tomcat外掛是在執行期開始繫結.外掛版的tomcat可以做到無限次啟動.只需要修改一個埠號即可8080
Tomcat外掛引入
<!--引入tomcat外掛 將原有的build刪除 第8行 --> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8091</port> <path>/</path> </configuration> </plugin> </plugins> </build>
9.2 繫結tomcat
9.2.1 新建build
說明:需要建立maven build
9.2.2 編輯外掛應用
9.2.3 匯入原始碼檔案
9.2.4 檢測字符集是否正確
9.2.5 埠占用報錯
補充:如果埠占用,需要現關閉tomcat