谷粒商城——分布式基础-全栈开发篇
1、写在前面仿京东商城大型分布式架构电商平台:微服务架构+分布式+全栈+集群+部署+自动化运维+可视化CICD
Gitee仓库:https://gitee.com/namdev/gulimall
后台接口文档:https://easydoc.net/s/78237135/ZUqEdvA4/hKJTcbfd
b站视频地址:全网最强电商教程《谷粒商城》对标阿里P6/P7,40-60万年薪
2、架构
3、基础环境linux、docker
数据库
人人后台
分布式组件
4、商品、订单、仓库服务后台数据库
pms库Attr:属性表
Attr_group:属性分组表
Attr_attrgroup_relation:属性分组关联表
Product_attr_value:商品id属性值表
Spu_info:商品spu
Sku_info:商品sku
Sku_images:商品sku图片
Sku_sale_attr_values:商品sku销售属性值
三级分类——属性分组——属性
属性——商品(spu)属性集——商品型号(sku)属性
保存商品Spu_info:基本信息
Spu_info_desc:i ...
开发总结——金融业务平台
1、产品架构
2、业务流程1、账户绑定
(用户表、用户绑定表)
用户——绑定信息提交(借款、出借)——调用第三方托管平台账户创建(阿里云短信)——绑定完成(异步更新)
2、申请借款额度
(用户表、积分表、借款人表、借款人图片表)垂直分表
提交借款人个人信息(身份证等证件资源:对象存储)——后台系统评估——审核通过——获取额度
3、借款额度审核
后台借款额度申请列表——借款人信息——借款额度审核
4、借款申请
(借款信息表、积分等级配置表、标的准备表)
获取借款额度(用户积分)——提交借款申请——获取借款申请状态
5、借款审核
后台借款信息列表——借款详情——借款审批
6、标的管理
(标的表)
审核完成——新标的、标的详情、标的列表
7、我要投资
前端标的列表
8、充值
(用户账号表[余额等]、交易流水表)
注册 + 账户绑定——充值——第三方托管支付——完成(异步修改)
幂等性保证(重复请求):判断流水是否存在,存在则退出
9、投标
收益根据还款方式:等额本息、等额本金、按期付息到期还本、一次还本付息
(标的表、标的出借记录表、还款记录表、标的出借回款记录表)标的id
标的详情——输 ...
开发总结——MongoDB、业务流程
1、架构
2、MongoDB简介基于分布式文件存储的开源数据库系统
字段值可以包含其他文档,数组及文档数组。
特点MongoDB 是一个面向文档存储的数据库
MongoDB记录中设置任何属性的索引 (如:FirstName=”Sameer”,Address=”8 Gandhi Road”)来实现更快的排序
可以通过本地或者网络创建数据镜像,实现高扩展性
如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上,分片
Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作
场景1、网站数据、大数据、缓存
2、高伸缩性
3、对象、json数据
操作MongoTemplate
MongoRepository(SpringData方法定义规范)
3、预约挂号业务1、排班和挂号详情信息——【医院+科室——规则——日期——排班、挂号信息】
2、确认挂号信息——【就诊人、排班信息】
3、生成预约挂号订单【就诊人 + 排班 —— 生成订单】
4、挂号订单支付(微信)【微信支付、订单状态】
5、取消预约订单【退款、取消订单】
开发总结——前后端分离+微服务
1、MP基本流程
主键自动生成
自动填充
乐观锁实现
select、分页
delete:逻辑删除、物理删除
mp性能分析插件
条件查询Querywrapper
2、后端1json时区
swagger测试
统一返回格式
@requestbody
统一、指定、自定义异常处理
日志输出、日志级别
3、前端1es6语法:
数组解构、对象赋值、模拟字符串、对象方法、箭头函数
vue指令、组件
vue生命周期:
Create、Mounted
断点
Vue路由
Axios
Element-ui
Node.js
npm
Babel
前端模块化
Webpack
vue-admin-template、目录结构
跨域
路由切换
开发流程
服务端渲染技术
NUST框架
4、oss、视频点播、短信、微信支付、微信注册阿里云对象存储
阿里云视频点播:上传、播放、删除
阿里云短信服务
微信支付
微信注册
5、后端2nginx
EasyExcel读写
Vue tree
vo
bean转换
树形结构:遍历、循环
路由、隐藏路由、动态路由
富文本编辑器
多表联查——SQL
openfeign、nacos
远程调用流程: ...
Mycat
1、概述数据库中间件① Java与数据库紧耦合。
② 高访问量高并发对数据库的压力。
③ 读写请求数据不一致
对比:
作用读写分离:配合主从复制、主备模式
数据分片:分库分表
多数据源整合
原理拦截
三个重要配置文件
1、逻辑库、表、分片节点
2、分片规则
3、用户、系统配置
2、读写分离Myqsl:从接入点开始复制
一主一从日志格式
balance属性:读写分离
复制原理:
双主双从主备切换
3、分库分表分库
分表多表联查
全局表:全局一致性(广播)
常用分片规则:
取模、分片枚举、范围约定、日期
全局序列1、本地文件
2、时间戳
3、数据库方式
4、reids、雪花算法等
4、基于HA机制的Mycat高可用Mycat集群保证数据库高可用
haproxy保证mycat高可用(负载均衡)
Keepalived保证haproxy高可用(创建虚拟ip)
安全权限
user、privileges、sql拦截
6、监控
RocketMQ
1、概述MQ概述限流削峰(请求存在队列中)
异步解耦
数据采集
MQ常见协议JMS
STOMP
AMQP
MQTT
2、RocketMQ基本概念消息、主题、标签、队列、消息标识(消息唯一id:生产者、broker)
系统架构
生产者
消费者
(一个消费者组,消费者消费队列不同)
Name Server(注册中心):broker管理、路由信息管理
路由注册、路由剔除(心跳包)、路由发现、选择策略:轮询
broker
组成:实体、客户端管理、存储、高可用(集群数据同步)、索引(ID)
集群部署:主备集群
主从、主备
工作流程1、启动server、监听端口
2、Broker与serve长连接
3、创建topic
4、生产者发送消息:和server建立连接,获取路由(topic、broker)。
与broker长连接,向broker发送消息。路由信息每30s缓存在本地。
5、消费者,server连接,获取路由。与broker长连接,消费。
Consumer发送心跳,确认broker存活状态。
Topic的创建模式集群、broker模式
读写队列一般情况数量一样
设计目的:方便topic的 ...
RabbitMQ
1、概述什么是MQ消息队列
流量削峰
应用解耦:上游只需发送消息
异步处理:异步处理回调消息
四大核心概念生产者、交换机、队列、消费者
六大核心模式简单、工作队列、发布订阅、路由、主题、发布确认
工作原理Broker
Virtual host
Connection
Channel
Exchange
Queue
Binding
2、核心工作队列轮询分发消息
消息应答:消费者是否处理消息
自动应答、手动应答(批量应答)
消息自动重新入队
rabbitmq持久化:队列持久化、消息持久化
不公平分发
预取值:通道中堆积消息个数
发布确认单个确认发布
批量确认发布
异步确认发布:异步通知——交换机确认收到、未确认收到
并发链路式队列——发消息和监听线程之间传递消息——本质:map
1、发送消息时进记录队列
2、确认回调再删除
未删除的——未确认消息
跳表
Exchange直接(direct), 主题(topic) ,标题(headers) , 扇出(fanout)
无名 exchange
临时队列
bindings
Fanout广播:路由key为空
Direct发送路由key对应队列— ...
ActiveMQ
1、简介
解耦、异步、削峰
分布式系统
只要消息发送,尽量异步
只要解耦,尽量引入消息中间件
2、编码JMS编码架构
原生API:
生产者:
连接工厂——获取连接——创建会话session
创建目的地(队列、主题)——创建消息生产者
消息生产者发送消息
(1)创建消息
(2)通过生产者发送
关闭资源(倒序:生产者、session、连接)
消费者:
连接工厂——获取连接——创建会话session
创建目的地(队列、主题)——创建消息消费者
消费生产者接收消息——接收消息(一直型、定时型)、消息类型要一致
关闭资源(倒序:消费者、session、连接)
1、receive
2、监听
队列同时监听:轮询
主题:先订阅再有生产消息
3、JMSJavaEE
JMS:java消息服务
消息头
消息体
消息属性
可靠性:持久化、事务、签收、集群
4、Broker5、spring boot整合间隔定投
注解监听
6、传输协议种类
NIO + 多协议
7、消息存储和持久化AMQ
KahaDB:事务日志 + 索引文件
Db.log:存储消息、Db.data:B树索引、Lock:文件锁
LevelDB: ...
Spring Security
1、基本原理认证
授权
2、web权限查询数据库认证
自定义登录页面
方法注解
注销
原理分析
CSRF
3、微服务权限流程
数据库分表
JWT:JWT 头、内容、签名哈希
4、源码解析Spring Security 采取过滤链实现认证与授权
认证流程
权限访问流程
请求间共享认证信息
nginx
1、概念nginx
正向代理
反向代理
负载均衡
动静分离
2、配置高可用集群(主从模式)
高可用集群(双主模式)
3、原理