1. 程式人生 > >品優購專案記錄:day01

品優購專案記錄:day01

今日目標:

        (1)瞭解電商行業特點以及理解電商的模式

        (2)瞭解整體品優購的架構特點

        (3)能夠運用Dubbox + SSM 搭建分散式應用

        (4)搭建工程框架,完成品牌列表的後端程式碼

目錄

1、系統架構

1.1 SOA 架構

        SOA是Service-Oriented Architecture的首字母簡稱,它是一種支援面向服務的架構樣式。從服務、基於服務開發和服務的結果來看,面向服務是一種思考方式。其實SOA架構更多應用於網際網路專案開發。

1.2 品優購架構

1.3 資料表

表名稱

含義

tb_brand

品牌

tb_specification

規格

tb_specification_option

規格選項

tb_type_template

型別模板:用於關聯品牌和規格

tb_item_cat

商品分類

tb_seller

商家

tb_goods

商品

tb_goods_desc

商品詳情

tb_item

商品明細

tb_content

內容(廣告)

tb_content_category

內容(廣告)型別

tb_user

使用者

tb_order

訂單

tb_order_item

訂單明細

tb_pay_log

支付日誌

1.4 框架組合

        品優購採用當前流行的前後端程式設計架構。

        後端框架採用Spring+SpringMVC+mybatis +Dubbox 。前端採用angularJS +Bootstrap。

2、Dubbox

2.1 Dubbox 架構圖

節點角色說明:

 Provider: 暴露服務的服務提供方。

 Consumer: 呼叫遠端服務的服務消費方。

 Registry: 服務註冊與發現的註冊中心。

 Monitor: 統計服務的呼叫次調和呼叫時間的監控中心。

 Container: 服務執行容器。

呼叫關係說明:

 0. 服務容器負責啟動,載入,執行服務提供者。

 1. 服務提供者在啟動時,向註冊中心註冊自己提供的服務。

 2. 服務消費者在啟動時,向註冊中心訂閱自己所需的服務。

 3. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推

送變更資料給消費者。

 4. 服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,

如果呼叫失敗,再選另一臺呼叫。

 5. 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計

資料到監控中心。

2.2 註冊中心 Zookeeper 安裝

(1)上傳zookeeper壓縮包到linux伺服器,並解壓縮。

(2)在zookeeper中建立一個data資料夾。

(3)進入conf資料夾,修改 zoo_simple.cfg 為 zoo.cfg,並編輯dataDir的值為剛新建的data資料夾的路徑。

(4)執行zookeeper,檢視狀態

2.3 Dubbox 管理中心

(1)獲取到 Dubbox 的管理中心war包,並上傳到linux伺服器。還需要上傳tomcat壓縮包,用於執行war

(2)解壓縮 tomcat 的壓縮包,並將管理中心的war包,放入webapps目錄下,啟動tomcat

(3)訪問 Dubbox 的管理中心頁面,會顯示輸入登入名和密碼,均為:root

(4)登陸後的介面

備註:

    (1)Dubbox 沒有上傳到 maven 倉庫中,如果需要使用需要手動安裝到本地 maven倉庫中。

3、品優購工程框架搭建

3.1 建立一個聚合工程,為整個專案的父工程,並配置 pom.xml,主要為相關jar包的版本號鎖定

3.2 建立通用實體類模組工程

3.3 建立通用資料訪問模組工程

3.4 建立通用元件模組工程

3.5 建立商家商品模組工程(sellergoods-interface、sellergoods-service)

3.6 建立運營商管理後臺工程(manager-web)

3.7 建立商家管理後臺工程(shop-web)

3.8 使用逆向工程生成pojo和dao程式碼,其中pojo類需要手動實現 Serializable 介面

3.9 完成各個工程的基本配置

4、品牌列表-後端

4.1 服務層介面(sellergoods-interface)

package com.pinyougou.sellergoods.service;

import java.util.List;

import com.pinyougou.pojo.TbBrand;

/**
 * 品牌相關介面
 * @author Administrator
 *
 */
public interface BrandService {

	/**
	 * 獲取品牌列表
	 *
	 * @return java.util.List<com.pinyougou.pojo.TbBrand>
	 */
	List<TbBrand> findAll();
	
}

4.2 服務層實現(sellergoods-service)

package com.pinyougou.sellergoods.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.config.annotation.Service;
import com.pinyougou.mapper.TbBrandMapper;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;
@Service
public class BrandServiceImpl implements BrandService {

	@Autowired
	private TbBrandMapper brandMapper;
	
	@Override
	public List<TbBrand> findAll() {

		return brandMapper.selectByExample(null);
	}

}

4.3 控制層(manager-web)

package com.pinyougou.manager.controller;

import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;

@RestController
@RequestMapping("/brand")
public class BrandController {

	@Reference
	private BrandService brandService;

	/**
	 * 獲取品牌列表
	 *
	 * @return java.util.List<com.pinyougou.pojo.TbBrand>
	 */
	@RequestMapping("/findAll")
	public List<TbBrand> findAll(){
		return brandService.findAll();
	}

}

4.4 測試

dubbox監控中心:

備註:

        (1)在專案搭建過程中,最後的測試階段,出現了一次問題,訪問 url 報404錯誤,控制檯卡在 Initializing Spring FrameworkServlet 'springmvc',後來發現是因為使用idea建立的maven web骨架沒有resources和java的目錄,需要手動建立,建立resources時不小心輸成了resource,把資原始檔的目錄名resource改成resources即可。