业务网关之AK认证中心建设

2022-04-05
阅读 2 分钟
1.2k
AK(Access Key)是一种身份证明,它解决了“资源的使用者是谁”这个问题,比如在生活中,身份证可以证明你是你,而在云计算或程序中,AK能证明你是这个应用的拥有者。

我在阿里云做云开发平台

2021-03-02
阅读 6 分钟
1.7k
各大云厂商今年在开发者阵地侧逐渐开始向“云”化开发发展,最为显著的产品就是Cloud IDE,催生出来的趋势就是云端开发。云开发现阶段尽管在各大公司内部无法作为日常开发工具普遍推广,但是在某些特定场景下Cloud IDE云开发是非常让人着迷的:
封面图

阿里云云开发平台助力企业Serverless架构升级实战

2020-11-30
阅读 3 分钟
1.7k
风变科技 一个希望通过技术去推动下一代基础教育的组织。旗下产品包括第一代的熊猫书院(读书类产品)、第二代的熊猫小课(泛学科综合学习平台),以及现在的风变编程(成人python教育)和风变人生设计(个人职业生涯规划类)。

nodejs中的并发编程

2020-03-23
阅读 5 分钟
4.6k
在nodejs中,如果要实现sleep的功能主要是通过“setTimeout + promise”实现,也可以通过“循环空转”来解决。前者是利用定时器实现任务的延迟执行,并通过promise链管理任务间的时序与依赖,本质上nodejs的执行线程并没有真正的sleep,事件循环以及v8仍在运行,是仅仅表现在业务逻辑上sleep;而后者的实现则无疑实在浪费CPU...

基于Unix Socket的可靠Node.js HTTP代理实现(支持WebSocket协议)

2020-03-11
阅读 6 分钟
3.7k
实现代理服务,最常见的便是代理服务器代理相应的协议体请求源站,并将响应从源站转发给客户端。而在本文的场景中,代理服务及源服务采用相同技术栈(Node.js),源服务是由代理服务fork出的业务服务(如下图),代理服务不仅负责请求反向代理及转发规则设定,同时也负责业务服务伸缩扩容、日志输出与相关资源监控报警。...

nginx(tengine)访问日志分片

2019-10-12
阅读 1 分钟
2.5k
nginx日志按天分片是运维的基本要求,不仅可以减小文件大小,方便检索关键数据,也可以定时删除过期的日志。可是nginx和tengine默认并不支持文件分片,因此需要额外处理。

serverless在微店node领域的探索应用

2019-08-20
阅读 5 分钟
1.7k
目前微店中台团队为了满足公司大部分产品、运营以及部分后端开发人员的尝鲜和试错的需求,提供了一套基于图形化搭建的服务端接口交付方案,利用该方案及提供的系统可生成一副包含运行时环境定义可立即运行的工程代码,最后,通过 “某种serverless平台” 实现生成后代码的部署、CI、运行、反向代理、进程守、日志上报、进...

node应用远程调试教程

2019-05-16
阅读 1 分钟
1.6k
所谓远程调试,是指在本地IDE或命令行即时调试服务端代码,这在预发环境的测试阶段可以使用。远程调试避免了服务端环境的模拟,可快速定位bug。

面向复杂应用,Node.js中的IoC容器 -- Rockerjs/core

2019-03-21
阅读 9 分钟
2.9k
基于 TypeScript 和注解的轻量级IoC容器,提供了依赖注入、面向切面编程及异常处理等功能。Rockerjs Core可在任意工程中引入,是一个框架无关的IoC容器。

一步步学会用docker部署应用(nodejs版)

2019-02-28
阅读 6 分钟
3.3k
docker是一种虚拟化技术,可以在内核层隔离资源。因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境。这大大简化了应用部署,让运维人员无需陷入无止境繁琐的依赖环境及系统配置中;另一方面,容器技术也可以充分利用硬件资源,做到资源共享。

nodeEE双写与分布式事务要点一二

