【无中生有】---15---分布式业务系统原子性控制

在电商系统常见的一个业务场景就是对商品数量的控制,十件商品不能卖给十一个用户,作为分布式系统对商品总量的计算就需要原子性控制。
锁粒度时间越少的系统能提供的系统能够并发容量也越大,数据的正确性控制也越好,所以基于远程服务的锁性能一定没有本地锁的好,原子性的控制也更差。但是本地化的原子性控制存在一个明显的短板,就是一台机器的容量是有限的,如果分布式系统基于一台服务器做原子性控制,那么系统性能的瓶颈将非常明显,也非常危险。
将需要原子性控制的数据横向拆分在多台服务器时一个相对好的选择,不过由于原子性控制的本质,这个做法只能提高并发容量,无法做到原子性控制集群的高可用。其中一台服务器党宕机时数据的损失不容易即时恢复。采用原子性集群还有一个问题既是数据倾斜的问题,但是采用请求路由均衡的方式可以较好的解决这个问题。
redis本身的原子性控制机制已经不错,但有个前提就是并发量不能突破redis的相应阈值,而且由于redis制定时远程化服务,并且单点,在极高并发量下不是一个好的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`vxe-table` 提供了 `sortable` 属性来实现列拖拽排序功能,使用非常方便。 只需将 `sortable` 属性设置为 `custom`,同时在 `column` 中设置 `orderList` 属性,即可启用列拖拽排序功能。`orderList` 属性是一个数组,用于存储列的排序顺序,按照数组的顺序排列列,例如: ```js [ { field: 'name', title: '姓名' }, { field: 'age', title: '年龄' }, { field: 'gender', title: '性别' } ] ``` 假设我们要实现对列的拖拽排序功能,可以这样设置 `vxe-table`: ```html <template> <vxe-table :data="tableData" :columns="tableColumns" :sortable="'custom'" @sort-change="handleSortChange"></vxe-table> </template> <script> export default { data () { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 25, gender: '女' }, { name: '王五', age: 30, gender: '男' } ], tableColumns: [ { field: 'name', title: '姓名', orderList: ['name', 'age', 'gender'] }, { field: 'age', title: '年龄', orderList: ['name', 'age', 'gender'] }, { field: 'gender', title: '性别', orderList: ['name', 'age', 'gender'] } ] } }, methods: { handleSortChange (params) { const { column, order } = params const orderList = column.orderList const index = orderList.indexOf(column.field) orderList.splice(index, 1) orderList.splice(order, 0, column.field) } } } </script> ``` 在上面的例子中,我们将 `sortable` 属性设置为 `custom`,并在 `column` 中设置 `orderList` 属性,用于存储列的排序顺序。在 `sort-change` 事件中,我们根据列的排序顺序更新 `orderList` 数组,从而实现列拖拽排序功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值