全部文章all(329)
    简洁模式
11

redux-saga管理异步

## redux-saga 是做什么?redux-saga 基于 yield 语法,能够创建+管理更加复杂的异步操作。比如有时候点击前端按钮,发起异步请求。为了防止频繁点击请求,需要进行节流防抖。除了可以在发起请求的时候,进行节流防抖。**还可以把节流防抖的时机提前,在状态更新的时候节流防抖**。怎么理解呢?.....

2020-12-25
12

理解Redux

## 为什么需要 redux就个人来说,偏前,开发过前端组件以及云开发控制台;偏后,使用 nodejs 开发过云开发的数据流中台以云开发网关,日流量达到 10 亿+的级别。目前微服务理念非常火,后端架构都像无状态服务转变,这方便基于 k8s 的横向扩容,应对突发流量。但是在前端开发中,尤其是控制台这种业务逻辑.....

2020-12-24
13

认识Immutable

## 什么是 ImmutableImmutable 代表着不可变数据类型。它一旦被创建,不可被更改。它不是 js 特有,是一种编程理念。在 js 中,一个常见的落地实现是 immutable.js 库。## 可变数据类型与不可变数据类型举个例子,在 js 中,默认都是可变数据类型:```jsconst obj.....

2020-12-22
14

ImmutableJs使用

## 特性 1: 内置对象ImmutableJs 提供了大量的内置对象,它们和 js 的原生对象不同,可以互相转换。这意味着在使用 ImmutableJs 时,对原来的代码会有比较大的侵入型,需要改造。```jsconst { Map, List } = require("immutable");const .....

2020-12-22
15

NodeJS多线程模块研究 - worker_threads

代码 node 版本:v14.8.0## Quick Startjs 和 nodejs 一直都是单线程,直到官方推出了 worker_threads 模块,用来解决 CPU 密集型计算场景。可以通过以下代码快速开启一个工作线程:```javascriptif (isMainThread) { // 这会在工.....

2020-11-11
16

NodeJS多线程通信和共享内存 - worker_threads

代码 node 版本:v14.8.0## 基础多线程通信master thread 中,`Worker` 返回的对象,代表着工作线程实例。worker thread 中,`require('worker_threads').parentPort` 就是 master thread 的 MessagePort。.....

2020-11-11
17

队列学习笔记

## 应用场景- 异步处理:将同步变成异步,提高主流程相应速度- 系统解耦:各个系统通过 MQ 进行通信- 数据同步:MQ 可以保证数据修改的有序性- 流量削峰:系统瓶颈通常在 DB 上,可以考虑将数据写入 MQ 和 Cache,等流量过去,Worker 将数据刷到 DB 中## 常见队列类型**缓冲队列**.....

2020-10-27
18

缓存设计-崩溃和修复

## 缓存崩溃和恢复流量打进来,会按照不同的策略分配到不同的缓存上。这里的策略常用的有取模、一致性哈希。对于取模,节点出问题,**如果节点下线,会造成大量缓存不命中,可以通过每个节点主从切换来解决**;但是如果有新节点加入,也会造成取模结果不同,造成大量缓存不命中。所以一般采取一致性哈希,节点上下线,只会影响.....

2020-10-24
19

缓存设计-基础学习笔记

## 什么样的数据需要缓存?1. 经常读取、频繁访问的数据2. 热点数据3. 会造成 I/O 瓶颈的数据:比如慢查询结果、远程调用结果4. 计算昂贵的数据:比如聚合结果## 怎么衡量缓存质量?一般是通过“缓存命中率”来衡量缓存是否工作良好。云开发 CloudBase 网关之前只有堆上缓存,假设集群有 N 个 .....

2020-10-23
20

降级设计-基础笔记

## 设计思路1、集中管理降级开关:通过推送/拉取机制,将开关同步到各个应用(比如 1 次/s)2、读降级:不调用 api,只读本地/分布式缓存,没有数据返回默认数据3、限流降级:通过限流来限制流量,排队页面、直接告知没有库存、显示错误页。4、写降级:写场景大多数不能降级。一般解决方法是将同步改成异步,并且将.....

2020-10-23