2018-12-17
阅读 3 分钟
1.9k
业务中为了减少热点数据不必要的db查询,往往会增加一层缓存来解决I/O性能。可是I/O多了一层也就多了一层的更新维护与容错保障,当修改db中某些数据时,往往会面临缓存更新的问题,在这里简单介绍 数据库与缓存双写问题以及在业务场景如何使用双写策略。

提升node.js中使用redis的性能

2018-11-02
阅读 4 分钟
4.1k
某基于node.js开发的业务系统向外提供了一个dubbo服务,提供向第三方缓存查询、设置多项业务数据并聚合操作结果。在QPS达到800时(两台虚拟机,每台机器4Core8G4node进程),在监控平台上出现了非常多的slow rt警告,平均接口响应达到60+ms,请求报警率达到80%+。

puppeteer实现线上服务器任意区域截图

2018-09-28
阅读 3 分钟
5.8k
整个九月份由于业务繁重以及玩心颇重,一直没有机会来写一篇博文。而且笔者于十月一日将会举办人生大事--婚礼,现在家里筹办过程中只能抽出零碎的时间来写这篇文章。

巧妙复制一个流

2018-08-20
阅读 5 分钟
3.1k
实际业务中可能出现重复消费一个可读流的情况,比如在前置过滤器解析请求体,拿到body进行相关权限及身份认证;认证通过后框架或者后置过滤器再次解析请求体传递给业务上下文。因此,重复消费同一个流的需求并不奇葩,这类似于js上下文中通过 deep clone一个对象来操作这个对象副本,防止源数据被污染。

Nodejs“实现”Dubbo Provider

2018-07-30
阅读 2 分钟
4.2k
目前nodejs应用越来越广泛,但和java的dubbo体系接入困难,所以我们需要实现node端的dubbo provider逻辑。java的dubbo provider是和consumer在一个jar中,提供了服务配置、注册、集群与负载均衡、监控和多种协议。使用nodejs实现一个可用的dubbo provider SDK完全没有问题,最简单的实现则是在对应ZK集群注册接口与机器I...

deno深入揭秘及未来展望

2018-06-30
阅读 6 分钟
7.3k
node.js之父Ryan Dahl在一个月前发起了名为deno的项目,项目的初衷是打造一个基于v8引擎的安全的TypeScript运行时,同时实现HTML5的基础API。所谓的安全运行时,是将TS代码运行在一个沙盒里,访问受限的文件系统、网络功能,这比较类似于web里的iframe sandbox。

node.js与ThreadLocal

2018-05-28
阅读 4 分钟
5.1k
ThreadLocal变量的说法来自于Java,这是在多线程模型下出现并发问题的一种解决方案。ThreadLocal变量作为线程内的局部变量,在多线程下可以保持独立,它存在于线程的生命周期内,可以在线程运行阶段多个模块间共享数据。那么,ThreadLocal变量又如何与node.js扯上关系呢?

TypeScript入门教程

2018-05-02
阅读 6 分钟
3.5k
TypeScript提供了ES6的支持,也可以支持部分ES7草案的特性,不用担心TypeScript无法兼容目前主流的JavaScript解释器

node.js与比特币

2018-03-30
阅读 8 分钟
4.5k
BTC中引入了许多创新的概念与技术,区块链、PoW共识、RSA加密、萌芽阶段的智能合约等名词是经常被圈内人所提及,诚然这些创新的实现使得BTC变成了一种有可靠性和安全性保证的封闭生态系统,但是在这个BTC生态中如果没有搭配区块链模式的转账模块,那么货币的流通属性也就无从谈起了。若要实现转账交易模块, “是否采用传...

关于首屏时间采集自动化的解决方案

2018-01-27
阅读 5 分钟
8.7k
首屏时间是指从转向该页面到屏幕中该页面所有内容都可见时的时间。已经有太多的关于首屏时间的计算,在本文中并不重复阐述这些已经被提出或者实现的方案,而旨在探索与讨论更多的首屏自动化采集方案,扩大思考范围,你我思想之间互相碰撞往往可以激起更多的稀奇古怪的解决方案,这也正是我写这篇文章的目的。

