阿里云 OCS SDK for NodeJS介绍

阿里云技术团队:熊亮

阿里云 SDK for NodeJS 是为 NodeJS 开发者提供使用阿里云各项服务的统一入口,由阿里云UED团队负责开发维护。目前集成了OCS(Memcached), OSS, RDS(MySQL) 三项阿里云服务。代码地址:https://github.com/aliyun-UED/aliyun-sdk-js

使用阿里云 OCS SDK for NodeJS 接入阿里云 OCS 将会变得非常简单。当你通过试用或者购买获得阿里云 OCS 服务的实例,即对应的 ocsKey, ocsSecret 后。使用如下代码:

// 获取阿里云SDK实例

var ALY = require(‘aliyun-sdk’);

// 创建 OCS  memcached 实例

// 其中,host 为实例的 ip 地址

var memcached = ALY.MEMCACHED.createClient(11211, host, {

username: ocsKey,

password: ocsSecret

});

//  OCS 中写入数据

memcached.add(‘hello’, ‘world’, function(err, data) {

// 如果写入数据错误

if(err) {

console.log(‘add error:’, err);

return;

}

// 写入数据成功,打印返回值

console.log(‘add success:’, data);

});

通过以上几行代码,我们就能非常简单的接入并使用 OCS 的服务了。写入后读取也同样非常简单,如下:

//  OCS 中查询数据

memcached.get(‘hello’, function(err, data) {

// 如果查询错误或者失败

if(err) {

console.log(‘get error:’, err);

memcached.end();

return;

}

// 如果查询成功,打印返回值

console.log(‘get success:’, data.val.toString());

});

就像访问本地运行时内存中的对象一样简单,这体现了 NodeJS 开发便捷性和 OCS 的易用性。但是不仅仅如此,本文将为大家介绍 NodeJS 以及如何使用 NodeJS 和 OCS SDK 构建高效,可靠,可扩展的web应用后台。

NodeJS 介绍

Node.js是一个可以快速构建网络服务及应用的平台 。该平台的构建是基于Chrome’s JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。

Node 本身运行 V8 JavaScript。什么是 V8?V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底层 JavaScript 引擎。很少有人考虑 JavaScript 在客户机上实际做了些什么?实际上,JavaScript 引擎负责解释并执行代码。Google 使用 V8 创建了一个用 C++ 编写的超快解释器,该解释器拥有另一个独特特征;您可以下载该引擎并将其嵌入任何 应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器中运行。因此,Node 实际上会使用 Google 编写的 V8 JavaScript 引擎,并将其重建为可在服务器上使用。太完美了!既然已经有一个不错的解决方案可用,为何还要创建一种新语言呢?

NodeJS 的特点

高性能

V8引擎本身使用了一些最新的编译技术。这使得用 Javascript 这类脚本语言编写出来的代码运行速度获得了极大提升,却节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。NodeJS 采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。NodeJS 选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。NodeJS 绕过了这些,但仍提供很好的性能。

非阻塞

Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉 onmouseover、onclick 等 DOM 事件的用户,更有一种似曾相识的感觉。

运行 Javascript

虽然让 Javascript 运行于服务器端不是 NodeJS 的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过 Javascript 来实现。虽然还存在其他一些支持 Javascript 在服务器端 运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。

?

阿里云 OCS SDK for NodeJS

阿里云 OCS 服务采用的是基于 SASL 认证的 Memcached 二进制传输协议。实现该协议的 NodeJS 开源模块很少,有一些模块如 memjs 虽然实现了 SASL 认证和 Memcached 二进制传输协议,但是不支持命令队列即在一个命令返回数据之前无法执行新的命令,这在实际项目开发中是无法接受的。因此,阿里云 OCS SDK for NodeJS 基于 memjs 增加了命令队列,异常处理,自动重新连接等功能,使 NodejS 开发者快速接入阿里云 OCS 服务成为可能。

该开源项目代码托管在 https://github.com/aliyun-UED/node_memcached ,欢迎有兴趣的同学贡献代码。

另外,一定会有人问到 Redis 的问题。Redis 是一种常用的开源内存键值存储系统,可支持有序集合和列表等数据结构。Redis 在 NodeJS 社区中比较常见,而且也有很多成熟的模块支持。在阿里云 OCS 服务后续集成 Redis 后开发者可以自行选择 Memcached 或者 Redis 作为存储系统,我们届时也会将 Redis SDK 集成到阿里云 SDK for NodeJS 中。不过对于开发者来说在代码开发方式上,Memcached 与 Redis 非常相似,只不过所需要调用的接口不同而已。

使用阿里云 OCS SDK 开发 web 应用

在文章开始我们介绍了 OCS SDK 的最基本用法,比如我们想记录 web 应用的总访问量,可以在 OCS 中使用一个 key 代表这个总访问量,每当产生用户访问的时候,可以从 OCS 中读取 key 的值 value,将 value + 1 后再保存到 key。在这个场景中使用 OCS 在合适不过了,因为我们可能有多个 ECS 实例作为 web server,它们可以向同一个 OCS 做读写操作;另外也不用担心 ECS 实例挂掉后总访问量这个数据消失的问题;最后, OCS 的高性能也保证了我们的业务需求。

除此之外,使用 OCS 最合适的地方就是 session 存储了。在 web 服务器上的 session 可以存储在

  • |内存
  • |磁盘文件系统

    |数据库

  • |Memcached 等缓存系统

从性能,可用性角度考虑,存储在 Memcached 是最好的选择。那么在 NodeJS 中该如何实现呢。

一般来说,开发 NodeJS web 应用需要选择一个合适的 web 框架,我们以目前最流行的 web 框架 Express 举例。

Express 框架内建了对 session 处理的支持,它默认的 session 存储机制是内存存储,而将其他 session 存储机制作为可扩展选项。如下代码所示:

// 创建一个 express 实例

var app = require(“express”);

// 内存存储 session

var session = require(‘express-session’)

// 使用 express  session 处理,并使用内存存储机制

app.use(session({ secret: ‘keyboard cat’, cookie: { maxAge: 60000 }}))

// 处理 HTTP 请求,req 代表请求对象,res 代表返回对象

