我为什么从Redux迁移到了Mobx

Redux是一个数据管理层,被广泛用于管理复杂应用的数据。但是实际使用中,Redux的表现差强人意,可以说是不好用。而同时,社区也出现了一些数据管理的方案,Mobx就是其中之一。 Redux的问题 Predictable state container for JavaScript apps 这是Redux给自己的定位,但是这其中存在很多问题。 首先,Redux做了什么?看Redux的源码,createStore只有一个函数,返回4个闭包。dispatch只做了一件事,调用reducer然后调用subscribe的listener, »

全链路压测保驾有赞双十一

2017年双十一即将来临,对于买家来说,是一年一度的购物狂欢,可以对于一个电商公司的技术来说,确是一年一次的大考。如何用更少的预算完成指定当前业务规模的流量高峰,是技术的永衡的主题。 我们有赞在双十一之前完成了全链路压测的方案,并把它用于大促的扩容和容量验证,取得了很不错的成果。 做过电商的技术同学都知道,在大促来临时,整个集群是的最高峰压力将是正常时间的几十倍,最高峰持续的时间会特别短,然后回落到正常水平的几倍的水平线上。所以,可能我们会自然而然地想到,把我们整个集群扩容几十倍的机器,在双十一当天应对几十倍的流量, 然后第二天就减至正常量,就可以完成大促的考验。事实情况是否真的这么简单? 大促保障的困难 用户购买商品的链路是一条很长很复杂的系统集群,中间会涉及到店铺,商品, »

浅谈React 16中的Fiber机制

九月份关于 React 开源协议的话题在社区闹得沸沸扬扬,所幸最后以 Facebook 宣布遵循 MIT 进行开源告终,但由此也足以看出 React 在前端圈的影响力。 作为 Facebook 前端出品的当门红,React 也迎来了一次大的升级,引入了最新的核心调度算法即 Fiber 机制,这是 React 基于 Fiber 调度的第一个版本,其次还增加了一些呼声高的新特性,如 »

How we redesigned the NSQ - NSQ重塑之详细设计

之前的 文章 讲述了我们重塑NSQ的目的和目标, 接下来我们将详细描述下每个功能的具体技术细节. 重构后架构图 首先, 看一下重构后的整体架构图: 原来的几个NSQ组件大部分功能是复用的, 图中新增的就是元数据存储服务-etcd, 以及数据同步和HA处理逻辑. 改造topic queue 为了增加副本和其他特性, 首先需要改造的就是nsq的topic数据写入方式, 要保证数据最终落盘, 才能继续后面的改造. 所以我们第一步重构数据写入逻辑, 这块逻辑本身并不依赖分布式功能, 可以独立重构. 数据落盘 原版的topic写入流程是通过golang里面的chan来做的, 只有超过chan容量之后, 才会落盘. 但是chan有几个缺点, 首先是内存数据, 数据会丢, »

Felint 好用的前端静态代码校验工具包

写在最前 可能很多同学跟我原来一样,觉得前端静态代码校验无非是告诉你代码缩进等格式问题,加上本身自己写代码就比较注意格式问题,所以觉得前端代码校验没什么必要。但其实前端代码校验能带给我们的远不止这些。 第一个例子 某天我在给页面添加链接的时候写下了如下代码: <a href="https://www.youzan.com" target="_blank">点我</a> 正当我想继续的时候,突然发现我的编辑器提醒我这行代码有错误(使用 Felint后) »