支持多用户web终端实现及安全保障(nodejs)

2017-11-29
阅读 6 分钟
3.1k
terminal(命令行)作为本地IDE普遍拥有的功能,对项目的git操作以及文件操作有着非常强大的支持。对于WebIDE,在没有web伪终端的情况下,仅仅提供封装的命令行接口是完全不能满足开发者使用,因此为了更好的用户体验,web伪终端的开发也就提上日程。

跨浏览器tab页的通信解决方案尝试

2017-09-17
阅读 5 分钟
14.6k
当前页面需要与当前浏览器已打开的的某个tab页通信,完成某些交互。其中,与当前页面待通信的tab页可以是与当前页面同域(相同的协议、域名和端口),也可以是跨域的。

Nodejs cluster模块深入探究

2017-07-20
阅读 15 分钟
7.5k
HTTP服务器用于响应来自客户端的请求,当客户端请求数逐渐增大时服务端的处理机制有多种,如tomcat的多线程、nginx的事件循环等。而对于node而言,由于其也采用事件循环和异步I/O机制,因此在高I/O并发的场景下性能非常好,但是由于单个node程序仅仅利用单核cpu,因此为了更好利用系统资源就需要fork多个node进程执行HTT...

socket.io搭配pm2(cluster)集群解决方案

2017-06-01
阅读 8 分钟
11.2k
在线上系统中,需要使用node的多进程模型,我们可以自己实现简易的基于cluster模式的socket分发模型,也可以使用比较稳定的pm2这样进程管理工具。在常规的http服务中,这套模式一切正常,可是一旦server中集成了socket.io服务就会导致ws通道建立失败,即使通过backup的polling方式仍会出现时断时连的现象,因此我们需要...

node中创建服务进程

2017-05-08
阅读 3 分钟
3.4k
在node工程部署中,常常涉及到三方:本地客户端、跳板机和服务器(集群)。在通过git触发gitlab hook脚本后,需要在跳板机中执行相应的ssh命令执行shell文件启动node服务器,这需要使用一个常用的命令setsid,这样当ssh命令执行完毕shell退出后,node服务器仍正常运行,此时node服务进程就是一个最典型的daemon进程(后...

翻译:如何使用CSS实现多行文本的省略号显示

2017-03-06
阅读 8 分钟
1.9k
本文翻译自CSS Ellipsis: How to Manage Multi-Line Ellipsis in Pure CSS,文中某些部分有些许改动,并添加译者的一些感想,请各位读者谅解。 合理的截断多行文本是件不容易的事情,我们通常采用几种方法解决: overflow: hidden直接隐藏多余的文本 text-overflow: ellipsis只适用于单行文本的处理 各种比较脆弱的javasc...

node服务的监控预警系统架构

2017-01-04
阅读 4 分钟
4.2k
目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作。不同于个人开发的简单服务器,企业级的node服务要求更为苛刻:

node模块加载层级优化

2016-11-17
阅读 5 分钟
3.7k
大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载。但是随着应用规模的加大,目录层级越来越深,若是在某个模块中想要通过require方式以依赖名称或相对路径的方式引用其他模块就非常麻烦,影响开发效率和美观。

深入node之Transform

2016-09-26
阅读 5 分钟
2.8k
在开发中直接接触Transform流的情况不是很多,往往是使用相对成熟的模块或者封装的API来完成流的处理,最为特殊的莫过于through2模块和gulp流操作。那么,Transform流到底有什么特点呢?

History API与浏览器历史堆栈管理

2016-07-23
阅读 7 分钟
5.6k
移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构。传统的单页应用基于url的hash值进行路由,这种实现不存在兼容性问题,但是缺点也有--针对不支持onhashchange属性的IE6-7需要设置定时器不断检查hash值改变,性能上并不是很友好。