电商系统架构设计系列(二):电商系统的技术选型要怎么做才更有效呢?

上篇文章里,我给你留了道思考题,让你作为公司的CTO,想一想我们提到的电商系统,它的技术选型应该是什么样的?

  1.  使用什么编程语言和技术栈?
  2. 需要哪些第三方的框架和云服务?
  3. 存储系统该怎么选型? 

对于上述问题的思考和回答,我认为需要从这两个原则来考虑:

  • 团队的人员配置,尽量选择大家熟悉的技术
  • 考察选择的技术它的生态是不是够完善

这两个原则,在选择编程语言、技术栈、云服务和存储的时候都是适用的。

其实技术选型本身没有好与坏,更多的是选择“合适”的技术。


技术选型

你作为初创公司的CTO,在为电商系统选择技术栈时,以下是一些常见的编程语言和技术栈、第三方框架和云服务,以及存储系统选型的建议。

只选择最适合你的特定业务需求的技术,才是最重要的。

下面提到的是一些常见和流行的选择,但并不是唯一的解决方案。

编程语言和技术栈

后端开发:

  • Java:使用Java作为主要后端语言时,可以选择Spring框架。Spring提供了全面的功能和模块,例如Spring Boot用于快速构建应用程序,Spring MVC用于处理Web请求,Spring Data用于数据库操作,Spring Security用于身份验证和授权等。
  • Python:可以选择Django框架。Django是一个高效且功能强大的Python框架,提供了ORM(对象关系映射)和内置的管理后台等特性,适合快速开发和维护。
  • Node.js:对于更轻量级和高并发的应用程序,可以选择Express.js框架。Express.js是一个快速且灵活的Node.js框架,适合构建RESTful API和实时应用程序。

前端开发:

  • JavaScript:使用JavaScript作为主要前端语言,结合流行的前端框架,如React、Angular或Vue.js,以提高开发效率和用户体验。

关系型数据库:

  • 对于传统的关系型数据结构,如用户信息、订单和库存等,可以选择MySQL或PostgreSQL作为主要数据库,它们具有成熟的功能和广泛的社区支持。

非关系型数据库:

  • 对于具有更灵活数据结构或需要快速读取和写入的数据,可以考虑使用MongoDB。MongoDB是一个流行的文档数据库,具有强大的横向扩展能力和灵活的数据模型。

第三方框架和云服务

第三方框架

  • 网关:springcloud gateway,kong,zuul
  • 注册中心:nacos, consul
  • 配置中心:nacos, apollo
  • 调度中心:elastic-Job, xxl-job
  • 日志中心:elk
  • 脚手架开发框架:mybatis-plus
  • 技术框架标准:springboot,springcloud, springcloud alibaba
  • 分库分表组件:sharding-jdbc
  • 熔断降级:hystrix
  • 负载均衡:ribbon
  • 消息中间件:rocketmq, rabbitmq
  • 服务监控:springboot admin, pinpoint, supervisor
  • 链路追踪:spring cloud sleuth(zipkin)
  • 爬虫框架:webmagic
  • 分布式事务:seata
  • 分布式缓存:redis
  • 应用缓存:caffeine, guava, jetcache
  • 其他:docker, jenkins, nexus, puppet, k8s, ansible

云服务

  • 阿里云
  • 腾讯云
  • 等等

这里推荐阿里。

  • 因为其在电商领域,已深耕多年,电商相关技术的生态圈最早构建出来,且相对成熟完善。
  • 它的产品种类比较多,基本能满足电商系统的开发需要。如图片视频等文件存储,可采用对象存储OSS。如商品搜索,可采用开放搜索OpenSearch,它提供了专门针对电商的分词支持。

存储系统选型

文件存储:

  • 对于电商系统,你可能需要存储和管理大量的图片和其他媒体文件,可以考虑使用云存储服务,比如阿里oss,腾讯cos,七牛存储等。它们提供了高可用性、可扩展性和持久性的存储解决方案。

数据库存储:

  • 根据你的数据模型和需求选择合适的数据库类型。如果你的数据是结构化的,关系型数据库如MySQL或PostgreSQL可能是一个不错的选择。
  • 如果你的数据是半结构化或非结构化的,如文档、声音、图像文件等,NoSQL数据库如MongoDB或Elasticsearch可能更适合。

最终的选择:取决于你的业务需求、团队技能和可承受的成本。

重要的是确保你选择的技术能够满足你的功能要求,并且具有可扩展性和可维护性,以支持未来的业务增长。

我的建议

  • 开始阶段建议首选java技术栈,如果团队能驾驭别技术栈也可以
  • 前端可能只做小程序,先跑起来,再决定是否做App
  • 数据库使用mysql或最熟悉的
  • 图片视频存储直接购买公有云产品,还需要CDN
  • 支付框架如第三方支付SDK 等
  • 还要申请一堆东西域名、证书...

这对小规模的团队,特别是首创团队,这是一个非常务实且合理的选择。

因为创业公司最重要的事是什么?第一个MVP产品版本,需要快速出成品,配套的技术也是同理。

思考题

当系统在创建和更新订单时,如何保证数据准确无误?

期待、欢迎你留言或在线联系,与我一起讨论交流,“一起学习,一起成长”。

上一章教程

电商系统架构设计系列(一):电商系统到底是如何设计出来的?


推荐阅读

系列分享

------------------------------------------------------

------------------------------------------------------

我的CSDN主页

关于我(个人域名,更多我的信息)

我的开源项目集Github

期望和大家 一起学习,一起成长,共勉,O(∩_∩)O谢谢

如果你有任何建议,或想学习的知识,可与我一起讨论交流

欢迎交流问题,可加个人QQ 469580884,

或者,加我的群号 751925591,一起探讨交流问题

不讲虚的,只做实干家

Talk is cheap,show me the code

猜你喜欢

转载自blog.csdn.net/hemin1003/article/details/130886131