SpringCloudAlibaba 综合项目实战工业级PaaS云平台第一课 项目介绍与数据库搭建

发布于:2022-12-10 ⋅ 阅读:(1056) ⋅ 点赞:(0)

第一章 最强综合项目大课介绍和学后水平

####第1集 微服务项目大课训练营介绍+学后水平

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第2集 说了那么多,接下来你应该准备什么?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第3集 微服务项目大课目标设定

在这里插入图片描述

第二章 架构方法论+DevOps+领域驱动设计

第1集 解决方案分析方法论SWOT

在这里插入图片描述

第2集 关于很多人说的DDD领域驱动设计

在这里插入图片描述

第3集 一个P7技术管理者的面试题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第4集 和你说下DevOps是如何提效的

在这里插入图片描述

第三章 1024电商平台系统实战架构设计和实现需求分析

第1集 1024电商平台业务背景介绍和简历项目编写建议

简介:讲解电商营销中心的业务背景和简历项目编写建议

  • 大课业务背景
实际上这个大课项目,是我在海外业务线的一个拉新营销平台的基础模型,印度印尼市场,俗称双印,可以说是V1版本,整个过程0~1也是非常艰辛,流量峰值差异大(夜间、节日等)、产品变动、薅羊毛攻击、各种国家政策等,目前由于印度阿三那边冲突XXX,在20年下半年暂时下线了。

大家编写简历的时候,自己可以编造一个公司自营商城/金融/在线教育等,为什么这样说呢,因为项目模型是通用的,不是局限某个领域,个人推荐是电商或者在线教育,需要考虑怎么在简历上编写

日活跃用户:30~50万,实际500万~1000万用户

如果有条件,可以说公司是海外业务的,这个面试官比较难考查、且项目问题亮点也是比较多的,也是目前国内都会遇到的

这个属于B2C模式,
在线教育B2C:平台自产视频,商家对消费者:比如小滴课堂,vipkid少儿培训
电商平台B2C:平台自有商品,小米有品、网易严选等
  • 商业模式介绍(面试官可能会问)
科普下:B2C、B2B、C2C、O2O, B表企业,C代表个人(或者说终端消费用户),O代表线上,也可以代表线下。

最通俗易懂的解释

B2C:Business To Consumer 企业和个人之间的交易,好比天猫超市、考拉海购、京东超市、小米有品,属于B2C模式
B2B:Business To Business 企业和企业之间的交易,比如阿里巴巴1688,产品供应链的上下游
C2C:Consumer To Consumer 个人和个人之见的交易,闲鱼卖二手、58同城交易、朋友圈个人微商
O2O:Online To Offline 线上购买线下体验,比如美团上领取优惠券,到店消费
  • 需求分析和规划

    • 用户服务
      • 用户注册/登录
      • 头像和信息维护
      • 收货地址模块
    • 优惠券服务
      • 展示和领劵
      • 使用和释放
    • 商品服务
      • 商品基本展示
      • 库存扣减回收
      • 购物车模块
    • 订单服务
      • 下单支付
      • 订单基本操作
  • 重点强调

    • 一个个微服务创建,不用心急,一定要提炼好项目模型,一步步来操作

    • 整个大课有简单逻辑、有复杂逻辑,看不懂的可以看多几遍

第2集 小滴课堂1024电商平台业务架构介绍

简介:1024电商平台业务架构

  • 业务整体架构图

在这里插入图片描述

  • 各个大模块功能介绍(有个大体认知就行)

  • 项目规模和人员配比(高级工程师或者TeamLeader面试会问到,为什么这样搭配?)

    • 公司规模800人左右,技术人员占比300人,这边业务线研发人员50人左右, 研发人员是业务线划分

    • 研发人员: 50人(总负责人高级技术专家, 阿里P8或者资深P7+)

      • 前端10人

        • 负责C端界面研发、管理后端研发
        • 部分具备全栈功能
      • 后端20人

        • 多个微服务开发和工程搭建
        • 每个微服务都有2个主负责人,1人手上会有2~3个项目
        • 5~10人有一个小组组长(P7)
      • 运维3人

        • 负责K8S和Rancher平台微服务、中间件搭建、监控处理、IaaS资源管理
      • 测试5人:

      • app端开发 12人(Flutter技术栈)

    • 开发周期:1到2年,不断迭代

      • 初版1~2个月,接下去是每个周一个版本
    • 这个就说到了一个,如何定义一个完整的项目,任何企业的产品都是不断迭代,功能增加删除

  • 如果要完成这些全部也不难,可以关注我们小滴课堂,专题技术+大课训练营 就可以开发完成这些了

    • 学时也超过半年,所以学完估计也是1~2年了
    • 这个层级的TeamLeader人员是阿里P8高级技术专家
    • 来个互联网一线薪酬(图片来源网上,基本符合 ,课程结尾会详细介绍各层级要求)

