返回顶部
首页 > 资讯 > 精选 >如何理解PayPal对Node.js的应用和开发
  • 953
分享到

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

2023-06-10 10:06:18 953人浏览 八月长安
摘要

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

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

从历史上看,我们工程团队的代码已经被分割成浏览器层(使用htmlCSSjavascript )和应用层(使用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的应用和开发”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何理解PayPal对Node.js的应用和开发

本文链接: https://lsjlt.com/news/260169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解PayPal对Node.js的应用和开发
    本篇内容主要讲解“如何理解PayPal对Node.js的应用和开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解PayPal对Node.js的应用和开发”吧!从历史上看,我们工程团队的代...
    99+
    2023-06-10
  • 如何理解Node.js开发的桌面应用TermKit
    这期内容当中小编将会给大家带来有关如何理解Node.js开发的桌面应用TermKit,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。TermKit介绍【下面内容参考自htt...
    99+
    2024-04-02
  • 如何使用NestJS开发Node.js应用
    这篇文章主要介绍如何使用NestJS开发Node.js应用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!NestJS 最早在 2017.1 月立项,2017.5 发布第一个正式版本,...
    99+
    2024-04-02
  • Node.js 和 Sails.js:Web 应用开发的巅峰之作
    Node.js 和 Sails.js 都具有高性能和可扩展性,能够处理高并发的请求。Node.js 基于事件循环机制,可以高效地处理非阻塞 I/O 请求,而 Sails.js 则提供了一系列内置工具,方便开发人员构建可扩展的 Web 应用...
    99+
    2024-02-24
    Node.js, Sails.js, Web 开发, JavaScript, MVC, 高性能, 可扩展性, 易用性
  • 如何使用Node.js开发高效的Web应用程序
    随着互联网的快速发展,面向互联网的应用程序开发成为了众多软件开发领域中的一个重要分支。而Node.js的出现,也使得Web应用程序开发的范式发生了改变。Node.js是一个事件驱动、非阻塞I/O的JavaScript运行环境,这个JavaS...
    99+
    2023-05-14
  • Golang 和 Node.js 在后端开发中的对比
    go 和 node.js 在类型化(强/弱)、并发(goroutine/事件循环)、垃圾收集(自动/手动)上存在差异。go 具备高吞吐量、低延迟,适用于高负载后端;node.js 擅长异...
    99+
    2024-05-12
    node.js golang 后端开发 mysql mongodb
  • 使用PHP和Node.js进行应用协同开发
    随着互联网技术的不断发展,越来越多的应用程序需要协同开发来实现更高效的开发、更强大的功能和更好的用户体验。PHP和Node.js是两种广泛使用的编程语言,它们各有千秋,如何让它们协同开发成为一种热门的话题。在本文中,我们将探讨如何使用PHP...
    99+
    2023-05-23
    PHP Nodejs 协同开发
  • node.js 和HTML5开发本地桌面应用程序
    HTML5让Web开发人员用纯HTML技术开发富客户端互联网应用或者甚至本地桌面应用成为了可能。HTML5可以将任何普通网站转变成Web应用。HTML5 web 应用不仅具有在桌面浏览器应用中的优势,同时在...
    99+
    2022-06-04
    应用程序 桌面 node
  • PHP和NodeJs开发的应用如何共用Session
    首先了解下session的机制 客户端(浏览器中) cookie 作为键值,匹配服务器端的一个数据。然后客户端每次在 HTTP 请求里面带着那个 cookie,然后服务器端“理所当然”认为服务器端的这个数据...
    99+
    2022-06-04
    PHP NodeJs Session
  • 如何理解EBS接口开发的应收款处理
    这期内容当中小编将会给大家带来有关如何理解EBS接口开发的应收款处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。(一)应收款常用标准表简介1.1   ...
    99+
    2024-04-02
  • Node.js 与 Sails.js:解锁快速开发 Web 应用的秘诀
    在当今瞬息万变的数字世界,快速开发 Web 应用已成为企业和组织取得成功不可或缺的关键。Node.js 和 Sails.js 的强强联合,为开发者提供了构建卓越 Web 应用的利器,让其在激烈的市场竞争中脱颖而出。 1. Node.js...
    99+
    2024-02-24
    Node.js Sails.js Web 应用 快速开发 异步编程
  • 如何用Express和AbsurdJS做Node.js 应用
    如何用Express和AbsurdJS做Node.js 应用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。当...
    99+
    2024-04-02
  • 如何应对PHP商城开发中的常见Bug和错误?
    PHP是广泛应用于Web开发的一种编程语言。在商城开发中,开发人员需要面对各种不同的问题和错误。本文将介绍一些PHP商城开发中常见的Bug和错误,并提供一些应对这些问题的技巧。代码语法错误语法错误是PHP开发过程中最常见的问题之一。由于PH...
    99+
    2023-05-14
    PHP 商城开发 Bug 错误
  • Node.js CI/CD 在大规模软件开发中的挑战与机遇:如何应对?
    Node.js 是一个非常流行的 JavaScript 运行时环境,它被广泛用于构建各种类型的应用程序,包括 Web 应用、移动应用和桌面应用。Node.js 的受欢迎程度在很大程度上归功于它的轻量级、高性能和易于扩展。 随着 Node...
    99+
    2024-02-25
    Node.js CI/CD 大规模软件开发 挑战 机遇
  • 如何使用Docker Compose改善Node.js的开发
    这篇文章主要介绍“如何使用Docker Compose改善Node.js的开发”,在日常操作中,相信很多人在如何使用Docker Compose改善Node.js的开发问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2024-04-02
  • 如何使用Redis和Node.js开发实时聊天功能
    如何使用Redis和Node.js开发实时聊天功能随着互联网的发展,实时通信已成为许多网站和应用程序必不可少的功能之一。在众多实时通信的技术中,Redis和Node.js的结合是一种非常强大和流行的选择。Redis是一种高性能的键值存储数据...
    99+
    2023-10-22
    redis nodejs 实时聊天
  • 如何开发Web应用
    这篇文章给大家分享的是有关如何开发Web应用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。静态资源访问在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。默认配置Spring Boot默认提供...
    99+
    2023-06-05
  • GO语言开发技术:如何应对复杂的程序开发?
    GO语言是一种高效、快速、简单并具有强大功能的开发语言,它在近年来被广泛应用于各种程序开发中。在开发复杂程序时,GO语言的高效和简单性可以让开发人员更加容易地处理程序的各种问题。接下来,我们将介绍一些GO语言开发技术,以帮助开发人员更好地...
    99+
    2023-06-28
    学习笔记 教程 开发技术
  • 详解Node.js如何开发命令行工具
    前言 Node 给前端开发带来了很大的改变,促进了前端开发的自动化,我们可以简化开发工作,然后利用各种工具包生成生产环境。如运行sass src/sass/main.scss dist/css/main.c...
    99+
    2022-06-04
    命令行 详解 工具
  • 了解 Node.js 全局对象:解锁开发的无限可能
    全局对象的组成 全局对象是一个特殊的 JavaScript 对象,它包含了 Node.js 运行时环境中可用的所有全局变量、函数和属性。这些全局成员可以分为几类: 核心模块:这是 Node.js 内置的模块,提供对文件系统、网络、加密和...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作