12306项目

12306项目的亮点

* 海量数据分库分表
* 多种设计模式代码中实战
* 敏感数据加密存储
* 保障数据库与缓存一致性
* 全局唯一分布式 ID 改造
* 缓存穿透&击穿等问题
* 售票的业务问题

1.项目概述

12306项目采用前后端分离的分布式架构实现的,前端主要完成会员登陆,注册,购票,订单等功能的展示,其中会员可以使用浏览器通过用户名或邮箱或手机号三者中的任意一个配合密码完成登陆;后端主要以微服务的形式提供数据支持和业务流程处理;

需求分析

12306的核心业务逻辑有3块,分别是: 车票模块,会员模块,订单模块;

**会员模块的核心功能:**

1. 会员注册/登陆
2. 个人信息展示/编辑
3. 乘车人/CRUD

**票务模块的功能有:**

1. 车票查询(带分页和条件)/预订车票

**订单模块的核心功能有:**

1. 全部车票订单
2. 本人车票订单
3. 订单支付
4. 订单删除

相关技术:**

前后端分离架构 + 高并发技术项目实战

Vue3 + Vue CLI5 + Ant Design Vue3

JDK17

Springboot3 (最低JDK17)

SpirngCloudAlibaba 2022:gateway、nacos、sentinel、openfeign

mybatis plus、通用mapper

高并发技术:分布式缓存、分布式锁、分布式事务、限流、异步削峰等

xxl-job

首先搭建微服务

1.新建父工程

* pom中加入依赖

    <packaging>pom</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
    </parent>
    
    <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>Hoxton.SR10</spring-cloud.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
    
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.2</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
        </dependencies>
    
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

2、搭建公共模块common

* pom中加入依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
    
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
    
    
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
        </dependency>
    
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
        </dependency>
    
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    
    </dependencies>

3、搭建提供者business

* pom加入公共模块即可

    <dependencies>
        <dependency>
            <groupId>com.jiyun</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

在resource下创建application.yml文件

在com.**下创建business启动类

创建application-dev.yml文件并且写入配置文件更改数据库名称

在resources下创建templates包导入

通过Gene编写controller mapper service 层

4、搭建网关

* pom文件

    <dependencies>
        <!--网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--nacos服务发现依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

在com.**下创建GatewayApplication启动类

 在resource下创建application.yml文件

创建application-dev.yml文件并且写入配置文件

    server:
      port: 10010
    spring:
      application:
        name: gatewayh2204a
      cloud:
        nacos:
          server-addr: localhost:8848
        gateway:
          globalcors: # 全局的跨域处理
            add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
            corsConfigurations:
              '[/**]':
                allowedOrigins: # 允许哪些网站的跨域请求,这里填写你前端项目的路径
                  - "*"
                allowedMethods: # 允许的跨域ajax的请求方式
                  - "GET"
                  - "POST"
                  - "DELETE"
                  - "PUT"
                  - "OPTIONS"
                allowedHeaders: "*" # 允许在请求中携带的头信息
                allowCredentials: true # 是否允许携带cookie
                maxAge: 360000 # 这次跨域检测的有效期
          routes: # 网关路由配置
            - id: consumerh2204a # 路由id,自定义,只要唯一即可
              # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
              uri: lb://consumerh2204a # 路由的目标地址 lb就是负载均衡,后面跟服务名称
              predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
                - Path=/consumer/** # 这个是按照路径匹配,只要以/user/开头就符合要求

4.搭建服务消费者member

写入pom文件

在com.**下写入MemberApplication启动类

 在resource下创建application.yml文件

创建application-dev.yml文件并且写入配置文件更改端口号防止端口被占用

编写controller mapper service 层

在userController下编写查询全部分页代码

编写逻辑删除代码

//不能使用Mybatis=plus的逻辑删除功能,手动实现逻辑删除
//给username这个人的del_flag改为1
//update user set del_flag=1 where username=#{username}

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值