在这里插入图片描述

第3集 1024电商平台数据库划分+用户相关表介绍

简介:讲解电商营销中心数据库划分和用户表介绍

  • 换个熟悉的方式,大家可以看懂我们要做的模块和流程

    • 前后端分离架构,容器编排部署

在这里插入图片描述

  • 各个微服务独立数据库,到搭建每个微服务的时候再介绍

    • 用户服务数据库 xdclass_user
    • 商品服务数据库 xdclass_product
    • 优惠券服务数据库 xdclass_coupon
    • 订单服务数据库 xdclass_order
  • 用户服务数据库 (其他用到再增加)

    • 用户表
    CREATE TABLE `user` (
      `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(128) DEFAULT NULL COMMENT '昵称',
      `pwd` varchar(124) DEFAULT NULL COMMENT '密码',
      `head_img` varchar(524) DEFAULT NULL COMMENT '头像',
      `slogan` varchar(524) DEFAULT NULL COMMENT '用户签名',
      `sex` tinyint(2) DEFAULT '1' COMMENT '0表示女,1表示男',
      `points` int(10) DEFAULT '0' COMMENT '积分',
      `create_time` datetime DEFAULT NULL,
      `mail` varchar(64) DEFAULT NULL COMMENT '邮箱',
      `secret` varchar(12) DEFAULT NULL COMMENT '盐,用于个人敏感信息处理',
      PRIMARY KEY (`id`),
      UNIQUE KEY `mail_idx` (`mail`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    
    • 收货地址表
    CREATE TABLE `address` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
      `default_status` int(1) DEFAULT NULL COMMENT '是否默认收货地址:0->否;1->是',
      `receive_name` varchar(64) DEFAULT NULL COMMENT '收发货人姓名',
      `phone` varchar(64) DEFAULT NULL COMMENT '收货人电话',
      `province` varchar(64) DEFAULT NULL COMMENT '省/直辖市',
      `city` varchar(64) DEFAULT NULL COMMENT '市',
      `region` varchar(64) DEFAULT NULL COMMENT '区',
      `detail_address` varchar(200) DEFAULT NULL COMMENT '详细地址',
      `create_time` datetime DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COMMENT='电商-公司收发货地址表';
    

第四章 1024电商平台项目技术选择和创建聚合工程项目

第1集 为什么选择SpringCloudAlibaba作为技术和版本说明

简介:微服务技术对比和选择,版本说明

  • SpringCloud
全家桶+轻松嵌入第三方组件(Netflix 奈飞)
官网:https://spring.io/projects/spring-cloud
配套
通信方式:http restful
注册中心:eureka
配置中心:config
断路器:hystrix
网关:zuul/gateway
分布式追踪系统:sleuth+zipkin
  • Spring Cloud Alibaba
全家桶+阿里生态多个组件组合+SpringCloud支持

官网 https://spring.io/projects/spring-cloud-alibaba

配套

通信方式:http restful
服务注册发现:Nacos
服务限流降级:Sentinel
分布配置中心:Nacos
服务网关:SpringCloud Gateway
服务之间调用:Feign、Ribbon
链路追踪:Sleuth+Zipkin
  • 为什么要选择SpringCloud和AlibabaCloud的区别
官网 https://spring.io/projects/spring-cloud-alibaba#overview
 
SpringCloud和AlibabaCloud组件存在很大交集,互相配合

SpringCloud很多组件是基于第三方整合,目前多个已经不更新了,比如zuul、eureka、hystrix等

AlibabaCloud 提供一站式微服务解决方法,已经和SpringCloud进行了整合,组件互相支持

我们也习惯称为 Spring Cloud Alibaba

详细介绍:https://mp.weixin.qq.com/s/NMD52MLDY2Lq3LSeOcVwjA

  • 版本说明(21年全新,未来会升级,如果期间有三方难以解决的bug或者漏洞再更换版本)

    • SpringBoot 2.3.3.RELEASE 版本

    • Spring Cloud Hoxton.SR8 版本

      • 有另外一个 Spring Cloud 2020 版本搭配SpringBoot2.4以上
      • 刚发布,有不少坑,一般都不会用最新版本
    • AlibabaCloud 2.2.1.RELEASE 版本

第2集 Maven聚合工程创建微服务项目实战

简介:使用Maven聚合工程创建微服务架构

  • maven聚合工程

    • xdclass-common
    • xdclass-product-service
    • xdclass-user-service
    • xdclass-order-service
    • xdclass-coupon-service
    • xdclass-gateway
  • 创建项目(记得删除聚合工程src目录)

  • 添加依赖

   <modelVersion>4.0.0</modelVersion>

    <groupId>net.xdclass</groupId>
    <artifactId>xdclass-1024-shop</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>xdclass-common</module>
        <module>xdclass-product-service</module>
        <module>xdclass-user-service</module>
        <module>xdclass-order-service</module>
        <module>xdclass-coupon-service</module>
        <module>xdclass-gateway</module>
    </modules>


    <!-- 一般来说父级项目的packaging都为pom,packaging默认类型jar类型-->
    <packaging>pom</packaging>


    <properties>

        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring.boot.version>2.3.3.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
        <alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version>
        <mybatisplus.boot.starter.version>3.4.0</mybatisplus.boot.starter.version>
        <lombok.version>1.18.16</lombok.version>
        <commons.lang3.version>3.9</commons.lang3.version>
        <commons.codec.version>1.15</commons.codec.version>
        <springfox.boot.starter.version>3.0.0</springfox.boot.starter.version>
        <docker.image.prefix>xdclass-cloud</docker.image.prefix>

        <!--跳过单元测试-->
        <skipTests>true</skipTests>

    </properties>



    <!--锁定版本-->
    <dependencyManagement>
        <dependencies>
            <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/2.3.3.RELEASE-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies/Hoxton.SR8-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies/2.2.1.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>



            <!--mybatis plus和springboot整合-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatisplus.boot.starter.version}</version>
            </dependency>

            <!--https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.16-->
            <!--scope=provided,说明它只在编译阶段生效,不需要打入包中, Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
            </dependency>



            <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons.lang3.version}</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
            <!--用于加密-->
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons.codec.version}</version>
            </dependency>



            <!--接口文档依赖-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-boot-starter</artifactId>
                <version>${springfox.boot.starter.version}</version>
            </dependency>



        </dependencies>
    </dependencyManagement>

    <!-- 代码库 -->
    <repositories>
        <repository>
            <id>maven-ali</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>


    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <!--module不用添加打包版本信息-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

  • 注意: 有些包maven下载慢,等待下载如果失败

    • 删除本地仓库spring相关的包,重新执行 mvn install
    • 建议先使用默认的maven仓库,不用更换地址

在这里插入图片描述

第3集 开源中国Git仓库-介绍和项目纳入版本管理

简介:gitee介绍和git配置

  • Git介绍

    • 是一个版本管理工具, 其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原
  • 基于git协议的代码仓库

    • github 全球最大同性交友社区
    • gitee 开源中国
    • gitlab 开源的git仓库平台,阿里等大厂就是基于这个搭建
    • codeup 阿里云上的免费git仓库
  • gitee仓库地址

    • https://gitee.com/
  • 大课项目必须用git吗?

    • 如果是因为不会git,而不用则不行,因为这个是互联网公司必备的
    • 可以看联系客服看小滴课堂 git+gitlab专题视频
  • 本地安装文档

    • https://www.runoob.com/git/git-install-setup.html
    • https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
  • 大课项目加入git管理(是公钥设置,不是秘钥设置,视频有口误)

    • 本地生成公钥 ssh-keygen -t rsa -C “794666918@qq.com”
      • 生成公钥文档:https://gitee.com/help/articles/4181
      • 设置公钥文档:https://gitee.com/help/articles/4191#article-header0
    • 进入项目目录

在这里插入图片描述

在这里插入图片描述

第五章 写代码飞的感觉,巩固下这几个提效利器

第1集 POJO类的提效利器Lombok插件

简介:讲解lombok的介绍和安装

  • 提效插件:Lombok、MybaitsPlus、SwaggerUI

    • 这里只做快速回顾,如果不熟悉的,联系我们客服看相关专题课程,参加大课训练营的都可以5折购买
  • 什么lombok

    • 一个优秀的Java代码库,简化了Java的编码,为Java代码的精简提供了一种方式
    • 你是否发现每个JavaBean都会写getter,setter,equals,hashCode和toString的模板代码,特别的多于没技术
  • lombok消除Java的冗长代码,尤其是对于简单的Java对象,只要加上注解就行

  • 使用方式

    • 顶层parent项目添加依赖进行版本管理 ( 创建项目的时候已经添加 )
    <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
    			    <version>1.18.16</version>
              <scope>provided</scope>
    </dependency>
    
    • 需要的module项目里面再引入
  • 添加IDE工具对Lombok的支持

    • 点击File-- Settings设置界面,安装Lombok插件,然后重启idea

在这里插入图片描述

第2集 Lombok插件常见注解实战和项目引入通用jar

简介:讲解lombok的常见注解实战

  • xdclass-user-service进行测试

    • common项目添加
      • 后续各个项目都依赖的包,可以统一在common项目里面添加管理,
    <dependency>
               <groupId>org.projectlombok</groupId>
               <artifactId>lombok</artifactId>
    </dependency>
    
    <!--项目中添加 spring-boot-starter-->
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    • user-service项目引入common项目
    <dependency>
         <groupId>net.xdclass</groupId>
         <artifactId>xdclass-common</artifactId>
         <version>1.0-SNAPSHOT</version>
    </dependency>
    
    • 聚合工程的pom文件 修改Lombok的作用域范围
    <!--https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.16-->
    <!--scope=provided,说明它只在编译阶段生效,不需要打入包中, Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件-->
    <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <version>${lombok.version}</version>
       <!--<scope>provided</scope>-->
    </dependency>
    
  • 常见注解

    • @Getter/@Setter

      • 作用类上,生成所有成员变量的getter/setter方法
      • 作用于成员变量上,生成该成员变量的getter/setter方法
    • @ToString

      • 作用于类,覆盖默认的toString()方法
    • @EqualsAndHashCode

      • 作用于类,覆盖默认的equals和hashCode
    • @NoArgsConstructor

      • 生成无参构造器
    • @AllArgsConstructor

      • 生成全参构造器
    • @Data

      • 作用于类上,是以下注解的集合
        • @ToString
        • @EqualsAndHashCode
        • @Getter
        • @Setter
        • @RequiredArgsConstructor
    • @Log / @Slf4j

      • 作用于类上,生成日志变量, 用于记录日志, 已经在web项目中添加log依赖

      • 如果不生效,记得检查下面的配置,另外重新更新下lombok插件,重启idea

在这里插入图片描述

第3集 增强版ORM框架-Mybatis plus介绍

简介:增强版ORM框架 mybatis plus介绍

  • 背景

    • 写一个数据库表的crud接口,编写实体类-》编写Controller-》编写Service-》编写DAO-》-》编写XML文件
    • 特别是管理后台,多数都是简单的CRUD,用普通的mybatis有的鸡肋
  • 介绍

    • 官网 https://baomidou.com/
    • 是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生
    • 是怎么增强的呢?已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,类似JPA但优于JPA
  • SpringBoot整合

    • 添加依赖(common项目里面添加,user-service项目里面测试)
      		<dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
           </dependency>
    
           <dependency>
               <groupId>com.baomidou</groupId>
               <artifactId>mybatis-plus-boot-starter</artifactId>
           </dependency>
    
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到