1. 程式人生 > 實用技巧 >暢購商城(一):環境搭建

暢購商城(一):環境搭建

好好學習,天天向上

本文已收錄至我的Github倉庫DayDayUP:github.com/RobodLee/DayDayUP,歡迎Star,更多文章請前往:目錄導航

囉嗦幾句

暢購商城是黑馬的一個專案。要說這個專案有多難,跟著視訊做肯定是沒什麼大問題了,但是可以讓我知道一個專案的具體開發流程以及提高自己對於一系列框架使用的熟練度,這也是我做這個專案的目的。關於這個專案的資料我就不提供了,視訊b站上面有,配套的資料也在視訊下面的評論中,有需要的朋友直接到b站上面找就可以了。接下來我會用十幾篇文章來記錄一下整個專案的開發經過以及遇到的問題。

暢購商城專案介紹

暢購商城專案是一個B2C的電商網站,採用了微服務架構,並且使用了前後端分離的方式進行開發。

技術棧


上面這張圖就是暢購商城使用到的技術棧,從圖中可以看出,整個微服務的開發是基於SpringBoot的,OAuth2.0是用來進行授權操作的,JWT用來封裝使用者的授權資訊,Spring AMQP是訊息佇列協議。然後就是一套Spring Cloud的微服務框架。

持久化技術棧選用了MyBatis+通用Mapper,但我不準備用通用Mapper,因為我想鍛鍊一下寫SQL語句,平時SQL也沒怎麼寫,就藉此機會練習練習。還用到了SpringDataEs用來操作ElasticSearch,SpringDataRedis用來操作Redis。

資料庫採用了MySQL,訊息佇列選用了RabbitMQ,還實現了MySQL讀寫分離。

支付介面就選擇了微信支付。

技術架構


這張圖是暢購商城的技術架構圖,可以看到,先是使用了Nginx做負載均衡以及限流;緊跟著的就是微服務閘道器,是用來將請求路由到不同的微服務,閘道器也集成了限流和許可權校驗的功能。後面就是具體的微服務了,業務方面一共分為了7個微服務,微服務之間也可能會相互呼叫,採用了Feign來進行不同微服務之間的呼叫,一些JavaBean及工具類也被單獨抽取了出來。一些公共元件微服務也被單獨抽取了出來,比如Oauth2.0微服務,RabbitMQ微服務等。

Hystrix Dashboard作為監控中心,Eureka是微服務的註冊中心。

資料支撐方面,搜尋功能用的是ElasticSearch,檔案系統採用的是FastDFS,資料庫選用的當然是MySQL了,快取用的是Redis。

這裡面有很多我也沒用過,具體是幹什麼的我也不是很清楚,介紹的就簡單了點。

環境搭建

專案介紹得差不多了就開始搭建專案吧。

安裝虛擬機器,準備資料庫

我們用到的MySQL資料庫是安裝在docker中的,docker安裝在了CentOS上,這些都已經安裝好了,我們只需要把黑馬提供的虛擬機器安裝一下就可以了。安裝過程很簡單,但是安裝完成後一定要記得改IP,因為虛擬機器的靜態IP和我們自己的電腦可能不在一個網段,改到一個網段。還有一個問題就是用Navicat連不上資料庫,可能的原因是資料庫密碼不對,視訊上說的是123456,可我試了是root;要麼就是沒有允許遠端訪問,開啟就好;最後一個原因就是防火牆不允許我們訪問3306埠,把防火牆關閉就OK了。

專案框架搭建

1. 建立父工程

在changgou目錄下建立一個新的Module名為changou-parent作為整個專案的父工程:

在父工程裡面不需要寫程式碼,所以把src目錄刪掉。因為每個微服務工程都是SpringBoot的,所以在changgou-parent的pom檔案中新增SpringBoot的起步依賴。然後再新增一些需要用到的依賴包,視訊裡還添加了swagger的依賴,但是暫時不準備用,等用的時候再新增。整個changgou-parent的pom檔案的內容我貼在了下面:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.robod</groupId>
    <artifactId>changgou-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <description>
        暢購商城專案的父工程
    </description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <properties>
        <!-- 跳過測試 -->
        <skipTests>true</skipTests>
    </properties>

    <!--依賴包-->
    <dependencies>
        <!--測試包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.51</version>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

2. 其它幾個公共模組搭建

在changgou-parent下面建立changgou-gateway、changgou-service、changgou-service-api、changgou-web四個Module,因為這幾個是各個模組的父工程,所以也不用寫程式碼,刪除src目錄,並且打pom包

<packaging>pom</packaging>

3. Eureka微服務搭建

微服務工程都搭建完畢了,現在就需要有個註冊中心去啟動微服務,所以接下來就在changgou-parent下建立一個名為changgou-eureka的Module,要想開啟eureka的服務,就需要新增相應的依賴包

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

接下來在resource目錄下新增配置檔案application.yml

server:
  port: 7001                      #埠號
eureka:
  instance:
    hostname: 127.0.0.1           #ip
  client:
    register-with-eureka: false   #是否將自己註冊到eureka中
    fetch-registry: false         #是否從eureka中獲取資訊
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
    name: eureka

最後在java包下新增一個啟動類:com.robod.EurekaApplication

@SpringBootApplication
@EnableEurekaServer //開啟Eureka服務
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
  }

}

現在就來測試一下Eureka能不能啟動成功,執行上面的程式碼,等專案啟動起來,訪問http://127.0.0.1:7001

成功出現了上面的介面,說明我們的註冊中心已經搭建成功了