两道设计题目~

题目1:

天猫双十一有个积分换墨盒的活动,总共有50万台天猫魔盒(box),每个用户(user)可以用99个天猫积分(point)兑换一台魔盒,且每人限换一台。 请设计一套java接口并实现下单(order)逻辑。 参考(但不局限于)下面的下单逻辑:
1、创建订单  
2、扣减用户积分
3、扣减魔盒库存
4、下单成功
同时请回答:  
1、数据库表结构如何设计,有哪些表,分别有什么作用?
2、下单过程中哪些地方可能成为瓶颈?如何解决或改善?  
3、是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性?


答案:

下单逻辑就不写了,感觉有点麻烦。主要回答后面的三个问题。

数据库表结构如何设计,有哪些表,分别有什么作用?
答案:三个表,分别是:
用户信息表,有字段:id(用户编号),name(用户名),point(现有积分),box_num(拥有魔盒个数)
魔盒信息表,有字段:all_num(所有魔盒个数),remain_num(剩余魔盒个数)
订单表,有字段:id(订单编号),user_id(用户 id),order_time(下单时间)

下单过程中哪些地方可能成为瓶颈?如何解决或改善?
答案:所有的用户下单的时候需要对魔盒信息表进行写入,需要对其进行加锁,这是瓶颈。改善方法:可以把魔盒信息表划分为多个表(如 10 个),每个表的魔盒个数平分(如每个表 5 万个),然后访问表的时候进行负载均衡,如用用户的 IP 计算出一个数,然后进行 mod10 运算,决定分配到哪个表中。但是这种情况下,如果一个表中的魔盒分配完了,就需要记录其为不可用,下次负载均衡的时候,就需要对其进行考虑。

是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性?
答案:会用到数据库事务,用户下单的时候,需要对用户现有积分,拥有魔盒个数,剩余魔盒个数这些字段进行修改,另外,还要在订单表中添加一条新的记录,所有这些都包含在一个事务中。



题目2

A公司打算搭建一个Android App下载的Web站点,计划将目前常见的手机APP都放到这个网站上提供下载。因为业务开展初期下载量很小,技术部门就用了1台服务器,给服务器配置了一个公网IP对外进行服务。随着销售部门的推广到位,用户量和下载量呈指数级上载,要求技术部门马上进行改造。如果你是技术部门经理,你会怎么改造这个站点,以满足高负载的需求。
提示:短时间修改网站的代码不现实,其他方面的各种改造建议都可以,建议越多越好


答案:

主要用到重定向的方法
1.HTTP重定向
增加N台内部服务器,组成一个局域网,将APP复制N份放到内部服务器中,原来的服务器作为与因特网通信的接口。当原服务器收到客户端请求后,服务器选择一个负载最小的内部服务器,将客户端的请求重定向到该服务器
2.DNS重定向
原服务器IP对应的域名解析到多个IP,用DNS轮转法选择合适的IP
3.IP地址转发
另外还可以进行代理的重定向



题目均出自赛码网

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值