假设我们用netty做服务,当接受到网络传输的码流,我们通过某种手段将这种传输数据解析成了熟悉的pojo,那这些pojo该如何进一步处理?
比如游戏中的抢购、场景业务等,对处理那种高并发的业务场景,如何保证数据的一致性?
1.悲观锁和乐观锁
悲观锁和乐观锁这种,大家立即会联想到数据库读写。但是我们仍然可以尝试的在获取对象锁上理解。
没错,锁技术很慢。
2.读写分离,读写锁
3.MVCC,我曾尝试着用java来实现类似数据库的多版本并发控制,后面具体详说。
4.actor模型的引入
java版本的actor,共享线程池,使用cas,实现同一时刻只有单线程访问,同时更高的提升了线程池的利用率。
5.无锁化编程思想:像闪电一样的disruptor
这种ringbuffer环形数组解决了队列的头尾指针和大小变量等冲突,而唯一需要关心的,就是多个生产者写入ringBuffer的场景,
这个要仔细说。