软件架构-解密电商系统-订单交易业务
2021/9/14 8:04:43
本文主要是介绍软件架构-解密电商系统-订单交易业务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
很多人都在淘宝购买过东西,基本得流程都是一致的。
(一)订单
- 购物车
例如:jd分为自营和多家店铺的,它的购物车比较复杂些。
购物车如果保存在session中的话,用户量比较大的情况下,tomcat承受不住。比较合理的方式是保存在redis中,来一起说下redis保存的数据格式。
针对购物车结构
- CartGroup(一个店铺一个CartGroup)
- CartPkg(一个订单就是一个包裹)
- 一个订单里面就是一个List
购物车分两种,登录前购物车和登录后购物车
- 登录前是通过redis内部保存的,key=ip_类型(pc,ios,android)
- 登录后是通过用户的userid,key=userId
- 登录前到登录后他们两者通过redis进行对比,获取最新的合并结果。
- 下单
买个索尼电视,佳能的相机,这是2个店铺,配送方式不同,仓库也不一样,每个商家的优惠力度也不一样,有打五折的,有打七折的。例如:苹果打5折,我买10个,地址是在郑州,配送方式是从武汉,武汉仓库只有9个苹果,但是河北那边有2个,长沙有3个。按照订单理论如果武汉有11个,买10个刚刚够你买。但是现在武汉只有9个,所以直接就给你发了武汉的9个,河北的1个,够你的10个,这个就是就近原则。但是这样有个问题退单怎么办,整体退单要退一起退,反之不要退。 设计到订单的拆分合并。
订单号生成?订单防重。只要保证分布式下不重复就可以
- redis incr 自增
- 时间戳+自增变量
- UUID
- 电商订单的流程梳理
t_order 订单表
t_orderdetail订单明细表
t_orderpay 支付记录表
t_ordership 订单配送表
t_orderlog订单日志表
t_express快递配送表
- MQ实现最大特点:异步和解耦。(付款,订单状态,发布状态)
(二)统一配置文件神器-Disconf
百度disconf是一套完整的基于zookeeper的分布式配置统一解决方案。
一个分布式环境中,同类型的服务往往会部署很多实例。这些实例使用了一些配置,为了更好地维护这些配置就产生了配置管理服务。通过这个服务可以轻松地管理成千上百个服务实例的配置问题.
- 官网介绍
https://github.com/knightliao/disconf
虽然3年没维护了,但是依然很给力
- 文档
http://disconf.readthedocs.io/zh_CN/latest/
-
介绍
-
disconf的模块架构图
-
快速开始
这里直说pom里面的配置,具体看disconf文档写的更清楚
<dependency> <groupId>com.baidu.disconf</groupId> <artifactId>disconf-client</artifactId> <version>2.6.36</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.6</version> </dependency>
PS:订单交易的流程和在web开发中如果多项目通过统一配置文件来进行处理。
这篇关于软件架构-解密电商系统-订单交易业务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding