電商項目---訂單模塊以及負載均衡和分庫分表

學習主題:訂單模塊以及負載均衡和分庫分表

1.創建ego-order-web訂單系統

(1)描述訂單系統的實現流程

訂單系統的實現流程及將購物車中的數據保存到數據庫,將購物車中的數據保存到數據庫有兩種實現方式,一種是調用購物車遠程服務加載購物車集合從而獲取數據保存到數據庫,還有一種是給訂單系統添加攔截器,用戶必須登陸才能訪問訂單系統,在攔截器中獲取用戶的信息,通過用戶id獲取購物車數據然後保存到數據庫中。

(2)描述訂單系統中需要的表和表之間的關係

用戶表和訂單表一對多,一個用戶可以包含過個訂單
訂單表和訂單明細表一對多,一個訂單包含多個訂單明細,通過訂單id進行關聯
訂單表和訂單物流表一對一

2.ego-order-web添加攔截器

(1)說明springmvc中攔截器要重寫的幾個方法和執行順序

執行方法前
@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {

		return true;
	}
執行方法後
@Override
	public void postHandle(
			HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
			throws Exception {
	}
頁面渲染後
@Override
	public void afterCompletion(
			HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	}

(2)說明springmvc中攔截器postHandle()方法的執行時間和作用

postHandle:後處理回調方法,實現處理器的後處理(但在渲染視圖之前),此時我們可以通過modelAndView(模型和視圖對象)對模型數據進行處理或對視圖進行處理,modelAndView也可能爲null。

3.保存訂單信息_查看訂單列表_明細

(1)描述用戶訂單保存中訂單明細表中的數據是怎麼獲取的?

根據用戶的id獲取到購物車對象集合,根據購物車對象集合獲得商品對象,商品對象中保存着訂單明細。

(2)描述訂單保存成功後,訂單的情況是怎麼實現的?

4.Nginx介紹_Nginx安裝

(1)描述nginx的在開發中的作用。

靜態資源服務器
虛擬主機
反向代理服務器
負載均衡

(2)談談你對反向代理和正向代理的理解

正向代理,意思是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從 原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原 始服務器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。
反向代理(Reverse Proxy)方式是指以代理服務器來接受 internet 上的連接請求,然 後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給 internet 上請求連 接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。

5.Nginx實現虛擬主機

(1)談談你對nginx虛擬主機的理解

虛擬主機是一種特殊的軟硬件技術,它可以將網絡上的每一臺計算機分成多個虛擬主 機,每個虛擬主機可以獨立對外提供 www 服務,這樣就可以實現一臺主機對外提供多個 web 服務,每個虛擬主機之間是獨立的,互不影響的。 
虛擬主機技術是互聯網服務器採用的節省服務器硬件成本的技術,虛擬主機技術主要應 用於 HTTP(Hypertext Transfer Protocol,超文本傳輸協議)服務,將一臺服務器的某項或 者全部服務內容邏輯劃分爲多個服務單位,對外表現爲多個服務器,從而充分利用服務器硬 件資源。

(2)nginx實現虛擬主機有幾種方式,分別具體描述

實現虛擬主機有三種方式
基於 IP 的虛擬主機
#一個server一個虛擬主機   
    server {
        listen       80;
	#爲虛擬機指定IP或者是域名
       server_name  192.168.170.128;

        #主要配置路由訪問信息
       location / {
	    #用於指定訪問根目錄時,訪問虛擬主機的web目錄
           root   html128;
	    #在不指定訪問具體資源時,默認的展示資源的列表
           index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
           root   html;
        }
       
    }


    #一個server一個虛擬主機
    server {
        listen       80;
	#爲虛擬機指定IP或者是域名
        server_name  192.168.170.138;

        #主要配置路由訪問信息
        location / {
	    #用於指定訪問根目錄時,訪問虛擬主機的web目錄
            root   html138;
	    #在不指定訪問具體資源時,默認的展示資源的列表
            index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

基於端口的虛擬主機
#一個server一個虛擬主機  
    server {
        listen       8080;
	#爲虛擬機指定IP或者是域名
        server_name  192.168.170.138;

        #主要配置路由訪問信息
        location / {
	    #用於指定訪問根目錄時,訪問虛擬主機的web目錄
            root   html8080;
	    #在不指定訪問具體資源時,默認的展示資源的列表
            index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

    #一個server一個虛擬主機
     server {
         listen       9090;
	#爲虛擬機指定IP或者是域名
         server_name  192.168.170.138;

        #主要配置路由訪問信息
         location / {
	    #用於指定訪問根目錄時,訪問虛擬主機的web目錄
             root   html9090;
	    #在不指定訪問具體資源時,默認的展示資源的列表
             index  index.html index.htm;
         }

       
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
       
     }

基於域名的虛擬主機
	host文件配置

#一個server一個虛擬主機   
    server {
       listen       80;
	#爲虛擬機指定IP或者是域名
       server_name  www.gl.cn;

       #主要配置路由訪問信息
       location / {
	    #用於指定訪問根目錄時,訪問虛擬主機的web目錄
           root   html-gl;
	    #在不指定訪問具體資源時,默認的展示資源的列表
           index  index.html index.htm;
       }

       
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
        root   html;
       }
       
    }


    #一個server一個虛擬主機
     server {
       listen       80;
	#爲虛擬機指定IP或者是域名
       server_name  www.ww.com;

        #主要配置路由訪問信息
       location / {
	    #用於指定訪問根目錄時,訪問虛擬主機的web目錄
           root   html-ww;
	    #在不指定訪問具體資源時,默認的展示資源的列表
           index  index.html index.htm;
        }

       
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
         root   html;
       }
       
    }

6.Nginx實現反向代理_負載均衡

(1)描述什麼是nginx的反向代理和好處

反向代理(Reverse Proxy)實際運行方式是指以代理服務器來接受 internet 上的連接請求, 然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給 internet 上請求 連接的客戶端,此時代理服務器對外就表現爲一個服務器。
反向代理的好處:
(1)保證內網的安全,可以使用反向代理提供 WAF 功能,阻止 web 攻擊 大型網站,通常將反向代理作爲公網訪問地址,Web 服務器是內網
(2)負載均衡,通過反向代理服務器來優化網站的負載
(2)nginx的負載均衡算法有哪些
1.輪詢(默認) 每個請求按時間順序逐一分配到不同的後端服務器,如果後 端服務器 down 掉,能自動剔除。
2.指定權重 指定輪詢機率,weight 和訪問比率成正比,用於後端服務器 性能不均的情況。
upstream backserver {
server 192.168.170.128 weight=10;
server 192.168.170.129 ;
}

3.IP 綁定 ip_hash 每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪 問一個後端服務器,可以解決 session 的問題。
upstream backserver {
ip_hash;
server 192.168.170.128:88;
server 192.168.170.129:80;
}

7.ego-rpc_ego-manager項目發佈

(1)描述ego-rpc項目發佈需要什麼插件,做哪些配置

assembly插件
<resources>
			<!--用於資源拷貝 -->
			<resource>
				<directory>src/main/resources/spring</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
				<!-- dubbo 框架的項目發佈完成後,默認dubbo去META-INF/spring目錄下加載spring -->
				<targetPath>META-INF/spring/</targetPath>
			</resource>
			<!-- 默認加載到classpath文件 -->
			<resource>
				<directory>src/main/resources/mybatis</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
				<!--<targetPath></targetPath> -->
			</resource>
			<resource>
				<directory>src/main/resources/resources</directory>
				<includes>
					<include>**/*.properties</include>
				</includes>
				<!--<targetPath></targetPath> -->
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
				</includes>
				<!--<targetPath></targetPath> -->
			</resource>
		</resources>

(2)描述ego-rpc發佈爲dubbo服務的時候spring配置文件去哪裏加載

默認去META-INF/spring目錄下加載spring配置文件

8.Mycat介紹_垂直拆分_水平拆分

(1)談談mycat分庫垂直拆分的理解。

一個數據庫由很多表的構成,每個表對應着不同的業務,垂直切分是指按照業務將表進行分 類,分佈到不同 的數據庫上面,這樣也就將數據或者說壓力分擔到不同的庫上面

(2)談談mycat分庫水平拆分的理解。

水平拆分是按照某個字段的某種規則來分散到多個庫 之中,每個表中包含一部分數據。簡單來說,我們可以將數據的水平切分理解爲是按照數據 行的切分,就是將表中的某些行切分到一個數據庫,而另外的某些行又切分到其他的數據庫 中

9.Mycat相關概念_Mycat安裝

(1)請對mycat以下概念做詳細說明

①數據庫中間件
數據庫中間件,就是介於數據庫與應用之間,進行數據處理與交互的中間服 務。從原有的一個庫,被切分爲多個分片數據庫,所有的分片數據庫集羣構成了整個完整的 數據庫存儲
②邏輯庫(schema)
對實際應用來說,並不需要知道中間件的存在,業務開發人員只需要知道 數據庫的概念, 所以數據庫中間件可以被看做是一個或多個數據庫集羣構成的邏輯庫
③邏輯表(table)
分佈式數據庫中,對應用來說,讀寫數據的表就是邏輯 表。邏輯表,可以是數據切分後,分佈在一個或多個分片庫中,也可以不做數據切分,不分 片,只有一個表構成
④ER表
關係型數據庫是基於實體關係模型(Entity-Relationship Model)之上,通過其描述了真實世界 中事物與關係,Mycat 中的 ER 表即是來源於此。根據這一思路,提出了基於 E-R 關係的 數據分片策略,子表的記錄與所關聯的父表記錄存放在同一個數據分片上,即子表依賴於父 表,通過表分組(Table Group)保證數據 Join 不會跨庫操作
⑤分片規則
數據切分,一個大表被分成若干個分片表,就需要一定的規則,這樣按照某種業務 規則把數據分到某個分片的規則就是分片規則,數據切分選擇合適的分片規則非常重要,將 極大的避免後續數據處理的難度。

10.MyCat配置_數據導入_測試數據拆分

(1)描述mycat配置的三個關鍵文件和作用

在這裏插入圖片描述

(2)詳細schema.xml常用配置標籤和作用

schema標籤:配置邏輯庫的標籤
table標籤:定義邏輯表
dataNode標籤:定義數據節點
dataHost標籤:定義數據庫主機
dataHost子標籤writeHost:寫數據的數據庫定義標籤,實現讀寫分離操作
dataHost子標籤readHost:讀數據的數據庫定義標籤

11.Mysql實現主從同步

(1)談談對數據庫讀寫分離的理解

主數據庫(master)處理事務性增、改、刪操作(INSERT、 UPDATE、DELETE),而從數據庫(slave)處理 SELECT 查詢操作。
*

(2)談談對象數據庫主從同步的理解

主從備份: 就是一種主備模式的數據庫應用.
主庫(Master)數據與備庫(Slave)數據完全一致. 實現數據的多重備份, 保證數據的安全.
可以在 Master[InnoDB]和 Slave[MyISAM]中使用不同的數據庫引擎,實現讀寫的分離

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章