`

SQl+多服务部署并发访问DB

阅读更多
数据库
student
   id  name
   001  zhangshan
   002 lisi
   003 wangw
course
  student_id course score
   001   语文  80
   002   语文  68
   003   数学  90
   001   数学  38

以上两张表满足外键约束:course.student_id  =student.id
1. 用一条SQL语句查出分数在60以下(不及格)的学生姓名及课程。
select s.name,c.course from student s LEFT JOIN course c on c.student_id = s.id where  c.score < 60
2. 用一条SQL语句查询考试人数排名前三的课程名称和考试人数
select c.course,count(*) count from course c group by c.course order by count desc limit 0,3;
3. 用一条SQL语句查出各门课程的及格率(及格率:该门课程成绩60分及以上的学生数/考试的总学生数)
select sum(c.score >=60)/count(*) tt1 ,c.course x  from course c group by c.course
4. 用一条SQL语句查出选修了4门课程以上且所有课程都及格(成绩60分及以上)的学生姓名。
select s.name from student s where s.id in(select c.student_id from course c  group by c.student_id  HAVING sum(c.score >= 60)/count(c.course) >=1);


设计方案

ID 商品ID 仓库ID 仓库库存量 累计卖出量
1 Sku001 Store001 10000 129
2 Sku002 Store001 13000 750

功能性需求:当前store001的多个的商品在做抢购业务,需要您在库存子系统里设计一个库存扣减的服务API给订单子系统使用,当订单创建时,实时调用库存扣减的API,更新库存表的累计卖出量,如果累计卖出量超出仓库库存量,则库存扣减失败。
非功能性要求:
1)库存子系统采用10个节点的集群方式部署,有多个Java进程对外提供库存扣减API,需要解决并发修改数据的脏读和脏写的问题
2)库存扣减API需要实现幂等性,当订单模块多次相同的报文请求库存扣减时,只扣减一次,重复扣减的报文请求返回扣减成功。
3)库存子系统的每1个APP部署节点,需要达到1000TPS的库存扣减的性能要求(1秒内完成1000笔库存扣减)
部署硬件清单:
1) Mysql部署的虚拟机8C 64G    1台
2) java应用部署的虚拟机2C 4G  10台
3) eruka服务发现服务器共用,订单子系统从eruka拿到库存子系统的10个节点的IP地址清单后,采用轮询IP的方式调用库存子系统的API
4) 不能再使用mencache或redis等其他第三方软件
针对以上的要求,请给出库存扣减的服务API的核心设计思想(10分)和API接口定义(10分)及代码实现概要(20分)

多进程更新db是个经典问题,一般采用2种方式
1、row lock :select  for update ;update table set saleCount = queryInDbCount + 1;
2、单独一个微服务提供update操作
      启动时将表数据缓存到内存,放入map<String,Integer>中,每次都从缓存去比对更新
    再起一个线程去轮询   定时批量更新 saleCount =  queryInDbCount + 增量
注意库存快满的时候细节处理

订单模块多次相同请求 主要是注意这个看负载服务是否对同一个来源的ip调用同一个子系统处理

tps比较 这个需要性能测试比较 现有服务器性能情况下 哪种更优 
个人预估:db单独提供库存服务表简单事务服务下,第一种形式db加锁,8c的机器性能足够胜任,性能更优的话 第二种应该更好
参考url
https://www.cnblogs.com/micrari/p/8029710.html
https://www.cnblogs.com/sdgf/p/5740998.html


分享到:
评论

相关推荐

    【中小学在线学习云平台 v1.0】2020最新社区版+在线教育软件+名师在线授课+自适应手机端

    中小学在线学习云平台最新社区版–自适应手机端是一款专业的在线教育软件,支持点播、直播、题库、考试、支付、营销一站式服务!助力中小型教育机构搭建独立品牌网校平台;系统 部署在用户自己的服务器上,利润不...

    华为数据库GaussDB实训报告

    华为数据库GaussDB实训报告,包含实训日志,实训要求,课程目标等等 ...学到了硬件配置的优化、并发连接管理、缓存和存储引擎优化以及SQL查询优化等关键技能,为将来在数据库性能优化领域提供了坚实的基础。

    OurMsg3.0 IMLibrary4

    服务器端数据库采用SQLite for .net4版本,并发加入单线程队列写数据库,多线程读数据库(用户规模在万人以内完全能够应对),如果想要使用SQL Server、Oracle、My sql等数据库,请自行开发,数据结构参见服务器...

    HCIP-GaussDB-OLTP V1.0视频.zip

    1.1 GaussDB T 体系结构 2.1 数据库安装 2.2 数据库工具 2.3 数据库升级 2.4 数据库迁移 2.5 数据库日常运维 3.1 SQL 数据类型 3.2 SQL高级语法 3.3 SQL 表达式 3.4 SQL 函数 3.5 SQL PLSQL .2 3.5 SQL PLSQL.1 4.1 ...

    【spring-boot-seckill分布式秒杀系统 v1.0】从0到1构建的java秒杀系统源码+安装说明

    6、最后,为了支撑更高的并发,追求更好的性能,可以对服务器的部署模型进行优化,部分请求走正常的秒杀流程,部分请求直接返回秒杀失败,缺点是开发部署时需要维护两套逻辑。 分层优化 1、前端优化:活动开始前生成...

    citrix 中文管理操作手册

    限制与服务器场的并发连接 108 共享会话和连接 108 限制应用程序实例 109 为已发布应用程序或桌面指定限制 110 记录连接拒绝事件 110 启用记录连接拒绝事件 111 使用终端服务配置控制连接 111 使用 TS 配置控制...

    asp.net知识库

    将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...

    数据库审计系统需求说明.docx

    支持按照时间曲线统计流量、在线用户数、并发会话、 DDL操作数、DML操作数、 执行量取多的SQL语句等报表。 11 日志数据管 理 审计数据保留策略应至少满足天数和百分比两个控制参数,且支持 web界面可配 置,且恢复...

    Ourmsg2014

    服务器端数据库采用SQLite for .net4版本,并发加入单线程队列写数据库,多线程读数据库(用户规模在万人以内完全能够应对),如果想要使用SQL Server、Oracle、My sql等数据库,请自行开发,数据结构参见服务器...

    云计算第二版

    3.8.1 快速应用部署Elastic Beanstalk和服务模板CloudFormation 119 3.8.2 云中的DNS服务 Router 53 119 3.8.3 虚拟私有云VPC 120 3.8.4 简单通知服务SNS和简单邮件服务SES 120 3.8.5 弹性MapReduce服务 120 3.8.6 ...

    Elixir Report --提升专业质量与效率的报表控件

    高扩展性的引擎支持并发处理,通过调用多个显示引擎并发的生成报表。 ·数据源管理器 数据源管理器为Elixir Report 提供了接口,以从外部数据源,如RDBMS(如Oracle,IBM DB2,Sybase, Microsoft SQL Server等),...

    cognos 管理与安全性指南

    访问更多文档 30 更分散的管理功能 30 访问系统统计数据 30 系统运行状况的快照 31 管理队列 31 减少部署详情 31 设置计划表上的优先级 31 报表中交互功能的更好控制 31 新建示样审核报表 31 发布和管理非根文件夹中...

    2020中小学在线学习云平台-.net

    2020年中小学在线学习云平台最新社区版-自适应手机端是一款专业的在线教育软件,支持点播、直播、题库、考试、支付、营销一站式服务!助力中小型教育机构搭建独立品牌网校平台;系统 部署在用户自己的服务器上,利润...

    db-util:如果您使用的是JPA和Hibernate,则此工具可以在测试过程中自动检测N + 1个查询问题

    介绍该库包含各种数据库实用程序,例如: 乐观并发重试JPA SQL语句计数验证器您是否在为应用程序性能问题而苦苦挣扎? 想象一下,有一个工具可以自动检测您是否正确使用了JPA和Hibernate。 不再有性能问题,也不必...

    数据库项目组日常运维及应急故障处理手册.docx

    SQL&gt; EXECUTE DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('12.29.103137'); PL/SQL procedure successfully completed. SQL&gt; commit; -- 清理每个分布式事务都需要commit; 数据泵 1. 相关参数 PARALLEL参数...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。...

    企信通短信平台

    企业信使/企信通短信平台是一个集多种短信业务功能和管理功能于一体的短信服务多功能运营平台,具有稳定可靠、模块化、开放性、灵活性等特点,它既适用于各行业企业集团做行业短信信应用(集团客户),也适合于短信...

    基于J2EE框架的个人博客系统项目毕业设计论...

    为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。...

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员)

    另外,对于APPS DB(应用程序数据库)来说,你可能需要创建或拷贝(克隆)多个生产库以外的数据库,比如测试和开发数据库,当然,需要多少数据库是由你的商业需求所决定的。开发环境数据库是供开发人员进行report,...

Global site tag (gtag.js) - Google Analytics