基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-001:需求讨论与技术架构选型

001:需求讨论与技术架构选型

1 微服务电商项目课程安排

今日课程任务

  1. 第六期微服务电商项目课程介绍
  2. 第六期微服务电商项目与第四期不同点
  3. 微服务电商项目技术架构选型
  4. 微服务电商项目系统的架构模型
  5. 微服务电商项目模块的划分
  6. 构建项目Maven、编码相关说明
  7. 基于Nacos作为分布式注册中心
  8. 构建微服务项目之微信服务
  9. 构建微服务项目之会员服务
  10. 整合openfeign客户端实现rpc调用
  11. 定义微服务接口响应的规范

2 微服务电商项目Vue页面展示

相关说明
该项目“基于SpringCloudAlibaba+Vue构建微服务电商项目”相比往期结业项目优化了很多,完全采用前后端分离架构的模式,由每特教育|蚂蚁课堂版权所有,未经过允许的情况下,私自分享视频和源码属于违法行为。
该项目作者:97后互联网架构师-余胜军
相关网址:www.mayikt.com
联系方式:微信yushengjun644、QQ644064779

项目采用目前比较流行的SpringBoot2.0/SpringCloudAlibaba构建微服务电商项目,
该项目涵盖从微服务电商需求讨论、数据库设计、技术选型、互联网安全架构、整合SpringCloudAlibaba核心组件Nacos/sentinel/Seata/canal等、分布式基础设施、Docker+k8s+jenkins实现微服务自动化部署、项目上线域名配置、SEO优化、大数据统计分析、前后分离架构、微信开发等。
能够完全独立设计与开发完成,基本上可以完全熟练掌握微服务架构流程及解决方案。

3 微服务电商项目核心技术选型

技术选型
A. 项目采用SpringBoot2.0+SpringCloudAlibaba构建微服务电商项目
1.使用Nacos作为注册中心,实现服务治理
2.使用新一代Gateway网关框架管理服务请求入口
3.使用Ribbon实现本地负载均衡器和openFegin客户端调用工具
4.使用Sentinel服务保护框架(系统自适应限流、降级、热词限流等)
5.使用消息总线Stream RocketMQ和Kafka
6.微服务API接口安全控制与单点登陆系统CAS+JWT+Oauth2.0

B. 分布式基础设施环境构建
1.分布式任务调度平台XXL-Job
2.分布式日志采集系统ELK +kafka
3.分布式事务解决方案Seata和RocketMQ
4.分布式锁解决方案Zookeeper、Redis
5.分布式配置中心Nacos
6.高并发分布式全局ID生成雪花算法
7.分布式Session框架Spring-Session 禁止使用Session 使用token
8.分布式服务追踪与调用链ZipKin
9.基于canal解决MySQL与Redis一致性问题
10.基于网关统一解决微服务接口跨域问题
11.基于openresty+lua+Redis实现亿级商品详情页面

C.项目运营与部署环境
1.分布式设施环境,统一采用docker安装
2.使用jenkins+docker+k8s实现自动部署
3.微服务API管理ApiSwagger
4.使用GitLab代码管理
5.统一采用第三方云数据库
6.使用七牛云服务器对静态资源实现加速
7.构建企业级Maven私服

D.前端技术架构
1.完全采用Vue前后端分离架构模式

4 微服务电商项目架构图流程

互联网项目渠道来源有PC端、移动端、小程序端、微信公众号等。
如何能支持这么多种渠道?
面向服务架构,在接口中传递渠道来源(eg:app_name=PC/Android/IOS)
基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-001:需求讨论与技术架构选型
基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-001:需求讨论与技术架构选型
基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-001:需求讨论与技术架构选型

5 微服务电商项目课程的安排

课程安排
技术选型:

第一节 微服务电商项目需求讨论与技术架构选型
第二节 微服务架构环境搭建Maven私服仓库、GitLiab代码仓库
第三节 构建微服务微服务网关、api文档doc管理

技术设施:
第一节 构建分布式基础设施注册中心与配置中心Nacos
第二节 构建分布式基础设Canal解决数据同步的问题

