Skip to content

lltopk/samples-reactor-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

多线程是越多越好, 还是越少越好?

正确的设计思路是, 让少量的线程一直忙, 最好等于CPU核数, 而不是让大量的线程一直切换

大量的线程只会引起激烈的资源竞争, 由于线程切换要保留现场, 既浪费内存也花费时间, 即使创建线程池也不是最优解

响应式规范与Java实现

https://www.reactive-streams.org/

http://reactivemanifesto.org/

从JDK9开始, 借鉴了C#, Java底层引入了响应式规范, 四大接口位于Flow类下: java/util/concurrent/Flow.java

  • Publisher
  • Subscriber
  • Subscription
  • Processor<T,R> extends Subscriber, Publisher

传统的高并发系统, 需要分布式缓存, 分布式消息中间件做异步, 要求开发人员在架构层面做调整, 大白话就是无脑加机器

  • 分布式架构并且引入了新的一致性问题
  • 单体服务性能并没有压缩到极致

而所谓ReactiveStream正是针对单体服务本地化的消息系统解决方案, java/util/concurrent/Flow.java封装了整个响应式发布订阅关系, 做好了全链路的异步线程, 缓存区, 非阻塞回调处理

因此基于封装好的响应式API, 开发人员只需要组装好数据交给流水线ReactiveStream, 即可达到高性能服务器的效果

Reactor框架

https://projectreactor.io/

  • 框架核心适配Stream以及CompletableFuture
  • 将全部数据抽象为Mono(0|1)对象以及Flux(N)对象序列
  • 非阻塞IO, 回调缓存区

About

sample-reactor-web

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages