秒杀系统

秒杀系统其实是针对库存做的系统。用户成功秒杀商品,对于我们系统的操作就是减库存和记录用户的购买明细。用户的购买明细包括记录谁购买成功、购买成功的时间和付款信息。而对于减库存操作,需要考虑到以下两个问题:

(1)若是用户成功秒杀商品,我们记录了其购买明细,却没有减库存。会导致商品的超卖。

(2)减了库存却没有记录用户的购买明细,导致商品的少卖。

对于上述两个问题,可以通过MySQL内置的事务机制进行处理,它可以准确的帮我们完成减库存和记录用户购买明细的过程。

对于秒杀系统,我们只是实现秒杀的一些功能:

(1)秒杀接口的暴露。

(2)执行秒杀的操作。

(3)相关查询,比如说列表查询,详情页查询。

秒杀系统包括包括三个模块的设计,DAO层、Service层和Web层的设计,另外考虑到系统高并发的问题,从而设计了系统高并发的处理。在系统设计之前,为了更好地理解系统的开发过程,对相关技术进行描述。

6.3.1 相关技术介绍

MySQL:

创建相关表、事务的应用和行级锁。

DAO:

数据访问对象基本上是一个对象或接口,它提供对基础数据库或任何其他持久存储的访问。

MyBatis:

MyBATIS是支持自定义SQL、存储过程和高级映射的第一类持久性框架。MybATIS消除了几乎所有的JDBC代码和手动设置参数和检索结果。MyBatis可以使用简单的XML或注释的配置和地图图元,地图接口和java POJO(Plain Old java对象)到数据库的记录。

SLF4J:

java的简单日志门面(是slf4j)作为一个简单的立面或抽象的各种日志框架(例如java.util.logging,logback,log4j)允许用户插入所需的部署时间日志框架。

登录项目

Logback:

回溯的目的是作为流行的Log4J项目的继承者,拿起Log4J离开的地方。

日志回退的架构足够通用,以便在不同的情况下应用。目前,回溯被分为三个模块:回溯核心、回溯经典和回溯访问。

回溯核心模块为其他两个模块奠定基础。LogLogic经典模块可以被同化到Log4J的一个显著改进的版本中。此外,回溯经典本身实现了SLF4J API,这样您就可以轻松地在回溯和其他日志记录框架之间来回切换,例如Log4J或JavaUTIL日志(JUL)。

回溯访问模块与Servlet容器(如Tomcat和JETTY)集成,提供HTTP访问日志功能。注意,您可以轻松地在LogCub核心之上构建自己的模块。

C3P0:

C3P0是一个易于使用的库,通过使用JDBC3规范定义的功能和JDBC2的可选扩展来增强传统JDBC驱动程序“企业就绪”。

Spring framework:

Spring框架是java平台的一个应用框架和反转控制容器。该框架的核心功能,可以在任何java应用程序使用,但也有在顶部的java EE平台构建Web应用的扩展。

Spring MVC框架:

Spring WebMVC框架提供了模型视图控制器(MVC)体系结构和准备好的组件,这些组件可以用来开发灵活和松散耦合的Web应用程序。MVC模式导致分离应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑),同时在这些元素之间提供松散耦合。

该模型封装应用程序数据,一般来说,它们将由POJO组成。

视图负责渲染模型数据,一般来说,它生成客户端浏览器可以解释的HTML输出。

控制器负责处理用户请求并建立适当的模型并将其传递给视图进行渲染。

taglib:

TAGLIB指令声明您的JSP页面使用一组自定义标记,标识库的位置,并提供一种标识JSP页面中自定义标记的方法。

JSTL:

JavaServer页面标准标签库(JSTL)是一个有用的JSP标签集合,它封装了许多JSP应用程序共同的核心功能。JSTL支持常见的结构化任务,如迭代和条件语句、用于操纵XML文档的标记、国际化标记和SQL标记。

protostuff:

具有支持后向兼容性(模式演进)和验证的内置支持的序列化库。

MySQL:

Create related tables,the applications of transaction and row-level lock.

DAO:

The Data Access Object is basically an object or an interface that provides access to an underlying database or any other persistence storage.

MyBatis:

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

SLF4J:

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.

Logback Project

Logback:

Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off.

Logback's architecture is sufficiently generic so as to apply under different circumstances. At present time, logback is divided into three modules, logback-core, logback-classic and logback-access.

The logback-core module lays the groundwork for the other two modules. The logback-classic module can be assimilated to a significantly improved version of log4j. Moreover, logback-classic natively implements the SLF4J API so that you can readily switch back and forth between logback and other logging frameworks such as log4j or java.util.logging (JUL).

The logback-access module integrates with Servlet containers, such as Tomcat and Jetty, to provide HTTP-access log functionality. Note that you could easily build your own module on top of logback-core.

c3p0:

c3p0 is an easy-to-use library for making traditional JDBC drivers "enterprise-ready" by augmenting them with functionality defined by the jdbc3 spec and the optional extensions to jdbc2.

Spring framework:

The Spring Framework is an application frameworkand inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform.

Spring - MVC Framework:

