Spring Cloud Alibaba簡單搭建使用--賣票功能

目的:

初次學(xué)習(xí)Spring Cloud Alibaba,為了方便學(xué)習(xí),搭建環(huán)境并完成了一個簡單的賣票功能,主要是為了熟悉基本的組件和操作。

需求:

使用Spring Cloud Alibaba 搭建微服務(wù),完成賣票系統(tǒng)的項目構(gòu)建,您需要搭建如下微服務(wù):

1.服務(wù)注冊與發(fā)現(xiàn)(nacos):搭建Nacos注冊中心,所有的微服務(wù)都需要注冊到Nacos中

2.電影服務(wù)(movice-service):負(fù)責(zé)電影即電影票的基本CURD工作,數(shù)據(jù)庫連接 itsource-movice

3.購票服務(wù)(buyticket-service):提供購票接口,調(diào)用movice-server購買買電影票,連接數(shù)據(jù)庫itsource-buyticket

4.服務(wù)網(wǎng)關(guān):微服務(wù)的統(tǒng)一入口,使用Spring Cloud Gateway 搭建, 對movice-service和buyticket-service做請求路由

5.服務(wù)通信: buyticket-service和movice之間可能會有遠(yuǎn)程調(diào)用,使用OpenFeign來實現(xiàn)

6.服務(wù)降級:使用Sentinel組件實現(xiàn)服務(wù)降級

7.配置中心:使用Nacos作為微服務(wù)的配置中心

Spring Cloud和Spring Cloud Alibaba簡單對比

image.png

開始················

1.搭建一個Maven的父項目 ,并導(dǎo)入相關(guān)依賴

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
        <alibaba.version>2.1.0.RELEASE</alibaba.version>
        <spring-boot.version>2.1.13.RELEASE</spring-boot.version>
    </properties>

    <!--1.管理SpringBoot的依賴-->
    <parent>
        <groupId> org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>   

2.搭建電影父服務(wù) movie-server-parent

image

3.使用mybatis-plus生成基礎(chǔ)代碼

4.創(chuàng)建啟動類

@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("cn.hzy.hrm.mapper")
public class MovieServerApp {
    public static void main(String[] args) {
        SpringApplication.run(MovieServerApp.class);
    }
}

導(dǎo)入依賴

<dependencies>
        <!--注冊中心客戶端-->
        <dependency>
            <groupId>com.alibaba.cloud </groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--配置中心客戶端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--加入WEB依賴是為了方便后面寫Controller-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hzy</groupId>
            <artifactId>hrm-basic-util</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-support</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>cn.hzy</groupId>
            <artifactId>movie-server-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

5.啟動Nacos=====>

5.1、Nacos是什么
Nacos是一個注冊中心,相當(dāng)于SpringCloud里面中的Erueka,它也是一個配置中心,相當(dāng)于SpringCloud里面的Config,他可以將配置文件版本化管理。

5.2、開啟Nacos服務(wù)
1、 下載Nacos,下載地址:https://github.com/alibaba/nacos/releases
2、解壓后打開/bin/startup.cmd啟動

image.png

3、啟動后可打開網(wǎng)址http://127.0.0.1:8848/nacos/index.html查看主頁,用戶名密碼默認(rèn)值為nacos

6.在Nacos配置中心中進(jìn)行配置,把服務(wù)的配置文件注冊到配置中心

設(shè)置命名空間(單個項目時可以用默認(rèn)的,多個項目時可以設(shè)置)


image.png

打開Nacos監(jiān)控面板 - 進(jìn)入配置列表 -點擊 “+” 圖標(biāo)添加配置 如下:


image.png

填寫Data ID,選擇YAML,編輯配置文件內(nèi)容:

image.png

這里定義了一個名字為application-user-dev.yaml的配置,使用的是YAML格式。

server:
  port: 1010
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/itsource-movie?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8
    username: root
    password: a19950116
  application:
    name: movie-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #注冊中心地址
mybatis-plus:
  type-aliases-package: cn.hzy.hrm.domain

Data ID : 非常重要,可以看做是配置的文件的名字,在程序中拉取配置文件的時候需要指定Data ID。

Group : 分組,默認(rèn)是 DEFAULT_GROUP , 可以針對不同的項目指定不同的配置組。

6.此時電影父服務(wù) movie-server-parent已經(jīng)接入成功。啟動項目檢測

7.搭建購票服務(wù)buyticket-server-parent (同電影服務(wù),不在贅述?。?/p>

8.搭建gateway-server-1110 網(wǎng)關(guān)中心

導(dǎo)包

 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud </groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--        配置中心客戶端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

創(chuàng)建啟動類

@SpringBootApplication
@EnableDiscoveryClient
public class GateWayServerApp {
    public static void main(String[] args) {
        SpringApplication.run(GateWayServerApp.class);
    }
}

bootstrap.yml配置文件

spring:
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #注冊中心
      config:
        server-addr: localhost:8848 #配置中心
        file-extension: yaml #配置文件格式
        prefix: application-gateway #配置前綴 ,默認(rèn)使用sring.application.name
        group: DEFAULT_GROUP #默認(rèn)分組
        namespace: 01f747cd-14a6-4d83-9211-bba667558772 #命名空間的ID

在配置中心中創(chuàng)建配置文件application-gateway-dev.yaml

server:
  port: 80
spring:
  application:
    name: gateway-server
  cloud:
    gateway:
      discovery:
        locator:
          enabled: false #開放服務(wù)名訪問方式
          lower-case-service-id: true #服務(wù)名小寫
      routes:
        - id : application-buyticket #指定服務(wù)名
          uri: lb://buyticket-server #去注冊中心找這個服務(wù)名
          predicates:    #斷言,匹配訪問的路徑
          - Path=/buyticket/**  #服務(wù)訪問路徑
          filters:
            - StripPrefix=1 #請求轉(zhuǎn)發(fā)的時候會去掉

基本服務(wù)搭建完成,如何開啟熔斷,在另一篇文章SpringCloudAlibaba 限流熔斷--Sentinel 里面有詳細(xì)描述。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容