Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2020-01-07:谈一谈RxJava背压原理? #228

Open
MoJieBlog opened this issue Jan 7, 2020 · 4 comments
Open

2020-01-07:谈一谈RxJava背压原理? #228

MoJieBlog opened this issue Jan 7, 2020 · 4 comments
Labels
开源框架 著名开源框架源码相关 线程

Comments

@MoJieBlog
Copy link
Collaborator

No description provided.

@Blues9527
Copy link

在异步的情况下,当上游事件发送的速度大于下游处理事件的速度时,称之为背压,此时会生成一个无限大的缓冲池去缓存事件。在RxJava中,Flowable是支持背压策略的。

@LineCutFeng
Copy link

总共分为4种策略
1.BackpressureStrategy.ERROR:若上游发送事件速度超出下游处理事件能力,且事件缓存池已满,则抛出异常
//阻塞时队列
2.BackpressureStrategy.BUFFER:若上游发送事件速度超出下游处理能力,则把事件存储起来等待下游处理
3.BackpressureStrategy.DROP:若上游发送事件速度超出下游处理能力,事件缓存池满了后将之后发送的事件丢弃
4.BackpressureStrategy.LATEST:若上有发送时间速度超出下游处理能力,则只存储最新的128个事件

@Moosphan Moosphan added 线程 开源框架 著名开源框架源码相关 labels May 9, 2020
@mlinqirong
Copy link

当上游发送的事件过快或者过多的话就会形成阻塞 导致内存溢出 为了解决这一现象Rxjava2.0推出了Flowable 和 Subscriber 用来支持背压策略
MISSING:如果流的速度无法保持同步,可能会抛出 MissingBackpressureException 或 IllegalStateException。
BUFFER:上游不断的发出 onNext 请求,直到下游处理完,也就是和 Observable 一样了,缓存池无限大,最后直到程序崩溃。
ERROR:会在下游跟不上速度时抛出 MissingBackpressureException。
DROP:会在下游跟不上速度时把 onNext 的值丢弃。
LATEST:会一直保留最新的 onNext 的值,直到被下游消费掉。

@senlinxuefeng
Copy link

总共分为4种策略
1.BackpressureStrategy.ERROR:若上游发送事件速度超出下游处理事件能力,且事件缓存池已满,则抛出异常
//阻塞时队列
2.BackpressureStrategy.BUFFER:若上游发送事件速度超出下游处理能力,则把事件存储起来等待下游处理
3.BackpressureStrategy.DROP:若上游发送事件速度超出下游处理能力,事件缓存池满了后将之后发送的事件丢弃
4.BackpressureStrategy.LATEST:若上有发送时间速度超出下游处理能力,则只存储最新的128个事件
响应式编程RxJava的理解

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
开源框架 著名开源框架源码相关 线程
Projects
None yet
Development

No branches or pull requests

6 participants