微服务公众号:
第一节 微服务电商项目-微信服务-wx公众号管理
第二节 基于设计模式构建-会员服务-联合登陆(QQ/微信)
第三节 基于设计模式构建-会员服务-唯一登陆

Vue整合技术:
第一节 构建前端Vue项目整合后端微服务接口
第二节 微服务电商项目-前后端分离架构跨域解决方案
第三节 微服务电商项目-前后端分离SSO单点登陆设计

消息服务平台:
第四节 微服务电商项目-消息服务平台-消息服务平台

商品详情页面:
第一节 微服务电商项目-商品服务-数据设计与搜索服务
第二节 微服务电商项目-商品服务-亿级商品详情页面设计
第三节 微服务电商项目-订单服务-订单服务超时设计

聚合支付模块:
第一节 微服务电商项目-MT聚合支付-数据设计
第二节 微服务电商项目-MT聚合支付-银联支付
第三节 微服务电商项目-MT聚合支付-支付宝支付
第四节 微服务电商项目-基于支付整合seata解决分布式事务问题
第五节 微服务电商项目-MT聚合支付-基于任务调度实现对账设计

秒杀抢购模块:
微服务电商项目-秒杀服务-秒杀抢购
微服务电商项目-秒杀服务-高并发解决方案

后台模块:
微服务电商项目-后台运营平台设计

日志模块:
微服务电商项目ELK日志分析
微服务电商项目zipkin服务追踪

安全模块:
第一节 微服务电商项目安全架构
第二节 微服务电商项目大数据用户行为分析

项目部署:
第一节 使用jenkins+docker+k8s实现自动部署 灰度发布测试
第二节 微服务电商项目上线部署环境

行为分析:
第一节 接口埋点设计、整个第三方数据统计分析
最终以实际课程表格为准。

环境要求
为了能够更好的学习互联网微服务架构,该项目对环境要求非常高,建议电脑配置CPU在I7 8700k以上处理、32GB内存或者电脑采用集群化部署。
1.JDK统一要求:JDK1.8以上
2.Maven 统一管理Jar
3.统一采用Docker安装软件
4.编码统一采用为UTF-8
5.开发工具完全采用idea

6 微服务电商项目项目模块构建

构建项目
mt-shop-parent-----公共Pranet接口
-----mt-shop-basics----分布式基础设施
---------mt-shop-basics-alibaba-nacos—注册中心 8080
---------mt-shop-basics-alibaba-nacos—分布式配置中心 8080
---------mt-shop-basics-alibaba-seata 分布式事务解决方案 8730
---------mt-shop-basics-alibaba-canal mysql与redis一致性的问题
---------mt-shop-basics-springcloud-gateway—统一请求入口 80
---------mt-shop-basics-xuxueli-xxljob—分布式任务调度平台
---------mt-shop-basics-codingapi-zipKin —分布式调用链系统

-----mt-shop-service-api提供公共接口
------------ mt-shop-service-api-weixin 微信服务接口
------------ mt-shop-service-api-member会员服务接口
------------ mt-shop-service-api-sso sso服务接口
------------ mt-shop-service-api-item商品服务接口
------------ mt-shop-service-api-search 搜索服务接口
------------ mt-shop-service-api-pay聚合支付平台
------------ mt-shop-service-api-order订单服务接口
------------ mt-shop-service-api-spike 秒杀服务接口
------------ mt-shop-service-api-sms 消息服务平台
服务接口中包含内存内容: 实体类层、接口层

-----mt-shop-service-impl公共接口的实现
------------ mt-shop-service-weixin 微信服务接口实现 9090
------------ mt-shop-service-member会员服务接口实现 7070
------------ mt-shop-service-api-sso sso服务接口实现 6060
------------ mt-shop-service-tem商品服务接口实现 5050
------------ mt-shop-service-search 搜索服务接口实现 3030
------------ mt-shop-service-pay聚合支付平台接口实现 2020
------------ mt-shop-service-order订单服务接口实现 1010
------------ mt-shop-service-spike 秒杀服务接口 4040
------------ mt-shop-service-sms 消息服务平台 9810

mt-shop-common 工具类 单独将该项目打入maven私服中引入
-----mt-shop-common-core—核心工具类

mt-shop-job—任务调度工程
----mt-shop-pay- reconcile — 支付对账任务
----mt-shop-pay- sms — 消息服务平台

mt-shop-portal 门户平台 vue工程
----mt-shop-portal-web 门户网站 支持PC端和H5端访问
----mt-shop-portal-sso 单点登陆系统
----mt-shop-portal-search 搜索系统
----mt-shop-portal-spike 秒杀系统
----mt-shop-portal-cms 系统

7 构建分布式注册中心Nacos

构建分布式注册中心nacos
解压nacos-server-1.1.4
安装目录\nacos-server-1.1.4\nacos\bin 双击startup.cmd即可
基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-001:需求讨论与技术架构选型
Nacos端口为8848
http://127.0.0.1:8848/nacos/#/login 账号密码nacos naocs

8 创建生产者微服务接口

mt-shop-parent
Maven依赖

<properties>
    <boot-version>2.1.11.RELEASE</boot-version>
    <mybatis.starter.version>2.0.0</mybatis.starter.version>
    <mapper.starter.version>2.1.5</mapper.starter.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!--  springboot 整合web组件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>

</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${boot-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

    </dependencies>
</dependencyManagement>

mt-shop-service-api
mt-shop-service-api-weixin

public interface WeiXinService {

    /**
     * 微信接口
     *
     * @return
     */
    @GetMapping("appInfo")
    String appInfo(Long userId);
}

9 创建微信服务接口的实现

mt-shop-service-impl
mt-shop-service-weixin
maven依赖

<dependencies>
    <dependency>
        <groupId>com.mayikt</groupId>
        <artifactId>mt-shop-service-api-weixin</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

实现类/启动类

@RestController
public class WeiXinServiceImpl implements WeiXinService {
    @Override
    public String appInfo(Long userId) {
        return "微信接口" + userId;
    }
}
@SpringBootApplication
public class AppWeiXin {
    public static void main(String[] args) {
        SpringApplication.run(AppWeiXin.class);
    }
}

application.yml

server:
  port: 9090
spring:
  application:
    name: mayikt-weixin
  cloud:
    nacos:
      discovery:
        ##nacos服务注册地址
        server-addr: 127.0.0.1:8848

10 创建会员服务调用微信服务接口

构建会员服务接口项目
mt-shop-service-member
maven依赖

<dependencies>
    <dependency>
        <groupId>com.mayikt</groupId>
        <artifactId>mt-shop-service-api-weixin</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

application.yml

server:
  port: 7070
spring:
  application:
    name: mayikt-member
  cloud:
    nacos:
      discovery:
        ##nacos服务注册地址
        server-addr: 127.0.0.1:8848
Feign接口/实现类/启动类
@FeignClient("mayikt-weixin")
public interface WeiXinServiceFeign extends WeiXinService {
    // Feign客户端复用机制
}

Feign接口/实现类/启动类

@FeignClient("mayikt-weixin")
public interface WeiXinServiceFeign extends WeiXinService {
    // Feign客户端复用机制
}
@RestController
public class MemberService {

    @Autowired
    private WeiXinServiceFeign weiXinServiceFeign;

    /**
     * 会员服务调用微信接口
     * @param userId
     * @return
     */
    @GetMapping("/memberToWeiXin")
    public String memberToWeiXin(Long userId) {
        return "会员服务调用:" + weiXinServiceFeign.appInfo(userId);
    }
}
@SpringBootApplication
@EnableFeignClients
public class AppMember {
    public static void main(String[] args) {
        SpringApplication.run(AppMember.class);
    }
}

常见报错问题
status 405 reading WeiXinServiceFeign#getAppInfo(Long)
传递参数加上注解@RequestParam(“userId”)

测试效果:
基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-001:需求讨论与技术架构选型

上一篇:[CF1154F] Shovels Shop - dp


下一篇:python - django models.py 文件中表名相互引用问题