美文网首页
【SpringCloud】1.0 SpringCloud+Ali

【SpringCloud】1.0 SpringCloud+Ali

作者: bobokaka | 来源:发表于2021-06-11 16:14 被阅读0次

    1. 为什么用SpringCloud+Alibaba Cloud

    SpringCloud和AlibabaCloud组件存在很⼤交集,互相配合
    SpringCloud很多组件是基于第三⽅整合,⽬前多个已经不更新了,⽐如zuul、eureka、hystrix等
    AlibabaCloud 提供⼀站式微服务解决⽅法,已经和SpringCloud进⾏了整合,组件互相⽀持

    2.技术体系简述

    本系列采用SpringCloud 2020.0.3+ AlibabaCloud2.2.1 + JDK11
    Maven聚合⼯程 + Mybatis操作数据库

    服务治理Nacos+AlibabaCloud服务连接

    RPC调⽤ Ribbon+负载均衡策略实现

    新⼀代Open-Feign组件+多种HTTP调⽤案例

    CAP+BASE理论,注册中心架构选择

    微服务容错组件Alibaba-Sentinel多种流控策略+熔断降级
    新⼀代SpringCloud-Gateway+多种路由断⾔+⾃定义全局鉴权过滤器

    分布式链路追踪Zipkin+Sleuth实战 + Mysql数据持久

    分布式配置中⼼Nacos实战+动态配置下发

    掌握Docker容器在阿⾥云ECS服务器安装+私

    有镜像仓库搭建阿⾥云Docker部署
    Dockerfile+JDK11+AlibabaCloud全家桶镜像构建推

    阿⾥云Docker部署Sentinel+Nacos+Zipkin+Gateway +AlibabaCloud
    全家桶

    3.0 整体技术栈

    SpringBoot.2.4.6 + Mybatis+ SpringCloud2020.0.3+ AlibabaCloud 2.2.1
    JDK11 + IDEA2021.1.2旗舰版 + Docker + 阿⾥云CentOS7.9
    

    AlibabaCloud官网:https://github.com/alibaba/spring-cloud-alibaba

    4.0 传统单机-分布式架构

    4.1 单机架构

    优点: 易于测试 便于集成 ⼩型项⽬友好
    缺点: 开发速度慢 启动时间⻓ 依赖庞⼤


    image.png

    4.2 分布式架构

    SOA :Service Oriented Architecture ⾯向服务的架构
    其中包含多个服务, 服务之间通过相互依赖最终提供⼀
    系列的功能, ⼀个服务 通常以独⽴的形式存在与操作系
    统进程中, 各个服务之间 通过⽹络调⽤。

    微服务:将⼀个⼤的单体应⽤进⾏细粒度的服务化拆
    分,每个拆分出来的服务各⾃独⽴打包部署,各个服务
    之间 通过⽹络调⽤。

    优点
    易开发、理解和维护
    独⽴的部署和启动

    缺点
    分布式系统->分布式事务问题
    需要管理多个服务->服务治理


    image.png

    5.0 微服务全家桶架构组成

    常⻅组件
    ⽹关
    路由转发 + 过滤器
    /api/v1/video/ 视频服务
    /api/v1/order/ 订单服务
    /api/v1/user/ ⽤户服务
    服务发现注册
    调⽤和被调⽤⽅的信息维护
    配置中⼼
    管理配置,动态更新 application.properties
    链路追踪
    分析调⽤链路耗时 例⼦:下单-》查询商品服务获取
    商品价格-》查询⽤户信息-》保存数据库
    负载均衡器
    分发流量到多个节点,降低压⼒
    熔断
    保护⾃⼰和被调⽤⽅

    6.0 业界微服务架构常⻅解决⽅案

    ServiceComb
    华为内部的CSE(Cloud Service Engine)框架开源, ⼀个
    微服务的开源解决⽅案,社区相对于下⾯⼏个⽐较⼩
    ⽂档不多,通信领域⽐较强

    dubbo
    zookeeper + dubbo + springmvc/springboot
    官⽅地址:http://dubbo.apache.org/#!/?lang=zh-cn
    配套
    通信⽅式:rpc
    注册中⼼:zookeper/redis/nacos
    配置中⼼:diamond、nacos

    SpringCloud
    全家桶+轻松嵌⼊第三⽅组件(Netflix 奈⻜)
    官⽹:https://spring.io/projects/spring-cloud
    配套
    通信⽅式:http restful
    注册中⼼:eruka
    配置中⼼:config
    断路器:hystrix
    ⽹关:zuul/gateway
    分布式追踪系统:sleuth+zipkin

    Spring Alibaba Cloud
    全家桶+阿⾥⽣态多个组件组合+SpringCloud⽀持
    官⽹ https://spring.io/projects/spring-cloud-alibaba
    配套
    通信⽅式:http restful
    注册中⼼:nacos
    配置中⼼:nacos
    断路器:sentinel
    ⽹关:gateway
    分布式追踪系统:sleuth+zipkin

    6.0 微服务AlibabaCloud介绍和架构环境准备

    讲解AlibabaCloud核⼼组件介绍
    官⽹介绍
    https://spring.io/projects/spring-cloud-alibaba#overview

    AlibabaCloud全家桶介绍
    https://github.com/alibaba/spring-cloud-alibaba
    服务注册发现:Nacos
    服务限流降级:Sentinel
    分布配置中⼼:Nacos
    服务⽹关:SpringCloud Gateway
    服务之间调⽤:Feign、Ribbon
    链路追踪:Sleuth+Zipkin

    7.0 案例:在线教育微服务模块

    7.1 设计

    在线教育模块划分
    视频服务
    订单服务
    ⽤户服务

    7.2 数据库

    采⽤3个数据库,每个服务单独⼀个库

    视频服务数据库 video表

    CREATE TABLE `video` (
     `id` int(11) unsigned NOT NULL
    AUTO_INCREMENT,
     `title` varchar(524) DEFAULT NULL COMMENT '视
    频标题',
     `summary` varchar(1026) DEFAULT NULL COMMENT
    '概述',
     `cover_img` varchar(524) DEFAULT NULL COMMENT
    '封⾯图',
     `price` int(11) DEFAULT NULL COMMENT '价格, 分',
     `create_time` datetime DEFAULT NULL COMMENT
    '创建时间',
     `point` double(11,2) DEFAULT '8.70' COMMENT
    '默认8.7,最⾼10分',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT
    CHARSET=utf8;
    INSERT INTO `video` (`id`, `title`, `summary`,
    `cover_img`, `price`, `create_time`, `point`)
    VALUES
    

    ⽤户服务数据库 user表

    CREATE TABLE `user` (
     `id` int(11) unsigned NOT NULL
    AUTO_INCREMENT,
     `phone` varchar(32) DEFAULT NULL,
     `pwd` varchar(128) DEFAULT NULL,
     `sex` int(2) DEFAULT NULL,
     `img` varchar(128) DEFAULT NULL,
     `create_time` datetime DEFAULT NULL,
     `role` int(11) DEFAULT NULL COMMENT '1是普通⽤
    户,2是管理员',
     `username` varchar(128) DEFAULT NULL,
     `wechat` varchar(128) DEFAULT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT
    CHARSET=utf8mb4;
    
    INSERT INTO `user` (`id`, `phone`, `pwd`,
    `sex`, `img`, `create_time`, `role`,
    `username`, `wechat`)
    VALUES
     (1, '123', '666', 1, 'xdclass.net', '2021-09-
    09 00:00:00', 1, 'jack', 'xdclass6'),
     (2, '2323432', '794666918', 1, 'wwwww',
    '2020-05-20 04:54:01', 1, '⼩滴Anna姐姐',
    'xdclass-anna'),
     (3, '2323432', 'xdclass-lw', 1, 'wwwww',
    '2020-05-20 04:54:42', 1, '⼆当家⼩D',
    'xdclass1'),
     (4, '2323432', '3232323', 1, 'wwwww', '2020-
    05-20 04:55:07', 1, '⽼王', 'xdclass-lw')
    

    订单服务数据库video_order表

    CREATE TABLE `video_order` (
     `id` int(11) unsigned NOT NULL
    AUTO_INCREMENT,
     `out_trade_no` varchar(64) DEFAULT NULL
    COMMENT '订单唯⼀标识',
     `state` int(11) DEFAULT NULL COMMENT '0表示未
    ⽀付,1表示已⽀付',
     `create_time` datetime DEFAULT NULL COMMENT
    '订单⽣成时间',
     `total_fee` int(11) DEFAULT NULL COMMENT '⽀付
    ⾦额,单位分',
     `video_id` int(11) DEFAULT NULL COMMENT '视频
    主键',
     `video_title` varchar(256) DEFAULT NULL
    COMMENT '视频标题',
     `video_img` varchar(256) DEFAULT NULL COMMENT
    '视频图⽚',
     `user_id` int(12) DEFAULT NULL COMMENT '⽤户
    id',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT
    CHARSET=utf8;
    

    8.0 Maven聚合⼯程创建微服务项⽬

    maven聚合⼯程
    xdclass-common
    xdclass-video-service
    xdclass-user-service
    xdclass-order-service

    相关文章

      网友评论

          本文标题:【SpringCloud】1.0 SpringCloud+Ali

          本文链接:https://www.haomeiwen.com/subject/eykveltx.html