电商项目数据库

2023-05-16

共8张表,放到一个DB文件夹下

1.系统架构
采用当前最流行的ssm(springmvc+spring+mybatis)框架开发,系统后台使用jsp作为视图层。商城系统使用freemarker做静态化页面来提高系统的性能,使用nginx做负载均衡服务器以应对大规模的用户量的并发。系统中使用redis做缓存,使用Activemq做消息中间件。后台数据库使用mysql数据库,做读写分离

2.如何保存图片的
在电商项目中需要保存大量的图片,需要一个独立的图片服务器来保存,而且存储的容量需要可扩展,我们采用一个FastDFS一个分布式文件系统来保存图片。

3.网页静态化的实现方案
创建一个独立的工程,此功能的功能就是生成静态化页面的,例如商品详情页面静态化。将此工程独立部署到一个服务上,页面就生成到当前服务的磁盘上,并且此工程监听MQ的消息,一旦后台工程添加商品,此工程将接收到消息并且生成静态页面。在此服务器上安装一个nginx做为访问静态资源的http服务器。

5.把商品数据放到缓存中,如何提高缓存的利用率
做商品数据的缓存时,因为商品的数据量很大,而且缓存是把数据保存到内存中,此时不可能把所有的商品数据都放到缓存中。所以需要设置商品数据缓存的有效期,当用户访问到非热点数据后,此数据放到缓存中,当缓存到期后就从缓存中删除,而且长时间不会添加到缓存。而热点数据一旦从缓存中删除会马上又添加到缓存。这样可以提高缓存的利用率,同时也减轻了数据库的压力。

6.如何实现缓存同步的
只要使用了缓存就涉及到缓存同步的问题。缓存同步其实就是当缓存的信息发生变化,也就是后台对缓存的数据进行增、删、改操作后,数据库中的数据发生了变化同时要把缓存中的数据对应删除即可。当页面再次请求数据时,缓存中不能命中就会从数据库中查询并且添加到缓存中,即实现了缓存同步。

7.如何处理数据量大、并发量高的搜索
如果要搜索的内容数据量很大并且并发量很高的情况下,一个solr服务是不能满足要求的,所以此时需要SolrCloud来解决。SolrCloud也就是solr的分布式解决方案。是zookeeper+solr实现的。

8.Activemq有几种消息通信方式
使用MQ中间件可以有两种通信方式queue和topic。Queue可以实现点到点之间的通信,可以有多个Producer也可以有多个Consumer,但是消息只能被一个Consumer接收,一旦消息被消费后就没有了。

Topic可以实现类似广播的通信方式,可以有多个Producer和多个Consumer,一旦有Producer发送消息后,此消息可以被所有Consumer接收。

本项目中,当后台系统对商品数据进行添加、删除、修改后,将会发送一个消息,此消息通过topic进行通信,有多个消费端,搜索系统会把索引库进行同步,商品的缓存数据会进行同步、商品详情页面的静态页面会重新生成。

9.集群环境下的登录问题(单点登录)
原理是不再使用tomcat提供的Session,而是使用redis来模拟Session,一旦用户登录后会生成一个token,类似于jsessionid的功能。访问redis获取用户信息时,key就是token,value就是用户信息。然后把token信息写入cookie中,并且实现cookie可以跨域访问。当需要对用户身份进行验证时,需要先从cookie中把token取出,然后根据token查询redis,来判断用户的登录状态。

10.购物车是如何实现的
当用户未登陆时,将购物车信息放到cookie中,并设置存活时间,即使关闭浏览器,购物车也不会消失,除非用户自己清理浏览器中的cookie。

当用户登陆时,将购物车信息放到Redis缓存中,下次登陆时,即使换了浏览器或电脑,购物车也不会消失。

11.如果换电脑,购物车是如何实现的
如果把购物车放到cookie中,更换电脑是不能看到购物车信息的。如果想更换设备实现购物车同,需要把购物车信息保存到redis中。

实现购车商品数据同步:

1、要求用户登录。

2、把购物车商品列表保存到数据库中。推荐使用redis。

3、Key:用户id,value:购物车商品列表。推荐使用hash,hash的field:商品id,value:商品信息。

