Reactor

Spring WebFlux + React搭建后台管理系统(11):尝试RSocket数据流传输

不问归期 提交于 2020-09-24 08:32:54
reactor等响应式可以轻松的传递流数据,想起了spring的webflux也支持以rsocket,它可以通过websocket或是tcp的方式进行数据传输,正好有java版本和js版本,且spring也支持rsocket,下面尝试是哟给你rsocket模拟天气数据的传输,前端接到数据通过折线图展示。 1. 后端部分 1.1 model实现 创建一个weather类用于传输包装数据 包含时间、风速、风向、温度数据 /** * @author: ffzs * @Date: 2020/9/2 下午5:12 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor public class Weather { Long id ; LocalDateTime date ; Long direction ; Long speed ; Long temperature ; } 1.2 服务实现 使用random获取一些数据用于测试 rsocket的controller使用的是 @Controller 路由是一段字符串 @MessageMapping("weather") /** * @author: ffzs * @Date: 2020/9/2 下午4:35 */ @Controller @Slf4j public class

为什么 Redis 单线程能达到百万+QPS?

拟墨画扇 提交于 2020-08-18 08:50:11
作者:在江湖中coding https://juejin.im/post/5e6097846fb9a07c9f3fe744 性能测试报告 查看了下阿里 Redis 的性能测试报告如下,能够达到数十万、百万级别的 QPS (暂时忽略阿里对 Redis 所做的优化),我们从 Redis 的设计和实现来分析一下 Redis 是怎么做的。 Redis的设计与实现 其实 Redis 主要是通过三个方面来满足这样高效吞吐量的性能需求 高效的数据结构 多路复用 IO 模型 事件机制 1、高效的数据结构 Redis 支持的几种高效的数据结构 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合) 以上几种对外暴露的数据结构它们的底层编码方式都是做了不同的优化的,不细说了,不是本文重点。 2、多路复用 IO 模型 假设某一时刻与 Redis 服务器建立了 1 万个长连接,对于阻塞式 IO 的做法就是,对每一条连接都建立一个线程来处理,那么就需要 1万个线程,同时根据我们的经验对于 IO 密集型的操作我们一般设置,线程数 = 2 * CPU 数量 + 1,对于 CPU 密集型的操作一般设置线程 = CPU 数量 + 1。 当然各种书籍或者网上也有一个详细的计算公式可以算出更加合适准确的线程数量,但是得到的结果往往是一个比较小的值,像阻塞式 IO