半年前,自己从BD来到一个创业小公司,开始接触事务型开发的一些基本技术。自己的服务器开发技术最开始部分源于腾讯,主要是使用服务器的单线程异步IO模型+UDP+状态机来做一些事情。对于很多高并发的服务是比较适用的。之后来到百度的一个团队,里面提倡使用TCP+多线程的网络模型。可以说各自有各自的优缺点。半年前来到小公司,开始接触一些类似电商业务的开发,跟之前接触的很多都不太一样。
首先谈谈事务,什么是事务?mysql事务可以定义为,一组sql语句,要么全部执行成功,要么全部执行失败,即是保持数据的一致性。举个简单的例子,订单支付成功之后,你需要修改两个表,要么两个表同时修改成功了,要么两个表都没有去修改,不能出现表1成功,表2失败,这样就会导致数据的不一致性。
交待了事务的基本概念,后面接着说说,事务型开发的接口设计的一个原则:防重入。
先假定,我们的DB,都是部署在同一个实例中(不同实例的&#