我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解PayPal对Node.js的应用和开发

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解PayPal对Node.js的应用和开发

本篇内容主要讲解“如何理解PayPal对Node.js的应用和开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解PayPal对Node.js的应用和开发”吧!

从历史上看,我们工程团队的代码已经被分割成浏览器层(使用HTML , CSS和JavaScript )和应用层(使用Java ) 。试想一下,一个HTML的开发人员要求一个Java开发人员将“A”和“B”页面连接在一起,但是这就是我们。该模型通过引入全栈工程师,落后那些能够创造一个好的用户界面,然后生成应用程序去支持它。称他们为独角兽,但是这就是我们想要的,在PayPal中,主要阻滞剂是我们在浏览器和服务器之间建立的人工边界。

Node.js 使用javascript,通过建立浏览器和服务端的应用程序帮助我们解决了这个问题。它统一了我们团队,让我们在技术堆栈上了解和应对我们用户的任何需求。

早期使用Node.js

和其他一样,我们把Node.js 作为一个原型的平台。同其他一样,它表现了很好的性能,我们决定在产品上使用它。
最开始的时候,我们使用express作为路由,nconf来作为配置,grunt来建立工作流。我们特别喜欢express框架的普及,却发现它并没有在多个开发团队很好地扩展。express是非强制性的,并允许您在任何方式合适地去设置一个服务器。它非常灵活,但不利于在大型团队中保持一致。随着时间的推移,我们看到的模式脱颖而出,更多的人拿起node.js的转身进入Kraken.js ,它不是一个框架本身,而是基于express的一个层,允许它扩展到更大的组织。我们希望我们的工程师专注于打造自己的应用程序,而不是仅仅着眼于建立自己的环境。
到现在为止,我们在内部使用kraken.js 已经有几个月了(不久,我们将会开源),我们的工程师团队期望将它变成一个实时的公司内部的node.js应用程序。

促使Node.js 到产品上

我们首先在产品上尝试node.js不是一个小的应用程序,它是我们的账目总览页面,这个页面具有很大的流量。我们打算去使用,但是我们也得降低风险,

于是我们同时建立了一个java应用程序。我们知道如何去部署和度量java应用程序,因此如果在node.js 程序出了任何问题,我们能够迅速的切换到java上来。它提供对一些数据的设置。

部署

我们在1月份就开始了,它花费了我们几个月的时间去研究node.js必要的基础东西。比如sessions, centralized logging, keystores。在这段时间内我们有5名工程师在使用java工作。在2个月的java开发后,2名工程师开始使用node.js 并行开发 app。在7月初的时候,他们相互沟通了一下,他们的应用程序具有相同功能。node.js的应用程序,是以一个更小的团队在2个月后开始,但是很快就追上了。有几个细节脱颖而出后,我们运行测试案例,两个应用程序通过相同的功能测试。node.js 是:

1)更少的人去建立,几乎是2倍甚至更快的速度
2)少了33% 的代码
3)建立40%甚至更少的文件

这个提供了一个令人鼓舞的消息表明javascript可以更快的工作。我们都同意并且做了一个决定:将java应用程序搁置了。但是问题是java工程师在项目上,开始的时候对转向node.js并且很高兴的在我们的工作流中提交代码,提高我们双倍的生产力不太自信。

性能

性能是一个高兴而有争议性的话题,在我们的案例中,我们一个团队有2套功能相同的应用程序:一个使用java 基于Spring而另一个基于kraken.js 使用 express, dust.js 和其他的开源代码。这个应用程序包含了3套路由,并且每一套路由2个或者5个请求,数据是通过Dust去渲染页面的。

在我们的测试路由中,我们收集的数据是吞吐量和响应时间
如何理解PayPal对Node.js的应用和开发

你能看到在我们的node.js 应用程序中:

1)与Java应用程序相比较,双倍的每秒请求。更有趣的是,Node.js应用程序是单核,而在Java中五核。我们希望进一步增加这个鸿沟。
2) 35%的跌幅,平均响应时间在同一页。这导致响应200ms的快一些用户肯定会注意到。

对于这个结果我申明一下:我们的框架使用2种不同的应用程序,它仅仅在不同的技术上的是一个对等测试。有可能你的区别更大。也就是说,我们非常激动的看到了node.js表现出的性能。

Kraken:改变PayPal开发文化的Node.js框架
PayPal(全球流行的网上支付服务)公司发布了一款Node.js Web开发框架——Kraken。

Kraken基于Express,Express是目前Node.js上最流行的MVC模式的Web开发框架,通过提供一系列强大特性帮助开发者快速创建各种Web应用。而Kraken在Express的基础上提供了更加稳健的功能合集,支持本地化、环境配置、更加注重应用程序安全等。

为什么会有 Kraken?

之前,PayPal 公司长期存在着“非我所创”的文化,这导致 PayPal 采用新技术的态度很消极,项目开发进度也极其缓慢。正是由于 PayPal 行动缓慢,其他支付服务商 Stripe 和 Square 趁机成长,逐渐撼动 PayPal 的市场地位。同时,PayPal 当时的开发技术也已经无法满足快速开发的需求,因为当时的开发基本全是 Java,不需要用 Java 来实现的也会用 Java 完成。

2012 年 4 月,David Marcuss 成为 PayPal 的总裁,并任命工程师团队在 6 周内完成支付系统的重写,这是一个为 PayPal 带来了 35 亿美元收入的系统。最终,工程师团队用了 8 周时间完成了该项任务,他们选择了 Node.js 对系统进行重新开发。当然,PayPal 的其他大量的子系统还需要整合到 Node.js 系统,所以起初 Node.js 仅作为一个快速开发原型架构。

后来,PayPal 越来越多的新开发项目都逐渐采用 Node.js 和其他开源软件来完成,这就促成了一个可以快速开发 Web 应用的 Kraken.js 项目的诞生。

下面我们对 Kraken 的框架结构和特点进行简单的总结分析,希望能够帮助大家更好地了解 Kraken。

Kraken 框架套件

Kraken 框架套件包括多个部分,Kraken.js 仅是该框架的主体部分。该框架还包括其他模块(可独立使用):

lusca:支持 Express 的应用程序安全模块
makara:支持 Dust.js 的国际化(i18n)模块
Adaro:支持 Express 的一款 Dust.js 视图渲染器
Kappa:NPM 代理插件
除了上述可以独立使用的模块之外,Kraken 套件还包括了一系列的依赖和实用工具:

Generator-kraken:Yeoman 生成器
Enrouten:用于 Express 的路由(route)配置中间件(初始化与配置模块)
Kraken-devtools:Kraken 应用程序开发所需的工具合集


Kraken的特点

通过前面的介绍,我们已经基本了解了 Kraken 究竟是怎么一回事儿,那 Kraken 到底具有哪些吸引开发者的特点呢?

项目结构清晰

Kraken 将生成的项目的配置、内容和模板、路由逻辑(routing logic)放在了不同的位置,方便开发者对文件进行组织和管理。下面,我们详细了解下 Kraken 所创建项目的基本结构:

/config,存放应用程序和中间件配置
/controllers,控制器
/lib,存放开发者自定义的库文件和其他代码
/locales,特定语言内容
/models,模型
/public,公共的网络资源
/public/templates,服务器和浏览器端模板
/test,存放单元和功能测试用例等
index.js,应用程序入口文件
随着项目的不断成长,这种组织方式和策略对开发者来说会更加友好。

良好平衡开发环境与生产环境

Kraken 的配置文件为 /config/app.json,它会在运行时加载文件中包含的键值对。全部的应用程序配置均存放在这一个文件中,大大方便了开发者。/config/middleware.json 则是自定义的中间件配置文件。

说起开发环境与生产环境,二者通常在端口号、主机名等方面的参数设置会有不同,Kraken 允许创建开发模式下使用的配置文件,如 /config/app.json 为生产环境下的配置,/config/app-development.json 则是开发环境下的配置,然后可以通过自定义环境变量(定义环境变量 NODE_ENV 为 production 或 development)来控制要加载哪个配置文件。如此一来,可以方便开发者在生产环境和开发环境进行快速切换!

注重安全

通过Lusca模块来为安全保驾护航,并遵循OWASP安全原则,同时也默认为全部调用启用了几个请求/响应头文件:

跨站请求伪造(CSRF)标头
内容安全策略(CPS)标头
隐私优先项目平台(P3P)标头
X-FRAME-OPTIONS 防止点击劫持
4. 其他

同时,它还有下面几个特点:

路由(route)与逻辑(logic)分离:方便程序运行失败时快速锁定问题。
模板(template)共用:Kraken 选用 Dust 作为模板语言,同时在服务器端和客户端使用了同一个模板,如此一来,就可以做到代码复用。
支持本地化: Kraken 可以在运行时基于请求上下文来加载内容包(content bundle),所以在模板渲染之前就可以通过添加上下文来给用户提供相应的本地语言支持,大大增强了应用的友好性。
示例与文档

