【cursor重构谷粒商城】03——谷粒商城技术架构选型存在哪些不足?

server/2025/1/21 5:33:33/

前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。

项目将基于谷粒商城项目,并且对谷粒商城项目进行二次重构,使其满足最新的主流技术栈要求。

上一篇文章,给大家演示了用cursor快速开发一个项目的demo,这篇文章,我们主要对谷粒商城进行介绍。让您了解必要的背景知识。

一、项目简介

谷粒商城分为以下篇章:

分布式基础(全栈开发篇):
涵盖项目的基础知识和全栈开发技术。

分布式高级(微服务架构篇):
深入探讨微服务架构的高级概念和实践。

高可用集群(架构师提升篇):
专注于高可用集群的架构设计和优化。

项目架构
在这里插入图片描述

但是,我不止会重复上面的架构,而是会优化,重构。比如cicd部分,会考虑使用coze。敬请期待。

二、什么是B2C模式

谷粒商城是一个B2C电商模式的项目

B2B(Business to Business):

企业与企业之间的交易模式,通常用于批发和大宗商品交易。
例如:阿里巴巴、慧聪网等。
B2C(Business to Consumer):

企业直接面向消费者销售产品或服务的模式。
例如:京东、天猫等。
C2C(Consumer to Consumer):

消费者与消费者之间的交易模式,通常通过第三方平台进行。
例如:淘宝、闲鱼等。
C2B(Consumer to Business):

消费者向企业提供产品或服务的模式,如消费者提供设计方案或参与产品测试等。
例如:一些众包平台。
O2O(Online to Offline):

线上与线下相结合的模式,消费者在线上获取信息或下单,线下完成交易或体验。
例如:美团、大众点评等。

三、前置知识

以下是尚硅谷官方给的。

在这里插入图片描述
上面redis,docker,vue你不会,甚至maven不会,spring cloud不会,git不会,都没关系,我会带你入门,最快速度学到【够用】。

四、效果

在这里插入图片描述

在这里插入图片描述
可以下载源码(官方源码),了解之前的谷粒商城项目效果。
https://github.com/shuhongfan/GuliMall

五、微服务的基础概念

为什么需要微服务

数字化生活提倡万物互联,一个家庭可能会有手机、电脑、平板、家电等等,如果这些东西都来自不同的产商,那么他们之间的连结肯定不会特别容易。如果有一个产商可以把这些产品都来个全家桶,数字化生活就便利了,小米、华为、苹果,很多公司都在做这样的事情。

而在互联网的项目中,技术日新月异、项目的功能模块也越来越多,网关、日志、容错、授权…这些不同厂家推出的不同的框架、技术五花八门.

同时,传统系统随着业务需求、bug叠加,就会像滚雪球一样,越滚越大,越来越臃肿;而且不同模块可能用不同的语言、技术更合适,传统的编程模式无法实现。

微服务快马加鞭而来,传统编程像一碗面条,纠缠不清。而它就像一盘水饺,一个个小业务都是一个水饺,彼此能够独立。

除此之外,微服务把模块之间的界限画的棱角分明,不同模块之间灵活调用,A、B都需要做日志监控,以往可能需要各个模块各自实现,而现在可以统一调C模块实现。

现在来有请微服务C位出道!

image-20220217210555588

它的特点是:可扩展性、模块化、各个模块能够单独开发、部署、扩展、维护。

微服务也有很多缺点:性能略下降、事务问题、跨服务协作、难度大需要全面团队…

微服务适应于复杂的项目,可扩展性要求很强的项目、有一定规模的创业公司(需要不断的迭代业务试错)

在这里插入图片描述
2、集群
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
推荐阅读:https://blog.csdn.net/qq_41708993/article/details/122992924

六、谷粒商城微服务架构

在这里插入图片描述
架构分析:
前端和后端分离:

项目采用了前后端分离的架构,前端使用了Vue.js,后端使用SpringCloud + Spring Boot等。
微服务通过SpringCloud Gateway进行流量路由,符合现代微服务的前后端解耦思想。
微服务管理:

服务发现与配置管理通过Nacos来实现。Nacos作为服务注册与配置管理的中间件,广泛应用于微服务架构中,帮助解决服务的注册、发现与动态配置问题。
使用了Spring Cloud的组件(如Spring Security、Spring Cloud Gateway等)以及OAuth2实现了认证授权管理,增强了系统的安全性。
服务调用:

微服务之间的调用采用了Feign,配合Ribbon进行负载均衡。Feign用于声明式的REST客户端,Ribbon则用于负载均衡,组合使用提高了服务调用的便利性和容错性。
容错与流量控制:

使用了Sentinel进行流量控制和熔断处理,确保高并发场景下系统的稳定性。这也是当前微服务架构中常见的做法,能有效避免某些服务出现问题时影响全局。
日志与监控:

项目中使用了ELK(Elasticsearch, Logstash, Kibana)栈进行日志收集和可视化,利用Prometheus和Grafana进行监控,结合Sleuth和Zipkin实现分布式追踪,具备了完整的监控与日志体系。
这些监控手段帮助开发者及时发现问题,提供了更强的可维护性和可观察性。
分布式数据库与缓存:

数据库采用了MySQL与Redis,且有分布式数据库方案和Redis集群支持。分库分表(Sharding)通过ShardingSphere进行管理,能有效处理高并发、大数据量的情况。
对于需要高性能的数据访问和快速读写场景,使用了Redis作为缓存。
消息队列与异步处理:

使用RabbitMQ作为消息队列,支持异步处理和解耦,提升了系统的吞吐量和扩展性。消息队列在微服务架构中是非常常见的,用于保证系统的高可用性和数据一致性。
容器化与自动化部署:

项目支持Docker容器化部署,结合Kubernetes实现容器编排与管理,并且使用Jenkins进行CI/CD,确保了开发和生产环境的一致性和自动化。
Kubernetes作为容器编排平台,能够有效地管理和扩展容器化服务,提升系统的可靠性。

下图具体说了需要创建的微服务

在这里插入图片描述

七、重构

1:消息队列——可选用Rocket MQ

在这里插入图片描述

RocketMQ 是为高可靠性和高并发设计的分布式消息系统,特别适用于金融和电商领域。在这些场景中,消息的可靠传输和严格的顺序保证至关重要,例如订单支付、库存更新等关键业务操作。RocketMQ 原生支持分布式事务、延迟消息和顺序消费,是在复杂业务场景中确保消息一致性和稳定性的理想选择。阿里巴巴在其年度“双 11”大促中,RocketMQ 经受住了超高并发的考验,证明了其在大规模并发和高可靠性需求下的稳定性和可扩展性。

适用场景:电商订单处理、支付系统、削峰填谷、需要分布式事务的应用。

2、数据库的分库分表策略

在电商平台中,随着业务的发展,数据量和并发访问量的增加,数据库可能会面临性能瓶颈。为了解决这些问题,通常采用分库分表策略,将数据分散到多个数据库或表中,以提高系统的性能和可扩展性。

  1. 分库策略:

将数据划分到多个数据库中,常见的策略包括:

水平分库: 根据某个字段(如用户ID、订单ID等)的哈希值,将数据均匀分布到多个数据库中。

垂直分库: 将不同业务模块的数据存储在不同的数据库中,例如,将用户信息存储在一个数据库,将订单信息存储在另一个数据库。

  1. 分表策略:

将单个数据库中的大表拆分为多个小表,常见的策略包括:

水平分表: 根据某个字段的哈希值或范围,将数据分布到多个表中。例如,将订单表按照订单ID的哈希值分为多个子表。

垂直分表: 将表中的列根据业务需求拆分到不同的表中,例如,将用户的基本信息和扩展信息分别存储在不同的表中。

  1. 分库分表的实施步骤:

分析业务需求: 确定哪些表需要进行分库分表,选择合适的分库分表策略。

设计分片规则: 根据业务需求,设计合理的分片规则,确保数据的均匀分布,避免热点数据。

修改应用程序: 在应用层实现路由逻辑,根据分片规则将请求路由到相应的数据库或表。

数据迁移: 将原有数据迁移到新的分库分表结构中,确保数据的一致性和完整性。

监控与优化: 对分库分表后的系统进行监控,及时发现并解决性能瓶颈,确保系统的稳定性和高性能。

3、NoSQL

尽管MySQL和Redis能很好地满足大部分业务需求,但在数据访问非常频繁、数据量极大的场景下,可以考虑采用NoSQL数据库(如MongoDB、Cassandra等)来做进一步优化,尤其在需要高扩展性和快速读写时。

在主流电商平台中,
淘宝在其搜索引擎和日志分析系统中,使用了 MongoDB 等 NoSQL 数据库,以满足高并发和大数据量的需求。
唯品会在其商品推荐和用户行为分析中,采用了 Cassandra 等 NoSQL 数据库,以处理海量数据并提供实时分析能力。
拼多多在其商品搜索和用户画像构建中,使用了 Elasticsearch 等 NoSQL 数据库,以提供快速的搜索和个性化推荐服务。
苏宁易购
苏宁易购在其订单处理和库存管理中,采用了 Redis 等 NoSQL 数据库,以提高系统的响应速度和并发处理能力。

4、更智能的监控与报警系统

在现代企业中,自动化运维已成为提升系统可靠性和运营效率的关键。除了 Docker 和 Kubernetes,结合智能监控与报警系统(如 Prometheus 的 Alertmanager)以及基础设施自动化管理工具(如 Ansible、Terraform)已被多家公司广泛采用。

  1. 阿里巴巴:

阿里巴巴在其云原生平台中,采用了 Docker 和 Kubernetes 进行容器化部署和管理。同时,结合 Prometheus 进行监控,利用 Alertmanager 实现告警通知。在基础设施自动化方面,阿里巴巴使用 Ansible 进行配置管理和应用部署。此外,Terraform 被用于管理云资源,实现基础设施即代码(IaC)。

  1. 腾讯:

腾讯云在其云服务平台中,采用了 Docker 和 Kubernetes 进行容器编排和管理。使用 Prometheus 进行系统监控,结合 Alertmanager 实现告警机制。在自动化运维方面,腾讯云使用 Ansible 进行配置管理和应用部署。Terraform 被用于管理云资源,实现基础设施的自动化管理。

  1. 京东:

京东在其电商平台中,采用了 Docker 和 Kubernetes 进行容器化部署和管理。结合 Prometheus 进行监控,使用 Alertmanager 实现告警通知。在基础设施自动化方面,京东使用 Ansible 进行配置管理和应用部署。Terraform 被用于管理云资源,实现基础设施的自动化管理。

  1. 美团:

美团在其平台中,采用了 Docker 和 Kubernetes 进行容器编排和管理。使用 Prometheus 进行系统监控,结合 Alertmanager 实现告警机制。在自动化运维方面,美团使用 Ansible 进行配置管理和应用部署。Terraform 被用于管理云资源,实现基础设施的自动化管理。

这些案例展示了大型企业如何结合 Docker、Kubernetes、Prometheus、Alertmanager、Ansible 和 Terraform 等工具,实现智能化的自动化运维体系。通过这些工具的集成,企业能够提升系统的可靠性、可维护性和扩展性。

5、分布式事务框架seata

分布式事务框架(如 Seata 或 Saga 模式)来确保事务一致性和可靠性,避免出现数据不一致的问题。

以下是一些具体的应用案例:

  1. 订单与优惠券的分布式事务:

在电商平台中,用户下单时可能使用优惠券,这涉及到订单系统和促销系统的协同工作。为确保订单创建和优惠券使用的原子性,避免出现订单成功但优惠券未被正确使用的情况,采用了分布式事务管理。例如,使用两阶段提交(2PC)协议,确保订单系统和促销系统的数据一致性。

