基于处理百万吞吐量的资源控制系统。

1:这样的文章,百度已经烂大街了,,但是这个,有不一样的地方,他倾向是一个软件,提供sdk包进行访问。
2:软件图-描述秒杀系统
在这里插入图片描述
3:该系统的带来哪些应用场景
3.1:需要控制资源数的数据,比如秒杀场景,控制不超卖。
4:该系统优势
4.1:响应速度快,多节点平行提供服务,利用多节点的优势。
4.2:吞吐量高,一个4核心8G-3台节点的集群,上百万的吞吐量可以保证。
4.3:数据可靠性高,节点挂了,不影响系统继续对外提供服务,数据不丢
失。
4.4:整个系统全程无锁,其实多线程竞争资源的情况下,目前技术是不可能无锁,所以系统设计,做了针对线程来做主题分区。同一个分区的主题,只会被一个线程访问。(也许在这儿大家会有点懵逼,说,既然单线程,那有生优势呢,,注意这儿只是一个分区的主题而已,我们可以有多个分区,那么对应的就是多个线程,这样就利用起来了,多核系统带来的优势,)
4.5:系统中调节生产者与消费者用的是disruptor,因为该框架的特性,最好,生产数量+消费者数量=系统核心数的2倍。因为他有些等待策略会直接让一个线程绑定cpu.
5:以前做秒杀系统,对资源都会进行加锁,这样会导致线程阻塞。或者在数据库做乐观锁,或者基于redis来做(redis以前是单线程模型,所有数据都是单线程操作,这样会损失现在多核系统带来的优势)—以上来说,加锁导致多个线程阻塞,乐观锁,会导致多次db访问,基于redis会损失多核cpu的优势。都有一定缺陷(现在大多高并发的项目都会做微服务,这样一来,,分布式锁,对资源控制,会导致多个实例线程阻塞。)博主提供的sdk是基于vertx实现的异步,可以允许无阻塞。从而提高cpu的利用率。秒杀系统中整个流程也是无阻塞的。
6:该系统,博主还没有做到完善,,,,期待第一个版本的到来。

来源url
栏目