史上最强项目实战(一)——开篇

不羁岁月 提交于 2020-01-26 02:50:11

1. 史上最强项目实战到底是啥项目,这么牛逼?

不瞒你说,这不是一个啥多牛逼的项目,它只是一个普通的不能再普通的电商项目,该项目的业务架构对于真正大型电商项目来说是微乎其微的,是片面的。当然我们也不可能单凭一个人或者一个小团队自己瞎搞搞就能搞出可商用的电商项目,说可能的,那是在扯淡。

但是……虽然该项目的业务架构不够丰富,不够饱满。可能我们自己拿来练手的话也就几个功能模块把整个流程给串起来,但就是这样的话,我们用到的技术可不少。比如Spring全家桶、比如Redis实现缓存、比如RabbitMQ实现异步和解耦、比如ElasticSearch实现搜索等等,具体的我们稍后再说。

2. 项目介绍

是时候为大家揭开我们这个项目的真面目了,它叫……乐优商城。没错,就是某马程序员的一个项目实战课程,其它更多介绍请自行上网查阅。(就是这么任性)

3. 项目业务架构

项目的业务架构通常来说有两个方面,第一:项目的受众是谁,即我们的目标用户是谁,谁会来用我们的项目;第二:项目提供什么功能,项目能给用户带来什么。

那么:

(1)第一、乐优商城作为一个全品类的电商购物网站,它的目标用户自然是互联网用户,所有能够连上互联网的人都可以浏览登录到系统体验。

(2)第二、乐优商城提供以下功能,整个乐优商城可以分为两部分,分别为后台管理系统、前台门户系统。具体功能如下:

  • 后台管理:
    • 商品管理,包括商品分类、品牌、商品规格等信息的管理。
    • 销售管理,包括订单统计、订单退款处理、促销活动生成等。
    • 用户管理,包括用户控制、冻结、解锁等。
    • 权限管理,整个网站的权限控制,采用JWT鉴权方案,对用户及API进行权限控制。
    • 订单管理,对用户下订单,支付订单的管理。
  • 前台门户:
    • 前台门户面向的是客户,包含与客户交互的一切功能。比如:搜索商品、加入购物车、下单、评价商品等等。

4. 项目技术架构

说完项目的业务架构,我们再说说项目的技术架构,从技术层面上看下如何实现这样的一个项目。这么一个业务繁杂的电商项目,必然是采用当前最流行的微服务架构实现的,其提供以下微服务:

  • 商品微服务:实现商品分类、品牌、商品规格、商品等信息的管理。
  • 短信微服务:实现项目中任何需要和短信接口做对接的业务,比如用户注册时发送手机验证码。
  • 媒体微服务:实现项目中任何需要和图片、视频等媒体介质做最饥饿的业务,比如上传品牌logo、商品图片等。
  • 搜索微服务:基于ES实现前台门户网站的搜索。
  • 订单微服务:实现订单相关的管理。
  • 购物车微服务:实现购物车相关功能。
  • 用户微服务:提供后台管理用户和前台互联网用户的登录注册等功能。
  • 认证微服务:用户权限及服务权限认证。
  • 配置中心:基于Spring Cloud Config实现微服务的配置管理。
  • 服务注册中心:基于Spring Cloud Eureka实现微服务的注册管理。
  • 网关服务:基于Spring Cloud Zuul实现统一路由、鉴权、负载均衡等功能。

5. 系统架构和技术解读

5.1 系统架构

是时候上一张系统架构图,供大家瞻仰瞻仰了。
在这里插入图片描述

5.2 技术解读

  • 利用Node.js及Vue.js技术栈,实现前后端分离开发。
  • 利用SpringCloud技术栈,实现真正的微服务实战开发,并且是基于SpringBoot2.0和SpringCloud最新版本Finchley.RC1实现。
  • 贴近真实的电商数据库设计,解决全品类电商的SPU和SKU管理问题。
  • 基于FastDFS解决大数据量的分布式文件存储问题。(会提供本地文件存储、阿里云OSS方案实现)
  • 基于Elasticsearch高级聚合功能,实现商品的智能过滤搜索。
  • 基于Elasticsearch高级聚合功能,实现销售业务的复杂统计及报表输出。
  • 基于LocalStorage实现离线客户端购物车,减轻服务端压力。
  • 基于JWT技术及RSA非对称加密实现真正无状态的单点登录。
  • 结合JWT和RSA非对称加密,自定义Feign过滤器实现自动化服务间鉴权,解决服务对外暴露的安全问题。
  • 基于阿里大于实现SMS功能,解决电商短信通知问题。
  • 基于RabbitMQ实现可靠消息服务,解决服务间通信问题。
  • 基于RabbitMQ实现可靠消息服务,解决分布式事务问题。
  • 使用微信SDK实现微信扫码支付,符合主流付款方式。(会考虑支持支付宝支付、银联支付的实现)
  • 基于Redis搭建高可用集群,实现可靠缓存服务即热点数据保存。redis持久化,集群,哨兵,主从,缓存击穿,热点key。
  • 基于Redis和Mq来应对高可用高并发的秒杀场景。
  • 基于MyCat实现数据库的读写分离和分库分表。
  • 基于Thymeleaf实现页面模板和静态化,提高页面响应速度和并发能力。
  • 基于Nginx实现初步的请求负载均衡和请求限流。

6. 结尾

作为一篇开篇之作,说完项目的来龙去脉,有必要再做个结尾,说明一下为什么会有这样的一个系列文章,以及接下来我会做什么。

至于为什么会有这样的一个系列文章,我相信很多人跟我一样,踏入社会几年,低不成高不就,说自己啥都不会也总会点,但说自己会啥又说不上。此时,急需一针技能get剂来提升自己的个人能力。当然还存在这一的一种情况,即使平时自己有学习各种技术,但是没有系统的做过项目,实战过总感觉自己好像还不太会。

所以自己学完这样的一个项目实战后,有了一点点自己的小感悟,想和大家分享一下在这个过程中,我学到的东西,以及碰到的一些问题我的解决思路和方案。当然……你可以不用看这个系列文章,上网直接找这个项目的视频教程也是能找到的。

最后还想补充一点,关于项目中的前端功能开发在这个系列文章里是少之又少的。为什么?因为……我不会前端(手动捂脸),作为一个后端开发软件工程师,像Vue、React这些前端技术虽然会一点,但也只能说就会看懂大概的代码,要动手做那还是太业余了,所以关于前端功能的开发部分……you can,you up。但是……但是我会尽量保证后台服务的每个接口都是通的,在开发过程中会通过Swagger、postman等接口调用工具做测试。

——End——
更多详情,可扫码关注微信公众号哦。

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!