Jerry Bendy 发布于 03月07, 2017

入手树莓派

最近在一篇文章上看到关于使用 NodeJS 控制树莓派硬件编程的文章,顿时起了兴致,准备也搞一个来玩玩。其实早在几年前就看到有关树莓派的内容,只是对 C 语言或 Python 编程不熟,玩不起来,所以迟迟未能入手。

刚好同事有一个树莓派,拿来玩了几天后基本搞懂怎么用了,于是自己也买了一个 😁

阅读全文 »

Jerry Bendy 发布于 02月23, 2017

Yarn vs npm: 你需要知道的一切

Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。就像我们可以从官方文档了解那样,它的目的是解决这些团队使用 npm 面临的少数问题,即:

  • 安装的时候无法保证速度/一致性
  • 安全问题,因为 npm 安装时允许运行代码

阅读全文 »

Jerry Bendy 发布于 01月28, 2017

高性能服务器架构思路(五)——分布式缓存

本文分享自腾云阁

作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发。

在分布式程序架构中,如果我们需要整个体系有更高的稳定性,能够对进程容灾或者动态扩容提供支持,那么最难解决的问题,就是每个进程中的内存状态。因为进程一旦毁灭,内存中的状态会消失,这就很难不影响提供的服务。所以我们需要一种方法,让进程的内存状态,不太影响整体服务,甚至最好能变成“无状态”的服务。当然“状态”如果不写入磁盘,始终还是需要某些进程来承载的。在现在流行的 WEB 开发模式中,很多人会使用 PHP+Memcached+MySQL 这种模型,在这里,PHP 就是无状态的,因为状态都是放在 Memcached 里面。这种做法对于 PHP 来说,是可以随时动态的毁灭或者新建,但是 Memcached 进程就要保证稳定才行;而且 Memcached 作为一个额外的进程,和它通信本身也会消耗更多的延迟时间。因此我们需要一种更灵活和通用的进程状态保存方案,我们把这种任务叫做“分布式缓存”的策略。我们希望进程在读取数据的时候,能有最高的性能,最好能和在堆内存中读写类似,又希望这些缓存数据,能被放在多个进程内,以分布式的形态提供高吞吐的服务,其中最关键的问题,就是缓存数据的同步。

阅读全文 »

Jerry Bendy 发布于 01月28, 2017

高性能服务器架构思路(四)——编码复杂度和通信

本文分享自腾云阁

作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发。

阅读全文 »

Jerry Bendy 发布于 01月25, 2017

高性能服务器架构思路(三)——分布式系统概念

本文分享自腾云阁

作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发。

阅读全文 »

Jerry Bendy 发布于 01月20, 2017

高性能服务器架构思路(二)——缓冲清理策略

本文分享自腾云阁

作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发。

虽然使用缓存思想似乎是一个很简单的事情,但是缓存机制却有一个核心的难点,就是——缓存清理。我们所说的缓存,都是保存一些数据,但是这些数据往往是会变化的,我们要针对这些变化,清理掉保存的“脏”数据,却可能不是那么容易。

阅读全文 »

Jerry Bendy 发布于 01月19, 2017

高性能服务器架构思路(一)——缓冲策略

本文分享自腾云阁

作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发。

在服务器端程序开发领域,性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问题的基本策略和经典实践,并分为几个部分来说明:

阅读全文 »

Jerry Bendy 发布于 01月17, 2017

【分享】HTTP 状态码 451:基于法律上的原因,我不能向你展示网页内容

几天前GitHub一个repo由于某个原因而无法从国内访问,当我打开ChromeDevTools时,发现了一个新的HTTP状态码——451。我们先看看维基百科对这个状态码的介绍:在电脑网络领域中,HTTP451因法律原因不可用(英语:HTTP451UnavailableForLegalReasons)是一种HTTP协议的错误状态代码,当用户请求访问某个经政府审核等查核方法后认定不合法的来源时,就会显示这个错误代码。451数字来源于1953年由美国作家雷·布莱伯利所著的反乌托邦小说《华氏451度》。故事叙述了一个压制自由的近未来世界,禁止人们阅读、拥有书籍,所谓的消防员的工作不是灭火,而是焚书。文中的主人公,盖·蒙...

阅读全文 »

Jerry Bendy 发布于 11月26, 2016

【分享】几种常见的不停机发布方式

何为不停机发布?本文所说的不停机发布,是指在不停止对外服务的前提下完成应用的更新。与热部署的区别在于,热部署关注于应用层面并且以不重启应用为前提,而不停机发布则关注于服务层面。随着摩尔定律逐渐逼近极限和多核时代的到来,分布式应用已经成为事实上的主流。下文首先给出一种通用的适用于分布式应用环境的不停机发布方式,然后再介绍Master/Worker这种常见的适用于单机应用的不停机发布方式。Cluster模式对于运行于集群环境的分布式应用,一般在应用之上都有一层负载均衡(LB)。如果在发布过程中,在更新任一节点(也可以是一组节点)前先关闭该节点对应的负载,更新完再打开负载,即可实现整体服务的不停机发布。在此基础上,为了...

阅读全文 »