The Spring Web MVC framework provides Model-View-Controller (MVC) architecture and ready components that can be used to develop flexible and loosely coupled web applications. The MVC pattern results in separating the different aspects of the application (input logic, business logic, and UI logic), while providing a loose coupling between these elements.

The Model encapsulates the application data and in general they will consist of POJO.

The View is responsible for rendering the model data and in general it generates HTML output that the client's browser can interpret.

The Controller is responsible for processing user requests and building an appropriate model and passes it to the view for rendering.

taglib:

The taglib directive declares that your JSP page uses a set of custom tags, identifies the location of the library, and provides a means for identifying the custom tags in your JSP page.

JSTL:

The JavaServer Pages Standard Tag Library (JSTL) is a collection of useful JSP tags which encapsulates the core functionality common to many JSP applications. JSTL has support for common, structural tasks such as iteration and conditionals, tags for manipulating XML documents, internationalization tags, and SQL tags.

protostuff:

A serialization library with built-in support for forward-backward compatibility (schema evolution) and validation.

秒杀系统 mysql_秒杀系统-介绍相关推荐

  1. 秒杀系统 mysql_秒杀系统之数据库

    秒杀系统的数据库中的库存加减操作是最为关键的点.12年天猫双十一的超卖事件,对平台的负面影响是非常巨大的. 数据库里做库存扣减,简单的可以用以下SQL来说明: update stock_table s ...

  2. 电脑重装系统mysql_重装系统后 mysql怎么办?

    最近xp系统重装了电脑,所有的软件都得重装,包括mysql.后来小编发现mysql其实不用重装的,重新配置一下就可以了.但是重装系统后 mysql怎么办?下面就让我们一起来看看重装系统后 mysql的 ...

  3. 秒杀设计 mysql_秒杀项目-数据库表设计

    -- 数据库初始化脚本 -- 创建数据库 CREATE DATABASE seckill; -- 使用数据库 use seckill; -- 创建秒杀库存表 CREATE TABLE seckill( ...

  4. 秒杀设计 mysql_秒杀程序数据库设计

    上个月有幸去腾讯逛了一圈,面试一个职位,尽管没被录取可是过程整体来讲还是愉快的.面试过程中面试我的小朋友(看年龄大概在26,7岁)问了我一个关于秒杀的问题,他说腾讯游戏常常会有秒杀的活动,非常多次会导 ...

  5. 秒杀设计 mysql_如何设计秒杀系统?

    一说起秒杀,大家都觉得这事很有技术含量.实际上,并不是这个样子的,秒杀这种互联网的交易方式其实并没有我们想象中的那么复杂.下面先让我们来系统地看一下,秒杀是怎么做的. 秒杀的流程 "秒杀&q ...

  6. [转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

    前言 很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际 ...

  7. mysql并发量_高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

    推荐阅读: 学会这些微服务+Tomcat+NGINX+MySQL+Redis,再去面试阿里P7岗吧 "火爆"的微服务架构你还不会?从基础到原理的PDF文档快来学! Nginx负载均 ...

  8. 高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

    作者 | 冰 河 前言 很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发 ...

  9. 解密秒杀系统架构:不是所有的秒杀都是秒杀

    摘要:究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构. 本文分享自华为云社区<[高并发]秒杀系统架构解密,不是所有的秒杀都是秒杀(升级版)!!>, ...

最新文章

  1. 嵌入式系统linux之光标隐藏解决
  2. 四川网络推广介绍搜索引擎从哪几个方面判断网站质量好坏?
  3. 使用 go 实现 Proof of Stake 共识机制
  4. EditPlus构建轻量级编译环境
  5. Float Protocol将于5月7日至10日进行FLOAT代币创世发布
  6. kafka面试题简答
  7. Spark中使用Dataset的groupBy/agg/join/broadcast hasjoin/sql broadcast hashjoin示例(java api)
  8. 郝斌数据结构-线性表之单链表程序(C语言版)
  9. 解决QQ或TIM下载群文件网路失败或者网速贼慢的办法
  10. 分销商城业务逻辑设计_功能思维导图_OctShop
  11. Project Management-软件开发之项目管理
  12. 剖析Android shape标签的绘制
  13. 从zookeeper官方文档系统学习zookeeper
  14. 算算职场薪水账 到手3000元税前工资约3760元
  15. ElasticSearch搜索引擎原理,都给你整理好了
  16. HTML炫彩按钮,PS打造炫彩的开始图标按钮
  17. 页面在微信端禁止缩放
  18. Web开发工程师的就业前景
  19. 零知识证明 - bellman源码分析
  20. 华为“美腿9”手机给我的惊艳!

热门文章

  1. 用户使用说明c语言,(C语言使用指南.docx
  2. linux防火墙开启某端口命令行,linux上防火墙 开启某个端口
  3. 单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析
  4. 【 Grey Hack 】万金油脚本:常见端口修改Password
  5. MSP430F5529 DriverLib 库函数学习笔记(十)SPI驱动墨水屏
  6. linux errno定义
  7. [react] useState和this.state的区别是什么?
  8. 前端学习(3270):js中this的使用call bind
  9. react学习(41)----react中的jsx简介
  10. [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现