2.订单与库存的分布式事务:

在订单创建过程中,需要同时更新订单信息和库存信息。为确保这两个操作的原子性,避免出现订单成功但库存未被正确扣减的情况,采用了分布式事务管理。例如,使用 Seata 框架来管理分布式事务,确保订单和库存操作的一致性。

  1. 订单与购物车的分布式事务:

在用户下单后,需要将购物车中的商品移除。为确保订单创建和购物车清空操作的一致性,避免出现订单成功但购物车未被清空的情况,采用了分布式事务管理。例如,使用本地消息表模式,在订单创建成功后记录一条消息,异步处理购物车清空操作,确保数据最终一致性。

6.其它

日志管理与分析:虽然使用了 Zipkin 进行分布式追踪,但日志收集和分析也是重要的一环。可以集成 ELK(Elasticsearch, Logstash, Kibana) 堆栈来集中收集和分析日志,尤其是在故障排查和用户行为分析方面。

集成 CI/CD 流水线:可以集成 Jenkins、GitLab CI 等工具,实现自动化构建、自动化测试和自动化部署,确保代码的持续交付。结合 Kubernetes,可以更高效地管理微服务的版本更新和自动回滚。还有coze可以用上。


http://www.ppmy.cn/server/160091.html

相关文章

1.7 ChatGPT:引领AI对话革命的致胜之道

ChatGPT:引领AI对话革命的致胜之道 随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,OpenAI 的 ChatGPT 已经成为了举世瞩目的技术突破。从普通的自动化客服到深入的创作与协作,ChatGPT 通过其卓越的语言理解和生成能力,改变了人们与计算机交互的方式…

【HeadFirst系列之HeadFirst设计模式】第3天之观察者模式

前言 从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。 设计模式本质上就是前人比较成熟的经验和智慧。他们遇到过相同的问题,也顺利地解决了这些问题。 跟随前人的脚…

网络安全中攻击溯源有哪些方法?

目前网络攻击已经成为常见的安全威胁之一,其造成的危害和损失都是不可估量的,因此网络攻击受到了高度重视。而当我们遭遇网络攻击时,攻击溯源是一项非常重要的工作,可以帮助我们迅速发现并应对各类网络攻击行为,那么网…

【Linux】重定向缓冲区

一、文件内核级缓冲区 在一个struct file内部还要有一个数据结构-----文件的内核级缓冲区。 1.1 write写入操作 当我们去对一个文件写入的时候,那么是如何进行写入的呢? 如:write(3,"hello",..) 先找到文件的内核缓冲区&#…

DDD - 如何设计支持快速交付的DDD技术中台

文章目录 Pre概述打造快速交付团队烟囱式的开发团队(BAD)大前端技术中台(GOOD) 技术中台的特征简单易用的技术中台建设总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对象的两种设计思路…

Dedecms V110最新版RCE---Tricks

前言 刚发现Dedecms更新了发布版本,顺便测试一下之前的day有没有修复,突然想到了新的tricks去实现RCE。 文章发布的时候估计比较晚了,一直没时间写了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…

2025寒假备战蓝桥杯01---朴素二分查找的学习

文章目录 1.暴力方法的引入2.暴力解法的思考 与改进3.朴素二分查找的引入4.朴素二分查找的流程5.朴素二分查找的细节6.朴素二分查找的题目 1.暴力方法的引入 对于下面的这个有序的数据元素的组合,我们的暴力解法就是挨个进行遍历操作,一直找到和我们的这…

Wi-Fi 7、Wi-Fi 6 与 5G、4G 的全方位对比

随着无线通信技术的飞速发展,Wi-Fi 7、Wi-Fi 6,以及5G、4G 已经成为人们生活和工作中不可或缺的网络技术。无论是家庭网络、高速移动通信,还是工业物联网,这些技术都在发挥各自的作用。那么,它们之间有什么区别&#x…