电商项目介绍

项目介绍

添加链接描述
最近的这个项目采用的是 SSM 框架搭建的。该商城是一个综合的 B2C 平台,主要销售自行车,电动自行车,自行车配件等。

整个项目中,我使用 nginx + tomcat 来部署的。nginx 主要用来做反向代理和负载均衡。因为该项目需要在多个环境中运行,我们利用 nginx 的反向代理来解决不同环境同系统访问地址不一致带来的问题。

因为整个项目实现的功能比较多,所以采用分布式架构设计,整个项目包括后台管理系统前台系统订单系统登录系统购物车系统等。这样做的好处是使每个功能模块独立出来,降低了各系统之间的耦合度,增删一个功能不会影响其他功能模块。

像项目中那些不需要经常修改的数据,如果用户每次刷新页面的时候都要去数据库中查询,这样会浪费资源和增加数据库的压力。所以我们想到把这些数据添加到一个缓冲中,用户访问的时候,先去缓存中查找,如果命中失败,再去数据库中查询,然后把查询到的数据添加到缓存中。目前比较主流的缓存技术有Redis。Redis把数据以key—value的形式缓存到内存中,并提供了多种数据存储类型,还自身提供了持久化功能,还可以把数据备份到磁盘中,防止redis宕机时的数据丢失。我们使用 cluster 式集群,解决了redis内存受限的问题。

前实现的登录和注册是在同一个tomcat内部完成,而现在系统架构是每一个系统都是由一个团队进行维护,每个系统都是单独部署运行一个单独的tomcat,所以,不能将用户的登录信息保存到session中(多个tomcat的session是不能共享的)(session共享?),所以我们需要一个单独的系统来维护用户的登录信息。我们是这样做的,用户去登录页面登录,去数据库查询是否有该用户,如果没有提示用户,如果有就把用户信息保存到redis中,并生成一个token保存到cookie中。

系统内部接口调用采用 Dubbo,系统之间的通知机制采用 MQ 的方式,使用
ActiveMQ 实现,使用了 ActiveMQ 的消息订阅模式消息机制。部署方面,采用了 nginx + tomcat 的模式,其中 nginx 的作用是做反向代理和负载均衡。

在此项目中我主要负责后台管理模块,主要实现商品管理,对商品进行CRUD操作。为了实现系统间的调用,使用了 Dubbo 技术来实现次功能。对后台商品进行操作,为了使后台数据与缓存等同步,我们使用 ActiveMQ 消息队列机制来实现商品同步功能。

在此项目中,我还参与了购物车模块的开发,我们考虑了顾客在未登录和登录两种情况下把商品加入购物车,后台如何保存商品信息。

如果没有登录,将商品信息保存到cookie中,当用户登录后,再把商品持久到数据库中;但是考虑到cookie储存大小的问题,还有当cookie储存的数据越多就会影响响应速度,我们决定使用redis来缓存用户在未登录状态下的商品信息(redis介绍,原理,优缺点),在redis中设置缓存生存时间(如何做到的?),如果用户在规定时间内没有登录,数据便会自动删除。如果用户在规定时间内登录了,便会通过RabbitMQ消息队列机制将数据同步到数据库中。

数据库更新之后,那么缓存库里的数据是怎么更新的?不可能每次都访问数据库吧?

你可能感兴趣的:(INT)