扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、 我们需要接收一个外部的订单,而这个订单号是不允许重复的
成都创新互联公司专业为企业提供古城网站建设、古城做网站、古城网站设计、古城网站制作等企业网站建设、网页设计与制作、古城企业网站模板建站服务,10多年古城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
2、 数据库对外部订单号没有做唯一性约束
3、 外部经常插入相同的订单,对于已经存在的订单则拒绝处理
对于这个需求,很简单我们会用下面的代码进行处理(思路:先查找数据库,如果数据库存在则直接退出,否则插入)
package com.yhj.test;
import com.yhj.dao.OrderDao;
import com.yhj.pojo.Order;
/**
* @Description:并发测试用例
* @Author YHJ create at 2011-7-7 上午08:41:44
* @FileName com.yhj.test.TestCase.java
*/
public class TestCase {
/**
* data access object class for deal order
*/
private OrderDao orderDao;
/**
* @Description:插入测试
* @param object 要插入的object实例
* @author YHJ create at 2011-7-7 上午08:43:15
* @throws Exception
*/
public void doTestForInsert(Order order) throws Exception {
Order orderInDB = orderDao.findByName(order.getOrderNo());
if(null != orderInDB)
throw new Exception("the order has been exist!");
orderDao.save(order);
}
}
并发读方面,多用内存缓存。减少数据库查询次数。多加几台数据库从服务器。
并发写方面,数据先走内存队列
并发指的是:相同的时间内,能处理更多的请求。
所以,解决方案就是优化请求的响应时间。
一般来说,最慢的在数据库处理。首先优化数据库sql、其次优化数据库结构设计、再次优化程序代码逻辑、最后优化业务逻辑。
这些搞定之后,就需要其他东西配合。比如nosql,将数据库热查询放入内存缓存,将数据库并发写入用队列。
最后就是硬件了,数据库主从差不多了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流