`
tgxz2000
  • 浏览: 31670 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
最近访客 更多访客>>
社区版块
存档分类
最新评论

看eBay如何评价他们的Node.js首次尝鲜

阅读更多

据eBay官方技术博客介绍,一直以来他们依赖的都是基于Java的技术,所有的工作流都围绕着Java和JVM。考虑到ebay.com这样的流量规模和稳定性要求,使用Java这样可靠的技术明显是合适的选择。在这篇文章中,作者介绍了eBay为何以及如何开发了他们第一个Node.js应用。以下为CSDN编译。

扩展性

这一切起源于eBay Hackathon冠军项目产品化的想法,但是我们发现Java并不适合该项目(并无恶意),于是开始了Node.js世界的探索之路。

关于这个项目我们有两项基本要求:第一,尽可能地实时响应——比如维持与服务器端的实时连接;第二,能够集成eBay数量众多的独有服务,在页面上显示信息——比如绑定I/O相关操作。我们起初使用的是基础Java结构,但是它对资源的消耗大大出乎我们的预期,在产品化时遇到了扩展性问题。这促使我们决心构建一个新的 orchestrator中间件,而Node.js最符合我们的需求。

心态

eBay一直以来都围绕Java这样的强类型静态语言开发解决方案,所以一开始很难说服大家使用JavaScript做后端开发。类型安全保障、错误处理、扩展等等方向的问题都困扰着我们。此外JavaScript本身(被称为 世界上误解最多的语言)也让这场辩论变得更加艰难。为此,我们建立了一个专门的内部wiki来聚合工程师们对于Node.js的观点、疑惑、问题等等。

几天后我们明确了大家的问题,开始着手解答。不出所料,关注最多的还是在于Node.js技术的可靠性,以及Node.js在处理早期eBay独有的函数式Java实现的效率上。

我们一一解答了这些问题,并且提供了详细现实案例。这一过程让大家,包括我们自己在内都深受启发,有的问题提出的角度是甚至我们从未想过的,最终大家终于理解了Node.js的核心价值。事实上,其中一些反对观点恰恰是其特色之处。

启动

项目从零开始,我们的目标是建立一个最小化的 boilerplateNode.js服务器,但是必须拥有足够的可扩展性;此外我们并不想引入现有的框架,因为这会使应用变得臃肿。随后我们依次引入了4个Node模块——express、cluster、request以及async。数据持久性方面,我们决定采用和eBay一样MongoDB,这就不会增加使用的难度。通过这些基本设置,项目服务已经可以运行了。服务器能够接收请求、调用eBay API,并持久化一些数据。

对于端到端的测试,我们将前端服务器指向Node.js服务器,一切看起来都不错。但接下来才是更严峻的挑战,我们开始使用白板描述所有用例、敲定REST结束点、设计数据模型和结果、确定最合适的Node模块,最后实现每个端点。在接下来的几周里,我们一直在编码、编码、编码……

部署

在应用开发趋于稳定后,就是时候离开开发环境、登台运行了。我们开始研究Node.js部署问题,目标很简单:自动化过程、一次构建随时部署。这正是我们对Java构建流程的要求,我们希望两者能够尽可能无缝地对接,并保持简单。

得益于基于云的部署系统,我们所需要做的仅仅是编写shell脚本,然后在 Hudson CI job上运行。无论何时有新代码签入主分支,Hudson CI job都会自动处理——通过shell脚本构建并打包Node.js bundle,最后将其推送到云端。云服务提供了简单的用户界面,可以选择环境(QA、演示或者前期制作),并且在相应的机器上运行该应用。

现在,我们已经在不同的稳定环境中运行了Node.js服务,整个部署过程比我们想象中简单、快速得多。

监控

在eBay,我们有集成在Java线程模型以及JVM层的日志记录API,在日志数据之上还有非常优秀的监控仪表盘,能够生成报告,并且能够在出错时实时地发布警报。我们也通过hook中心日志系统,为Node.js实现了类似的监控模块,并且实现了3个不同的日志记录API:

代码级日志记录。
机器级日志记录
负载平衡级日志记录。

此外,特别需要确保日志数据格式与既有Java应用完全相同,这样就可以使用相同的仪表盘,并且通过每个人都熟悉的方式接收报告。

其中最大的挑战在于Node.js事件循环的异步特性,这会导致处理的日志完全交叉。如何解决这一问题呢?首先试想一下下面的用例:Node进程从URL请求开始,通过异步回调返回了一个DB请求。该进程会在DB事务结束前和下一个请求并行。这对于Node.js这样的事件循环模型来说是一个非常常见的场景,多个URL请求的日志会因此交叉,因此日志报告会非常难以理解。最终我们分别为该问题制定了短期和长期的解决方案。

结论

在上面的工作结束后,我们Hackathon项目已经可以上线了,它也是eBay第一个使用Node.js作为后端的应用。目前该项目已经在内部试运行了,并且在性能方面得到了积极的反馈。激动人心的时刻就在前方!

得益于第一个Node.js后端应用的成功,eBay平台团队已经在着手开发一个运行在Node.js之上的成熟前端,它将能大大提升我们非前端特定功能的开发效率。对于前端工程师来说,梦想即将成真,我们可以自豪地宣告:“JavaScript无处不在!”

转载请注明: 转载自万俟飞的博客

本文链接地址: 看eBay如何评价他们的Node.js首次尝鲜

分享到:
评论

相关推荐

    nodejs-ebay-api, 用于 node.js的[No longer maintained] eBay API客户端.zip

    nodejs-ebay-api, 用于 node.js的[No longer maintained] eBay API客户端 Node.js 客户端 我不再维护这个 MODULE 了。 如果有人有一个活动的fork,并且感兴趣的话,请告诉我,我将转移,项目。 介绍这个 MODULE 目的...

    10个成功使用Node.js的公司1

    Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行时环境,它使得开发者可以在服务器端使用 JavaScript,实现全栈开发。Node.js 的主要特点是轻量、高效、可扩展性强,尤其适合构建实时交互的 web 应用,如协作...

    Node.js成为Web应用开发最佳选择的原因

    其他大公司如eBay、Netflix、TheMailOnline和Walmart等,也纷纷采用Node.js来优化他们的Web应用开发过程和提升用户体验。 Node.js之所以成为Web应用开发的热门选择,还因为它拥有活跃的社区和丰富的模块生态系统。...

    OnlineAuctionWebApp:一个类似于 Ebay 的在线拍卖 Web 应用程序,使用 Express 和 Node.js,带有 MySQL 和 Redis 后端

    本项目"OnlineAuctionWebApp"正是这样一个模拟Ebay的在线拍卖平台,它利用了Express框架和Node.js的强大功能,构建出高效、动态的Web应用程序。本文将深入探讨其核心技术和实现细节。 首先,我们来看看Node.js。...

    eBay帮助文档(eBay_SDK_v581.0 for_Java ebay_api)

    《eBay SDK v581.0 for Java:探索eBay API的核心技术与应用》 eBay SDK(Software Development Kit)v581.0 for Java是针对Java开发者设计的一套工具包,它允许开发人员能够轻松地与eBay平台进行交互,实现各种...

    ebay-node-api:节点的eBay API客户端

    易趣API Node.js 用于节点js的Ebay API客户端。 目的是通过处理繁琐的逻辑来简化请求过程。 这是围绕eBay Api的薄包装。 文档: : :ledger: 目录安装npm install ebay-node-api 用法let eBay = require ( "ebay-node...

    cluster2:一个兼容node.js(> = 0.8.x)的多进程管理模块

    这个模块是出于我们在eBay上为运行node.js的需求而的。 cluster2建立在节点的cluster ,添加了一些保护措施和实用程序功能来帮助支持实际的生产场景: 可编写脚本的启动,关闭和停止流程 工人监控过程死亡 工人...

    Web.APIs.with.PHP.eBay.Google.Paypal.Amazon.FedEx.plus.Web.Feeds

    Web.APIs.with.PHP.eBay.Google.Paypal.Amazon.FedEx.plus.Web.Feeds

    ebay的python爬虫.zip

    尤其当涉及到如eBay这样的大型电子商务平台时,Python爬虫的应用可以极大地帮助企业和研究者收集和分析海量的商品信息、价格动态、用户评价等数据,从而为市场分析、竞争情报、自动化购物等提供数据支持。...

    电商行业观察之-美国电商巨头eBay兴衰之路.pdf

    eBay作为美国电商行业的巨头,自成立以来在电商业的发展史中占据了举足轻重的地位。在分析eBay的兴衰之路时,我们可以从中提炼出以下知识点: 1. C2C交易模式的开创:eBay是C2C(Consumer-to-Consumer,消费者对...

    eBay菜鸟入门培训.pptx

    【eBay菜鸟入门培训】 eBay是一个全球知名的电子商务平台,主要提供在线拍卖和购物服务。对于初入eBay的新手,以下是一些重要的基础知识和步骤,帮助你顺利开始你的外贸之旅。 1. **售前准备** - **合法性**:...

    ebay卖家认证教程.docx

    在电子商务的世界里,eBay作为一个全球知名的在线拍卖和购物网站,为个人和企业提供了广泛的交易机会。特别是近年来,跨境交易的繁荣使得更多卖家选择在eBay上开展业务。为了保障交易的安全性和合法性,eBay实行了...

    ebay ppt.rar

    【标题】"eBay平台分析与运营策略" 在IT行业中,eBay是一个全球知名的电子商务平台,它为全球卖家和买家提供了在线交易的便利。这份名为"eBay ppt.rar"的压缩包文件,很可能是关于eBay平台的业务分析、运营策略或是...

    Ebay平台客服细节.pdf

    根据提供的文件信息,我们可以从中提炼出关于Ebay平台客服细节的相关知识点。由于文件内容包含了多个与客户沟通的实例,我们可以归纳总结如下: 1. 客户沟通方式:Ebay平台鼓励客户有任何疑问时,可以随时通过邮件...

Global site tag (gtag.js) - Google Analytics