聊一聊大型购物平台的系统设计与架构
一、功能要求
1.搜索
顾客能否搜索到他们想要购买的商品以及我们是否需要展现我们不能提供给当前顾客的商品。
比如,假如顾客所在地方是因为疫情而管制快递,那么我们是否给顾客商品的搜索结果。
2. 购物车
购物车是很有必要的,通过购物车可以增加用户购买他们喜欢或想要的东西。而且通过购物车,可以了解用户的喜好,更好的推送给用户他们需要的东西。
3. 结账
这是用户确认订单并付款的地方。
4. 查看订单
通过这个功能,用户可以查看他们过去的订单。用户也可以通过这个功能查看最近的购物订单的快递信息和预计到达时间。
二、非功能性需求
1. 低延迟
这个购物平台应该需要非常低的延迟,如果在购物的过程中遇到延迟会非常影响购物体验。
2. 高可用
搜索算法、订单算法等算法都需要高可用。系统不能长时间出现故障,这样会失去用户对平台的信任。
3.高一致性
与支付相关的数据与用户信息必须高度一致。购物平台是和钱打交道,不能出现多处数据不一致的问题,否则会导致经济损失或失去用户。
三、大型购物平台架构
- Elasticsearch 集群
Elasticsearch 集群是一组具有相同属性的节点,当有节点加入或有节点离开,集群都会进行一次重组。Elasticsearch 集群在所以可用节点之间均匀分布数据。主要用于搜索系统。
2. Cassandra 集群
Cassandra 是一个点对点分布式系统,由一组节点组成,其中任何节点都可以接受读或写请求。用于历史订单系统和推荐服务系统。
3. Redis集群
我们使用在下订单的时候使用Redis集群。
4. MongoDB集群
MongoDB 有两种不同的分布式配置。第一个是“副本集”,其中多个服务器承载相同的数据来避免出现故障。第二种是“分片集群”,几台服务器中每台只承载整个数据集的一个片段,以达到更强的性能和存储更大的数据集。
主要是用于存储购物平台中各种系统的数据。比如购物车啊、订单处理系统啊等等。
5. Kafka集群
这个集群主要是协调各系统的工作。让合适的数据以合适的形式出现在合适的地方。
6. Spark
Spark是进行大数据分析的,主要是为了给用户更好的推荐商品。
7. Restful Web Service
Restful Web Service 是一种基于 REST 架构的轻量级、可维护和可扩展的服务。Restful Web Service以安全、统一、无状态的方式将应用程序中的 API 公开给调用客户端。调用客户端可以使用 Restful service执行预定义的操作。
8. Load balancer
在计算的过程中使用负载均衡,可以让整体处理更加高效。