4、在用户未登录情况下写cookie。当用户登录后,访问购物车列表时,

a) 把cookie中的数据同步到redis。

b) 把cookie中的数据删除

c) 展示购物车列表时以redis为准。

d) 如果redis中有数据cookie中也有数据,需要做数据合并。相同商品数量相加,不同商品添加一个新商品。

5、如果用户登录状态,展示购物车列表以redis为准。如果未登录,以cookie为准。

12.订单号是怎么生成
所以我们采用redis的incr命令来生成订单号,每次加一。由于redis是单线程的所以使用此命令不会出现重复的订单号,并且可读性好。

13.秒杀抢购时库存是如何控制的
把商品的数量放到redis中。秒杀时使用decr命令对商品数量减一。如果不是负数说明抢到。一旦返回数值变为0说明商品已售完。

14.异常是如何处理
系统中的异常使用springmvc的全局异常处理器来实现,在系统中发生的异常都向上抛出,最后由表现层的全局异常处理器捕获,捕获异常后会写错误日志、向相关负责人发邮件发短信。然后展示一个友好的异常页面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电商项目数据库 的相关文章

  • API调用次数限制实现

    API调用次数限制实现 在开发接口服务器的过程中 xff0c 为了防止客户端对于接口的滥用 xff0c 保护服务器的资源 xff0c 通常来说我们会对于服务器上的各种接口进行调用次数的限制 比如对于某个 用户 xff0c 他在一个时间段 x
  • SVN 问题Cannot load supported formats: Cannot run program "svn": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶

    AndroidStudio SVN问题解决 今天在尝试使用Android Studio的SVN得时候出现 Cannot load supported formats Cannot run program svn CreateProcess
  • 你是哪个级别?(工程师级别划分)

    工程师的划分 初级工程师 xff08 实习生 xff09 中级工程师 xff08 普通员工 xff0c 小组长 xff09 高级工程师 xff08 CTO 技术研发领头人 xff09 初级工程师 和入门级别基本上可以等同 xff0c 他们一
  • Python Koans(1)-assert

    span class hljs comment usr bin env python span span class hljs comment coding utf 8 span span class hljs keyword from s
  • [初学Python]学习如何编写GUI界面(初级)

    sublime 这个文本编辑器好像就是用python写的 所以一直也挺好奇如何利用Pycharm编写有界面的python应用 言归正传 xff0c Python界面程序编写主要依靠一个库叫做Tkinter 下载Tkinter 我使用的是Ub
  • Youtube 视频自动播放

    最近在做一项目的时候 xff0c 需要播放Youtube视频 播放方式大体有三种 1 WebView xff08 我最终用的 xff09 2 Youtube SDK xff08 需要谷歌开发者账户 xff09 3 VideoView 其他两
  • Clion的激活方法

    弹出注册窗口选择Activate License Server 输入 http xidea online xff0c 然后点击 Activate 完成认证即可
  • CocosCreator学习1-按钮点击

    Cocos Creator小白学习 实现button点击事件 关于cocos creator 本人就是小白一个 xff0c 什么都不会 xff0c 只能慢慢从头开始摸索着来 xff0c 自己也希望能够在写自己的学习过程中 xff0c 能够给
  • 多传感器融合中的时间同步2-论文阅读

    文章目录 前言主要内容pps对于INS时间戳校准作用原理 测试结果参考文献 前言 阅读硕士论文 GPS INS组合导航系统研究及实现 xff0c 该论文第5章为时间同步系统设计 xff0c 为GPS INS系统设计的时间同步系统部分内容非常
  • GUI读取图片和变换图片

    GUI读取图片和变换图片 这个程序的主要功能是一个按钮读取图片 xff0c 另一个用来对图片进行变换的 xff0c 过程很简单 GUI中的varargout函数将句柄handles保存的hObject输出 xff0c hObject是当前回
  • Java泛型--泛型应用--泛型接口、泛型方法、泛型数组、泛型嵌套

    1 泛型接口 1 1泛型接口的基本概念 1 2泛型接口实现的两种方式 定义子类 xff1a 在子类的定义上也声明泛型类型 interface Info lt T gt 在接口上定义泛型 public T getVar 定义抽象方法 xff0
  • SLA的基本概念

    SLA的基本概念 现在的产品和系统都非常的复杂 xff0c 彼此连接依赖越来越复杂 xff0c 为了整体的高速运转 xff0c 对每个部件的稳定性越来越高 xff0c 越来越精密 xff0c 发展到一定程度 xff0c 人力已经无法掌控 x
  • Linux下调试段错误的方法[Segmentation Fault]--GDB

    原文 1 段错误是什么 xff1f 段错误是指访问的内存超出了系统给这个程序所设定的内存空间 xff0c 例如访问了不存在的内存地址 访问了系统保护的内存地址 访问了只读的内存地址等等情况 A segmentation fault ofte
  • linux驱动开发--copy_to_user 、copy_from_user函数实现内核空间数据与用户空间数据的相互访问

    设备读操作 如果该操作为空 xff0c 将使得read系统调用返回负EINVAL失败 xff0c 正常返回实际读取的字节数 ssize t read struct file filp char user buf size t count l
  • 函数中的形式参数和实际参数

    1 举例 xff1a 使用函数交换两个整形变量的值 运行结果 xff1a 分析 xff1a c语言中实际参数和形式参数之间采用值传递的方式来传递数据 在被调函数中 xff0c 使用的是实际参数的一个拷贝数据 我们在swap函数中交换了a和b
  • Linux 线程挂起与唤醒功能 实例

    pthread cond wait 多线程的条件变量 条件变量是利用线程间共享的 全局变量进行同步的一种机制 xff0c 主要包括两个动作 xff1a 一个线程等待 34 条件变量的条件成立 34 而挂起 xff1b 另一个线程使 34 条
  • Linux下socket编程,附带tcp例子

    1 网络中进程之间如何通信 xff1f 本地的进程间通信 xff08 IPC xff09 有很多种方式 xff0c 但可以总结为下面4类 xff1a 消息传递 xff08 管道 FIFO 消息队列 xff09 同步 xff08 互斥量 条件
  • 程序员加班到深夜,你经历过没?

    我看到了自己的影子啊 虽然自己非科班出身 xff0c 学历也不高吧 xff0c 但是自认为还是很努力的 xff0c 但是为什么现在的工资水平却跟应届生差不多呢 xff1f xff08 xff09 仔细想想 xff0c 自己毕业3年了 xff
  • 【C/C++学院】(16)QT版:幸运大抽奖

    程序效果 xff1a ifndef DIALOG H define DIALOG H include lt QDialog gt include lt QLabel gt include lt QPushButton gt include
  • 【Python基础】--Pickle/函数默认参数/函数的参数*args/Bytes<=>str/32-64bit/bytes对象

    Pickle gt gt gt import pickle gt gt gt my list 61 1 2 3 39 haha 39 39 and 39 39 or 39 gt gt gt pickle file 61 open 39 my