app.use(function(req, res) {

// sess 即为该请求所对应的用户的 session,不用担心,express 已经帮你分析请求所带的 cookie

// 并将该 cookie 所对应的 session 从存储中找到并提供给你

var sess = req.session

// 下面是对 session 对象的处理

if (sess.views) {

sess.views++

res.setHeader(‘Content-Type’, ‘text/html’)

res.write(‘<p>views: ‘ + sess.views + ‘</p>’)

res.write(‘<p>expires in: ‘ + (sess.cookie.maxAge / 1000) + ‘s</p>’)

res.end()

else {

// 更新后的 session 会在请求处理结束后自动写回到 session 的存储中

sess.views = 1

res.end(‘welcome to the session demo. refresh!’)

}

})

从上面的代码中可见,我们只需要实现 session 的存储机制,便能够和 express 完美的结合了。


原文地址:http://weibo.com/1644971875/BhO8z64ME

阿里云 OCS SDK for NodeJS介绍,布布扣,bubuko.com

时间: 2024-12-21 01:12:08

阿里云 OCS SDK for NodeJS介绍的相关文章

C#链接阿里云OCS

一.阿里云OCS简单介绍 阿里云OCS兼容Memcached,因为OCS就相当于Memcached的服务器端,我们代码只是当作客户端,链接上服务器端就行了.阿里云OCS介绍详情见 http://www.aliyun.com/product/ocs?spm=5176.2020520107.0.0.s2zgFk#Help . 二.C#客户端链接OCS 1.阿里云文档上介绍的是用Enyim.Caching去链接OCS.那我们项目中就用nuget去下载Enyim.Caching包.nuget搜索Enyi

【阿里云产品公测】在Laravel4框架中使用阿里云OCS缓存

作者:阿里云用户 supechina Laravel 是我最近用得非常多而且越用就越喜欢的一款PHP框架,由于没有向下兼容的历史包袱,完全面向对象的风格,借助 Facades 优雅的 IoC Container 实现,采用 Composer 进行包管理,可以方便地引入和使用开源社区里的优秀组件……总而言之,这是一款真正让你能够 "code happy" 的“巨匠级PHP开发框架”. 在尝试把自己的 Laravel App 部署到阿里云的时候,遇到了一个问题: Laravel 支持 Me

.Net程序测试使用阿里云OCS开放缓存服务

 首先需要有一个阿里的OCS实例和ECS云服务器 请确认这两个是在同一个可用区的,这个很重要! 这两个可以在阿里云官网申请得到 拿到OCS之后 进入OCS控制台,点击下面的客户端下载选择.Net客户端,或者直接点这里下载.Net客户端 下载下来的是一个压缩文件,解压之后是可能是一个没有格式的文件,不要管它,用winrar或者其他的解压软件在解压一次 得到一个文件夹,里面放的是一个VS的解决方案,如图 这就是一个客户端,双击打开解决方案 选择Enyim.Caching项目重新生成一下 右键打开

python2系列 接入阿里云oss sdk 实现上传脚本,亲测

公司图片要从原有的nfs存储上迁移到oss存储上,其实阿里云提供的很多种方式,但是作为一枚运维人员很有必要学会使用ossutil工具,当然接入阿里oss的python的sdk也是很有必要的,下面我就将我写的简单的脚本样例晒一下: #! /usr/bin/env python #! -*- coding:utf8 -*- """ aliyujn oss2 python sdk 上传测试测试!!""" from __future__ import p

使用阿里云学生服务器搭建nodejs项目(准备阶段)

最近在阿里云买了一年的学生服务器,准备在上面挂些东西玩玩,折腾了一大晚上,才把node环境搭好,本人是linux菜鸟,记录一下自己第一次使用遇到的坑... 1.我选择的是centos系统,预装php环境,一开始用阿里云内置的远程连接,默认名字root,密码没有,密码可以在控制台重置,重置后一定要重启服务器才能登录生效!!我就是没重启,当了铁头娃...,还有一点就是linux的密码都是不显示的,不要以为是电脑的问题... 2.阿里云内置的不是很方便,切网页很麻烦,下个putty可以输入公网ip直接

阿里云入坑指南&amp;&amp;nodejs 安装配置

买了阿里云1G1核1M的机器(800元,3年) 登录阿里云-实例-选择实例所在地区-重置密码 用公网IP ssh连接 nodejs 安装配置 #更新阿里云版本yum -y update cd /usr/local/src , 这个文件夹通常用来存放软件源代码 #wget命令下载Node.js安装包.wget是一个从网络上自动下载文件的自由工具.它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理. wget http://nodejs.org/dist/v0.12.5/node-v0.1

Java和Python对阿里云OCS的读写联调情况

目前项目用到了阿里云的OCS服务,芳姐用的OCS之Java客户端,另外一个团队用的是OCS的python客户端,因为开发语言不同,OCS的客户端对不同语言的兼容性还不太好,为此我们进行了多次协商,让我们能够互相读写OCS中的数据,过程如下: 1.  Java将JavaBean对象序列化后写入OCS的数据,Java读写没有问题,而且效率很高,但Python不能读.因此这个方案废除. 2.  JAVA将JavaBean对象用toString()转换成key=value数据对的字符串写入OCS,发现当

iOS使用阿里云OSS对象存储 (SDK 2.1.1)

最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所调用的方法差别较大(自我感觉),当然原理都一样.所以看了两天SDK,自己封装了几个常用的方法. 一.OSS简单介绍 OSS是提供非结构化数据存取的服务,非结构化数据一般包括图片.文档.音频.视频等一些文件.OSS提供了接口,开发者可以通过这些接口对数据进行上传或下载等操作. 开通OSS服务后,创建一

阿里云SDK手册之java SDK

进行阿里云sdk开发的前提是已经购买阿里云的相关服务才能调用阿里的相关接口进行开发.最近公司在做云管控的项目,于是进行下摘录总结. 一. 环境准备 阿里云针对不同的开发语言提供不同的sdk,由于项目用的是java语言进行开发,所以下载的是java sdk,介绍的也是java sdk的开发方式. 1.首先下载服务的SDK,阿里云Java SDK支持J2SE Development Kit (JDK) 1.5或以上版本. 2.安装步骤 在解压的文件中可以找到 aliyun-sdk-java-onli