关于 Kraken,官方给出了下面两个示例,可以帮助大家学习和了解:

例一:本地化与国际化:给 Web 应用增加多语言支持,让各地用户能够用当地语言来使用 Web 应用
例二:部署中间件:创建一个网页计数器,为大家解释在应用生命周期中如何部署中间件
开源项目

Kraken 是一款开源项目(分发协议为Apache License v2.0),大家都可以对该项目进行 Fork 和提交修改。它也提供了一份简洁的使用文档。项目源码和文档均可在Github页面进行查看。

最后

任何一个项目的诞生都有其产生的背景,也必然有相应的需求驱动。正如 Kraken,正是由于 PayPal 为了满足其快速开发 Web 应用的强烈需求,才选择了 Node.js,才有了这个项目。

同时,我们也需要注意工程师团队中存在的“非我所创”文化,对于新技术要采取积极的态度,不能一成不变,否则将给企业发展带来阻碍。

到此,相信大家对“如何理解PayPal对Node.js的应用和开发”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解PayPal对Node.js的应用和开发

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何理解PayPal对Node.js的应用和开发

本篇内容主要讲解“如何理解PayPal对Node.js的应用和开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解PayPal对Node.js的应用和开发”吧!从历史上看,我们工程团队的代
2023-06-10

Node.js 和 Sails.js:Web 应用开发的巅峰之作

Node.js 和 Sails.js 作为备受欢迎的 Web 开发技术,使开发人员能够高效地构建 web 应用程序。Node.js 基于 JavaScript 的运行时环境,而 Sails.js 是一个建立于 Node.js 之上的开源 JavaScript MVC 框架。它们结合使用,为开发人员提供了广泛的功能和特性,简化了 Web 应用程序的开发过程。
Node.js 和 Sails.js:Web 应用开发的巅峰之作
2024-02-24

如何使用Node.js开发高效的Web应用程序

随着互联网的快速发展,面向互联网的应用程序开发成为了众多软件开发领域中的一个重要分支。而Node.js的出现,也使得Web应用程序开发的范式发生了改变。Node.js是一个事件驱动、非阻塞I/O的JavaScript运行环境,这个JavaScript运行环境并不是运行在浏览器中,而是运行在服务器端。基于Node.js,开发者们可以借助其轻量的架构,使用JavaScript编写高
2023-05-14

PHP和NodeJs开发的应用如何共用Session

首先了解下session的机制 客户端(浏览器中) cookie 作为键值,匹配服务器端的一个数据。然后客户端每次在 HTTP 请求里面带着那个 cookie,然后服务器端“理所当然”认为服务器端的这个数据是针对该客户端的。 某些系统喜欢把
2022-06-04

Node.js 与 Sails.js:解锁快速开发 Web 应用的秘诀

Node.js 和 Sails.js 携手共进,为快速开发 Web 应用提供了一条通畅大道。Node.js 的高效异步编程特性与 Sails.js 的开箱即用功能相辅相成,让开发者能够轻松创建健壮、可扩展的 Web 应用。
Node.js 与 Sails.js:解锁快速开发 Web 应用的秘诀
2024-02-24

Node.js CI/CD 在大规模软件开发中的挑战与机遇:如何应对?

在本文中,我们将探讨 Node.js CI/CD 在大规模软件开发中的挑战以及应对这些挑战的机遇。我们将重点关注实现 CI/CD 管道的最佳实践,以及如何通过自动化和监控来提高软件的质量和可靠性。
Node.js CI/CD 在大规模软件开发中的挑战与机遇:如何应对?
2024-02-25

如何使用Redis和Node.js开发实时聊天功能

如何使用Redis和Node.js开发实时聊天功能随着互联网的发展,实时通信已成为许多网站和应用程序必不可少的功能之一。在众多实时通信的技术中,Redis和Node.js的结合是一种非常强大和流行的选择。Redis是一种高性能的键值存储数据
2023-10-22

如何应对报表开发中的复杂逻辑

报表开发中经常遇到非常复杂的数据处理逻辑,实现时要写很多层嵌套的 SQL,实现困难且难以维护;使用 JAVA 硬编码是另外一种选择,JAVA 具备良好的分步支持,但缺乏通用的结构化计算类库,使得硬编码难度也不低;此外借助 JAVA 实现的报
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录