随机推荐

  • Windows平台python操作串口示例,可以加工下,改写成方便的测试软件

    在 windows中 xff0c 使用 Python 进行串口编程需要安装一个 Serial 模块 pyserial xff1a 下载地址 https pypi python org pypi pyserial下载完成后得到一个 pyser
  • 告别csdn一年了

    原本坚持了4年的学习 xff0c 整理笔记 xff0c 在csdn平台上进行发表 xff0c 记录 同朋友们互动 xff0c 探讨进行学习 xff0c 自己也在不断地成长 今天再次进入博客页面 xff0c 发现界面来了个大改版 xff0c
  • KVM虚拟机创建功能详细讲解

    KVM虚拟机创建功能详细讲解 一 KVM虚拟机创建的用户操作 对于用户或者管理员来说 xff0c 虚拟机的创建有着很多的方法 xff0c 例如 xff1a kvm自带命令行工 具 使用virsh命令来创建 使用具有图形界面的virt man
  • php视频课程

    php视频课程 xff1a 下载地址 xff1a http php itcast cn php video shtml 注 xff1a 此系列视频 xff0c 韩顺平主讲 1 php入门到精通教程 2 第二版mysql视频教程 进行中 3
  • 2014年计算机求职总结--面试篇

    又一年实习招聘陆续开始了 xff0c 这里分享一下我在2013年实习招聘和秋季招聘中的一些面试经历 xff0c 希望能对找工作的同学有所帮助 2013年面试过的公司有蘑菇街 网易游戏 阿里巴巴 腾讯 百度 大众点评 人人网 雅虎 xff08
  • 用位运算实现两个整数的加减乘除运算

    位运算的思想可以应用到很多地方 xff0c 这里简单的总结一下用位运算来实现整数的四则运算 1 整数加法 int Add int a int b for int i 61 1 i i lt lt 61 1 if b amp i for in
  • 深入理解C/C++数组和指针

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7044380 C语言中数组和指针是一种很特别的关系 xff0c 首
  • 轻松搞定面试中的链表题目

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7393134 链表是最基本的数据结构 xff0c 面试官也常常用链
  • 轻松搞定面试中的二叉树题目

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7518888 树是一种比较重要的数据结构 xff0c 尤其是二叉树
  • 动态内存分配(malloc/free)简单实现--隐式空闲链表

    本文使用隐式空闲链表实现简单的动态内存分配 动态内存分配器维护一个大块区域 xff0c 也就是堆 xff0c 处理动态的内存分配请求 分配器将堆视为一组不同大小的块的集合来维护 xff0c 每个块要么是已分配的 xff0c 要么是空闲的 实
  • 二分查找,你真的掌握了吗?

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 8937978 二分查找 xff0c 最基本的算法之一 xff0c
  • 【谷歌面试题】求数组中两个元素的最小距离

    一个数组 xff0c 含有重复元素 xff0c 给出两个数num1和num2 xff0c 求这两个数字在数组中出现的位置的最小距离 O n 时间复杂度 xff0c O 1 空间复杂度 int minDistance int A int si
  • 进程间通信

    原作者地址不详 摘 要 随着人们对应用程序的要求越来越高 xff0c 单进程应用在许多场合已不能满足人们的要求 编写多进程 多线程程序成为现代程序设计的一个重要特点 xff0c 在多进程程序设计中 xff0c 进程间的通信是不可避免的 Mi
  • 关于CPU C-States 省电模式,你需要知道的事情

    为了在CPU空闲的时候降低功耗 xff0c CPU可以被命令进入low power模式 每个CPU都有几种power模式 xff0c 这些模式被统称为C states或者C modes lower power模式最早在486DX4处理器上被
  • 一次由于设置错误,导致无法进入gnome的解决。

    我的系统是lenny 今天 xff0c 在 系统 gt 首选项 gt 音效 中修改了一处设置 xff0c 导致当前账号不能进入gnome 设置的图片如下 xff1a 我选中了 允许软件混音 和 播放系统声音 这两项 xff0c 结果当时系统
  • 分享一下工作以来我看过计算机书籍

    由于自工作依赖一直专注于linux 下的c c 43 43 编程工作 xff0c 所以 xff0c 我的书籍也大的都是这方 这边书尽管很经典 xff0c 但是我的能力实在有限 xff0c 只把数据结构的那点看了一下 xff0c 其他的 看的
  • strlen三种不同的写法

    strlen用来表示字符串的长度 区别于用关键字sizeof 计算字节大小 strlen有三种写法 1 采用常规的count计数法 int my strlen const char str char p 61 char str int co
  • 面试常见链表题总结(如果失眠了就拿出来看看)

    无头单链表 现场手撕代码 43 分析 xff0c 供自己闲时手机复习使用 xff01 删除链表中等于给定值 val 的所有节点 反转一个单链表 给定一个带有头结点 head 的非空单链表 xff0c 返回链表的中间结点 如果有两个中间结点
  • 数据库完美总结(三)

    索引 xff1a 数据库索引 xff0c 是数据库管理系统中一个排序的数据结构 xff0c 它可以对数据库表中一列或多列的值进行排序 xff0c 以协助更加快速的访问数据库表中特定的数据 通俗的说 xff0c 我们可以把数据库索引比做是一本
  • 电商项目数据库

    共8张表 xff0c 放到一个DB文件夹下 1 系统架构 采用当前最流行的ssm xff08 springmvc 43 spring 43 mybatis xff09 框架开发 xff0c 系统后台使用jsp作为视图层 商城系统使用free