美文网首页
电商项目架构

电商项目架构

作者: 五月天_7df7 | 来源:发表于2018-11-07 13:28 被阅读0次

    整个项目用springboot微服务将每个模块单独开发,降低了各系统之间的耦合度,增删一个功能不会影响其他功能模块。项目主要模块有单点登录模块,后台管理模块,商品展示模块,购物车模块,订单模块,支付模块等,用dubbo+zookeeper提供不同模块的远程服务调用,后台管理模块使用easui框架,设计后台管理界面,采用 FastDFS 搭建分布式图片服务器以缓解服务器压力,商品展示模块,用 Elaticsearch 实现商品的站内搜索,购物车模块中用的是cookie+redis+db来实现功能。

    前端页面模板使用springboot原生的themlf,生成静态化页面,访问只是单纯 html 页面,只是和存放静态化页面的服务器有交互。大大减轻服务器压力

    在整个项目中,我们采用的是nginx+tomcat来部署的(面试官会可能问nginx是谁来部署的?如何部署的?Nginx的执行流程,优点),nginx一方面做加载静态资源的服务器,另一方面来做反向代理和负载均衡。因为该项目需要在多个环境中运行,我们利用了nginx的反向代理解决了不同环境同系统访问地址不统一带来的问题。

    在此项目中,我还参与了购物车模块的开发。在开发这个模块时候,我们考虑了会员在未登录和登录两种情况下把商品加入购物车,在用户商品详情页点击加入购物车的时候,我们用了登录拦截器来判断用户是否登录;,在登录状态下,我们可以直接将数据保存到数据库中,使用用户的id表示自己购买的商品,没有登录的时候,用户添加购物车保存到Cookie中,设置一个过期时间,

    当用户登录的时候,我们该如何将未登录状态下的购车和登录状态下的购车数据合并呢。这个就需要使用到消息了,我们可以发送一个消息给后台系统,将未登录状态下cokkie中的商品数据传递给后台系统,,将购物车中的数据插入到数据库中,和之前登录状态下的购车数据合并,重新缓存到Redis中

    像项目中不需要经常修改和经常获取的数据,如果用户每次刷新页面的时候都要去数据库中查询,这样会浪费资源和增加数据库的压力。所以我们想当把这些数据添加到一个缓存中,用户去访问的时候,先去缓存中命中,如果命中失败,再去数据库中查询,然后把查询到的数据添加到缓存中。我们是用的Redis做缓存,Redis提供的功能更加强大一些,读写速度也很快。所以我们选用了redis来缓存数据。Redis把数据以key—value的形式缓存到内存中,并提供了多种数据存储类型(string,set,list,hash等),还自身提供了持久化功能(2种)防止redis宕机时的数据丢失。(会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步)。我们使用的是spring与jedis整合的客户端,可以利用jedis做分片式集群,解决了redis内存受限的问题。

    数据库也可以做读写分离,为什么要使用Redis担任读呢,直接使用读写分离不就可以了吗?

    数据库的读写分离的确可以解决问题,但是像Redis这种非关系型数据库比较明显的优点就是数据处理效率高,读写分离和Redis的效率相比较来说,个人感觉还是使用Redis可靠。

    Redis担任读的问题,当像双11这种大量访问的情况下,Redis会不会崩溃?

    这个问题我也想过,这个我们可以考虑使用Redis的集群,这样就可以解决大部分的问题。

    Activemq在项目中主要是完成系统之间通信,并且将系统之间的调用进行解耦。例如在添加、修改商品信息后,需要将商品信息同步到索引库、同步缓存中的数据以及生成静态页面一系列操作。在此场景下就可以使用activemq。一旦后台对商品信息进行修改后,就向activemq发送一条消息,然后通过activemq将消息发送给消息的消费端,消费端接收到消息可以进行相应的业务处理。

    什么是负载均衡高可用

    nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。

    为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

    什么是FastDFS

    FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

    Redis优点

    1.支持多种数据类型存储

    2.支持持久化

    3.功能丰富

    4.简单稳定,基于c语言开发

    redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用,也可以将二者结合使用。

    1.RDB持久化(默认支持,无需配置)该机制是指在指定时间间隔内将内存中的数据集快照写入磁盘

    2.AOF持久化,该机制将以日志的形式记录服务器所处理的每一个写操作,在redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

    相关文章

      网友评论

          本文标题:电商项目架构

          本文链接:https://www.haomeiwen.com/subject/lkconftx.html