站三界导航
首页 建站经验
  • 简要了解Hadoop集群技术与Spark集群技术的对比
    简要了解Hadoop集群技术与Spark集群技术的对比

    Hadoop:分布式批处理计算,强调批处理,常用于数据挖掘、分析。Spark:是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速,Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集。尽管创建Spark是为了支持分布式数据集上的迭代作业,但是实际上它是对Hadoop的补充,可以在Hadoop文件系统中并行运行。通过名为Mesos的第三方集群框架可以支持此行为。Spark由加州大学伯克利分校AMP实验室(Algorithms,Machines,andPeopleLab)开发,可用来构建大型的、低延迟的数据分析应用程序。虽然Spark与Hadoop有相似之处,但它提供了具有有用差异的一个新的集群计算框架。首先,Spark是为集群计算中的特定类型的工作负载而设计,即那些在并行操作之间重用工作数据集(比如机器学习算法)的工作负载。为了优化这些类型的工作负载,Spark引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟.在大数据处理方面相信大家对hadoop已经耳熟能详,基于GoogleMap/Reduce来实现的Hadoop为开发者提供了map、reduce原语,使并行批处理程序变得非常地简单和优美。Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map,filter,flatMap,sample,groupByKey,reduceByKey,union,join,cogroup,mapValues,sort,partionBy等多种操作类型,他们把这些操作称为Transformations。同时还提供Count,collect,reduce,lookup,save等多种actions。这些多种多样的数据集操作类型,给上层应用者提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的DataShuffle一种模式。用户可以命名,物化,控制中间结果的分区等。可以说编程模型比Hadoop更灵活.Hadoop和Spark均是大数据框架,都提供了一些执行常见大数据任务的工具。但确切地说,它们所执行的任务并不相同,彼此也并不排斥。虽然在特定的情况下,Spark据称要比Hadoop快100倍,但它本身没有一个分布式存储系统。而分布式存储是如今许多大数据项目的基础。它可以将PB级的数据集存储在几乎无限数量的普通计算机的硬盘上,并提供了良好的可扩展性,只需要随着数据集的增大增加硬盘。因此,Spark需要一个第三方的分布式存储。也正是因为这个原因,许多大数据项目都将Spark安装在Hadoop之上。这样,Spark的高级分析应用程序就可以使用存储在HDFS中的数据了。与Hadoop相比,Spark真正的优势在于速度。Spark的大部分操作都是在内存中,而Hadoop的MapReduce系统会在每次操作之后将所有数据写回到物理存储介质上。这是为了确保在出现问题时能够完全恢复,但Spark的弹性分布式数据存储也能实现这一点。另外,在高级数据处理(如实时流处理和机器学习)方面,Spark的功能要胜过Hadoop。在Bernard看来,这一点连同其速度优势是Spark越来越受欢迎的真正原因。实时处理意味着可以在数据捕获的瞬间将其提交给分析型应用程序,并立即获得反馈。在各种各样的大数据应用程序中,这种处理的用途越来越多,比如,零售商使用的推荐引擎、制造业中的工业机械性能监控。Spark平台的速度和流数据处理能力也非常适合机器学习算法。这类算法可以自我学习和改进,直到找到问题的理想解决方案。这种技术是最先进制造系统(如预测零件何时损坏)和无人驾驶汽车的核心。Spark有自己的机器学习库MLib,而Hadoop系统则需要借助第三方机器学习库,如ApacheMahout。实际上,虽然Spark和Hadoop存在一些功能上的重叠,但它们都不是商业产品,并不存在真正的竞争关系,而通过为这类免费系统提供技术支持赢利的公司往往同时提供两种服务。例如,Cloudera就既提供Spark服务也提供Hadoop服务,并会根据客户的需要提供最合适的建议。

    • 建站经验
    • 87阅读
    • 2022-04-28

  • CDN缓存是什么意思 解析CDN加速的那些事
    CDN缓存是什么意思 解析CDN加速的那些事

    CDN是一项和加速网站访问速度和用户下载资源速度的服务,那么,CDN缓存是什么意思?有什么优点和缺点?对此,本文就来告诉大家CDN加速的那些事,有兴趣的伙伴们记得了解下。CDN是什么?关于CDN是什么,此前站三界导航已经为大家详细介绍过,如果还有不了解的伙伴们可以重新了解下。简单的说,CDN是ContentDeliveryNetwork的简称,即“内容分发网络”的意思。一般我们所说的CDN加速,一般是指网站加速或者用户下载资源加速。可能这种专业的说,很多朋友不好理解,下面给大家分享一个小编记忆深刻的例子。举个通俗的例子:谈到CDN的作用,可以用8年买火车票的经历来形象比喻:8年前,还没有火车票代售点一说,12306.cn更是无从说起。那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火车,火车票都要去市里的火车站购买,而从县城到市里,来回就是4个小时车程,简直就是浪费生命。后来就好了,小县城里出现了火车票代售点,可以直接在代售点购买火车,方便了不少,全市人民再也不用在一个点苦逼的排队买票了。CDN就可以理解为分布在每个县城的火车票代售点,用户在浏览网站的时候,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求,这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的服务器(假设源站部署在北京电信机房)上了。CDN的优势很明显:(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。CDN缓存是什么? 这里不深究CDN背后高大上的架构,也不讨论CDN如何做到全局流量调度策略,本文着重讨论在有了CDN后,数据是如何被缓存的。缓存是一个到处都存在的用空间换时间的例子。通过使用多余的空间,我们能够获取更快的速度。相关技巧:【怎么看网站有没开启CDN测试网站全国访问速度方法】。首先,看看没有网站没有接入CDN时,用户浏览器与服务器是如何交互的:用户在浏览网站的时候,浏览器能够在本地保存网站中的图片或者其他文件的副本,这样用户再次访问该网站的时候,浏览器就不用再下载全部的文件,减少了下载量意味着提高了页面加载的速度。如果中间加上一层CDN,那么用户浏览器与服务器的交互如下:客户端浏览器先检查是否有本地缓存是否过期,如果过期,则向CDN边缘节点发起请求,CDN边缘节点会检测用户请求数据的缓存是否过期,如果没有过期,则直接响应用户请求,此时一个完成http请求结束;如果数据已经过期,那么CDN还需要向源站发出回源请求(backtothesourcerequest),来拉取最新的数据。CDN的典型拓扑图如下:可以看到,在存在CDN的场景下,数据经历了客户端(浏览器)缓存和CDN边缘节点缓存两个阶段,下面分别对这两个阶段的缓存进行详细的剖析客户端(浏览器)缓存1)客户端缓存的缺点 客户端缓存减少了的服务器请求,避免了文件重复加载,显著地提升了用户地方。但是当网站发生了更新的时候(如替换了css、js以及图片文件),浏览器本地仍保存着旧版本的文件,从而导致无法预料后果。曾几何时,一个页面加载出来,页面各元素位置乱飘,按钮点击失效,前端GG都会习惯性地问一句:“缓存清了没?”,然后Ctrl+F5   ,EverythingisOK。但有些时候,如果我们是简单地在浏览器地址栏中敲一个回车,或者是仅仅按F5刷新,问题依然没有解决,你可知道这三种不同的操作方式,决定浏览器不同的刷新缓存策略?浏览器如何来确定使用本地文件还是使用服务器上的新文件?下面来介绍几种判断的方法。浏览器缓存策略Expires Expires:Sat,24Jan201520:30:54GMT如果http响应报文中设置了Expires,在Expires过期之前,我们就避免了和服务器之间的连接。此时,浏览器无需想浏览器发出请求,只需要自己判断手中的材料是否过期就可以了,完全不需要增加服务器的负担。Cache-control:max-ageExpires的方法很好,但是我们每次都得算一个精确的时间。max-age标签可以让我们更加容易的处理过期时间。我们只需要说,这份资料你只能用一个星期就可以了。Max-age使用秒来计量,如:Cache-Control:max-age=645672指定页面645672秒(7.47天)后过期。Last-Modified服务器为了通知浏览器当前文件的版本,会发送一个上次修改时间的标签,例如:Last-Modified:Tue,06Jan201508:26:32GMT这样浏览器就知道他收到的这个文件创建时间,在后续的请求中,浏览器会按照下面的规则进行验证:1. 浏览器:Hey,我需要jquery.min.js这个文件,如果是在Tue,06Jan201508:26:32GMT之后修改过的,请发给我。2. 服务器:(检查文件的修改时间)3. 服务器:Hey,这个文件在那个时间之后没有被修改过,你已经有最新的版本了。4. 浏览器:太好了,那我就显示给用户了。在这种情况下,服务器仅仅返回了一个304的响应头,减少了响应的数据量,提高了响应的速度。下图是按F5刷新页面后,页面返回304响应头。ETag 通常情况下,通过修改时间来比较文件是可行的。但是在一些特殊情况,例如服务器的时钟发生了错误,服务器时钟进行修改,夏时制DST到来后服务器时间没有及时更新,这些都会引起通过修改时间比较文件版本的问题。ETag可以用来解决这种问题。ETag是一个文件的唯一标志符。就像一个哈希或者指纹,每个文件都有一个单独的标志,只要这个文件发生了改变,这个标志就会发生变化。服务器返回ETag标签:ETag:"39001d-1762a-50bf790757e00"接下来的访问顺序如下所示:1.浏览器:Hey,我需要jquery.min.js这个文件,有没有不匹配"39001d-1762a-50bf790757e00"这个串的2.服务器:(检查ETag…)3.服务器:Hey,我这里的版本也是"39001d-1762a-50bf790757e00",你已经是最新的版本了4.浏览器:好,那就可以使用本地缓存了如同Last-modified一样,ETag解决了文件版本比较的问题。只不过ETag的级别比Last-Modified高一些。额外的标签缓存标签永远不会停止工作,但是有时候我们需要对已经缓存的内容进行一些控制。Cache-control:public表示缓存的版本可以被代理服务器或者其他中间服务器识别。Cache-control:private意味着这个文件对不同的用户是不同的。只有用户自己的浏览器能够进行缓存,公共的代理服务器不允许缓存。Cache-control:no-cache意味着文件的内容不应当被缓存。这在搜索或者翻页结果中非常有用,因为同样的URL,对应的内容会发生变化。浏览器缓存刷新 1. 在地址栏中输入网址后按回车或点击转到按钮浏览器以最少的请求来获取网页的数据,浏览器会对所有没有过期的内容直接使用本地缓存,从而减少了对浏览器的请求。所以,Expires,max-age标记只对这种方式有效。2. 按F5或浏览器刷新按钮浏览器会在请求中附加必要的缓存协商,但不允许浏览器直接使用本地缓存,它能够让Last-Modified、ETag发挥效果,但是对Expires无效。3. 按Ctrl+F5或按Ctrl并点击刷新按钮这种方式就是强制刷新,总会发起一个全新的请求,不使用任何缓存。CDN缓存 浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。CDN缓存的缺点 CDN的分流作用不仅减少了用户的访问延时,也减少的源站的负载。但其缺点也很明显:当网站更新时,如果CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl+F5的方式使浏览器端的缓存失效,也会因为CDN边缘节点没有同步最新数据而导致用户访问异常。CDN缓存策略 CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的Cache-control:max-age的字段来设置CDN边缘节点数据缓存时间。当客户端向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,从源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端。CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。CDN缓存时间会对“回源率”产生直接的影响。若CDN缓存时间较短,CDN边缘节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大的访问延时;若CDN缓存时间太长,会带来数据更新时间慢的问题。开发者需要增对特定的业务,来做特定的数据缓存时间管理。CDN缓存刷新CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发者可以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。这样开发者在更新数据后,可以使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,保证客户端在访问时,拉取到最新的数据。

    • 建站经验
    • 97阅读
    • 2022-04-28

  • 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解
    怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解

    在前不久的一篇“CDN是什么CDN加速有什么用?”一文中我们提到CDN加速在网络中无处不在,一般稍好一些的网站都会开启CDN来提升用户访问速度,相信很多站长们都想知道怎么看网站有没开启CDN服务,当然电脑爱好者朋友,也可以涨知识了解一下,下面站三界导航小编就为大家介绍查看网站有没有开启CDN加速的方法。怎么看网站有没开启CDN?要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南pingwww.zhansanjie.com得到的IP地址是111.161.66.167,但在江苏地区pingwww.zhansanjie.com得到的IP确是61.147.92.111,像这样在不同地区ping同一个网址,得到不同的IP地址,那么这种情况就可以判断该网站开了CDN加速。如果网站没有开启CDN,不同地区Ping网址是网站服务器的真实地址,如果开启了CDN加速,网站内容会缓存到各地区离你最近的服务器,所以访问IP会发生变化,根据这个原理,就很容易判断网站是否开启了CDN了。可能大家会说,我一台电脑如何ping多个地区呢?如果不怕麻烦,可以让不同地区的QQ好友帮您ping测试一下,然后告诉你IP,然后告诉你结果,这是最笨的方法。测试网站全国访问速度方法下面主要教大家如何借助在线工具测试网站是否开启CDN,并且可以测试出全国不同地区,访问该网站的速度与访问IP地址。这里为大家推荐2个在线测试网站全国访问速度工具,通过这些工具,不仅可以轻松查出网站是否开启CDN,还可以测试全国不同地区的房访问速度。推荐网站测试工具一:齐云测奇云测是一个非常好用的网站在线测速工具,可以轻松测试你的网站速度。首先在电脑中打开浏览器,然后打开齐云测在线测速(网址:ce.cloud.360.cn),打开后,输入需要测速的网址,如站三界导航(www.zhansanjie.com),然后点击后面的“测一下”,如下图所示。等待一会就可以看到结果了,如果一个网站通过测试,不同归属地有多个解析IP,则说明该网站开启了CDN加速,并且最终还可以看到全国不同地区的访问速度,如下图所示。推荐网站测试工具二:站长工具Ping站长工具可以进行多个地点Ping服务器,从而进行网站测速。打开站长工具Ping在线测试网址:ping.chinaz.com,然后同样输入网址进行测试即可,如下图所示。如果测试一个网址不同地区是不同的解析IP,那么说明这个网站开启了CDN加速,并且可以看到不同地区打开所花费的时间,这里也可以看出速度。测试网站速度方法还有很多,以上2种方法都可以轻松的判断出某个网站是否开启了CDN加速,并且可以测试全国不同地区的速度。尽管普通用户并不关心网站测速,但如果有时候遇到某个网站打不开,但其他地区可以打开,可以试试上面的方法查看出是不是你所在地区访问速度过慢导致的。以上就是站三界导航小编为大家带来的看网站是否开启CDN加速服务的方法,希望可以帮助到大家,大家如果还有疑问的话,可以在下方的评论框内给我们留言哦。我们会尽自己所能的为大家解答。谢谢大家一如既往的支持,也请大家继续关注站三界导航的后续教程和软件。

    • 建站经验
    • 83阅读
    • 2022-04-28

  • CDN是什么意思 CDN加速服务有什么功能和作用?
    CDN是什么意思 CDN加速服务有什么功能和作用?

    CDN一词相信很多朋友都不会陌生,网上也经常会看到相关报道。前段时间各大CDN服务商响应总理号召,CDN也都提速降费,像网宿CDN,阿里云CDN都有不小的降价幅度,很多站长都知道CDN加速可以加速网站的打开速度及用户下载资源的速度,而同时也有不少小白朋友还不清楚CDN是什么?有什么用?它是如何实现加速的呢?接下来站三界导航小编将通俗易懂的告诉大家。CDN是什么?CDN是ContentDeliveryNetwork的简称,即“内容分发网络”的意思。一般我们所说的CDN加速,一般是指网站加速或者用户下载资源加速。CDN基本思路就是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。CDN核心目的就是使用户可就近访问网络,取得所需内容,解决网络拥挤的状况,明显提高用户访问网站的响应速度或者用户下载速度。从上面专业的角度来讲,可能很多小白朋友还不知道CDN是什么意思,下面小编通俗易懂的再介绍一下。CDN简单来说,就是加速,当一个网站开启了CDN加速,其给用户的感觉是访问网站速度或者下载东西的速度会明显比没有开启加速更快,变快或者下载东西变快了。为什么网站开启CDN用户访问会更快呢?因为CDN将源站内容分发至全国所有的节点,缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性,解决网络带宽小、用户访问量大、网点分布不均等问题。简单来说,当网站开启CDN,用户访问该网站,并非直接访问该网站的原服务器,而是一个服务器分发的离你最近的一个服务器节点,由于服务器离你近了,所以访问速度或者下载速度会更快。大家还记得此前站三界导航介绍过的如何设置DNS吗?里面也提到DNS服务器地址一定要填写离你最近的一个地方的IP,这也就是就近原则,其实很好理解,比如国内访问国外网站为什么慢?最主要的原因就是距离太远,CDN的使命就是将网站内容存放在遍布全国乃至全球的CDN节点上,用户访问该网站,就可以就近获取CDN上缓存的内容,从而提升访问速度。CDN加速有什么用?——对访客用户的好处对于用户来说,如果一个网站开启了CDN,用户访问速度或者下载速度会比没有开启时更快。一般目前只要好一些的网站,都会开启CDN功能,主要在于提升用户体验。——对网站的好处对于网站或者站长来自,开启了CDN不仅可以提升网站打开速度,提升用户体验。更重要的是开启CDN可以减少黑客工具和服务器宽带压力。开启CDN后的网站,不同地区用户访问会是不同的服务器,而网站的真实服务器(源服务器)一般只有CDN节点回去访问获取,全国各地的用户访问的CDN节点服务器,并不直接访问源服务器,这样就可以介绍网站服务器宽带资源,降低服务器压力。另外,由于有CDN节点中间阻挡防护,可以更好的保护原服务器的安全。也就是说CDN为用户源站服务器在安全云中提供了一个替身,无论是渗透还是DDoS攻击,攻击的目标都将是CDN节点替身,进而保护了网站源站。如何看一个网站有没有开启CDN加速呢?这个很简单,只要使用测试工具测试该站点全国访问速度,如果不同地区访问的IP地址不同,则说明该站点开启了CDN加速。比如站三界导航(www.zhansanjie.com)很早就开启了CDN加速,大家可以使用“齐云测”工具在线测试,测试之后可以看到不同地区用户访问站三界导航,访问的IP都不一样,如下图所示。关于CDN是什么意思,到底有什么作用就为大家分享到这里,其实不仅是网站或者说站长,我们每个上网用户其实只要在上网就在体验CDN加速,CDN在网络中可谓无处不在,因为各大知名网站基本都开启了CDN,此外大家使用迅雷加速下载东西,这里的加速也是基于CDN技术。以上就是站三界导航小编为大家带来的CDN加速服务的功能和作用,希望可以帮助到大家,大家如果还有疑问的话,可以在下方的评论框内给我们留言哦。我们会尽自己所能的为大家解答。谢谢大家一如既往的支持,也请大家继续关注站三界导航的后续教程和软件。

    • 建站经验
    • 75阅读
    • 2022-04-28

  • 深入分析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,centralizedlogging,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去渲染页面的。在我们的测试路由中,我们收集的数据是吞吐量和响应时间你能看到在我们的node.js应用程序中:1)与Java应用程序相比较,双倍的每秒请求。更有趣的是,Node.js应用程序是单核,而在Java中五核。我们希望进一步增加这个鸿沟。2)35%的跌幅,平均响应时间在同一页。这导致响应200ms的快一些用户肯定会注意到。对于这个结果我申明一下:我们的框架使用2种不同的应用程序,它仅仅在不同的技术上的是一个对等测试。有可能你的区别更大。也就是说,我们非常激动的看到了node.js表现出的性能。Kraken:改变PayPal开发文化的Node.js框架PayPal(全球流行的网上支付服务)公司发布了一款Node.jsWeb开发框架——Kraken。Kraken基于Express,Express是目前Node.js上最流行的MVC模式的Web开发框架,通过提供一系列强大特性帮助开发者快速创建各种Web应用。而Kraken在Express的基础上提供了更加稳健的功能合集,支持本地化、环境配置、更加注重应用程序安全等。为什么会有Kraken?之前,PayPal公司长期存在着“非我所创”的文化,这导致PayPal采用新技术的态度很消极,项目开发进度也极其缓慢。正是由于PayPal行动缓慢,其他支付服务商Stripe和Square趁机成长,逐渐撼动PayPal的市场地位。同时,PayPal当时的开发技术也已经无法满足快速开发的需求,因为当时的开发基本全是Java,不需要用Java来实现的也会用Java完成。2012年4月,DavidMarcuss成为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到底具有哪些吸引开发者的特点呢?1.项目结构清晰Kraken将生成的项目的配置、内容和模板、路由逻辑(routinglogic)放在了不同的位置,方便开发者对文件进行组织和管理。下面,我们详细了解下Kraken所创建项目的基本结构:/config,存放应用程序和中间件配置/controllers,控制器/lib,存放开发者自定义的库文件和其他代码/locales,特定语言内容/models,模型/public,公共的网络资源/public/templates,服务器和浏览器端模板/test,存放单元和功能测试用例等index.js,应用程序入口文件随着项目的不断成长,这种组织方式和策略对开发者来说会更加友好。2.良好平衡开发环境与生产环境Kraken的配置文件为/config/app.json,它会在运行时加载文件中包含的键值对。全部的应用程序配置均存放在这一个文件中,大大方便了开发者。/config/middleware.json则是自定义的中间件配置文件。说起开发环境与生产环境,二者通常在端口号、主机名等方面的参数设置会有不同,Kraken允许创建开发模式下使用的配置文件,如/config/app.json为生产环境下的配置,/config/app-development.json则是开发环境下的配置,然后可以通过自定义环境变量(定义环境变量NODE_ENV为production或development)来控制要加载哪个配置文件。如此一来,可以方便开发者在生产环境和开发环境进行快速切换!3.注重安全通过Lusca模块来为安全保驾护航,并遵循OWASP安全原则,同时也默认为全部调用启用了几个请求/响应头文件:跨站请求伪造(CSRF)标头内容安全策略(CPS)标头隐私优先项目平台(P3P)标头X-FRAME-OPTIONS防止点击劫持4.其他同时,它还有下面几个特点:路由(route)与逻辑(logic)分离:方便程序运行失败时快速锁定问题。模板(template)共用:Kraken选用Dust作为模板语言,同时在服务器端和客户端使用了同一个模板,如此一来,就可以做到代码复用。支持本地化:Kraken可以在运行时基于请求上下文来加载内容包(contentbundle),所以在模板渲染之前就可以通过添加上下文来给用户提供相应的本地语言支持,大大增强了应用的友好性。示例与文档关于Kraken,官方给出了下面两个示例,可以帮助大家学习和了解:例一:本地化与国际化:给Web应用增加多语言支持,让各地用户能够用当地语言来使用Web应用例二:部署中间件:创建一个网页计数器,为大家解释在应用生命周期中如何部署中间件开源项目Kraken是一款开源项目(分发协议为ApacheLicensev2.0),大家都可以对该项目进行Fork和提交修改。它也提供了一份简洁的使用文档。项目源码和文档均可在Github页面进行查看。最后任何一个项目的诞生都有其产生的背景,也必然有相应的需求驱动。正如Kraken,正是由于PayPal为了满足其快速开发Web应用的强烈需求,才选择了Node.js,才有了这个项目。同时,我们也需要注意工程师团队中存在的“非我所创”文化,对于新技术要采取积极的态度,不能一成不变,否则将给企业发展带来阻碍。

    • 建站经验
    • 99阅读
    • 2022-04-28

  • 选择Node.js作为服务器端运行环境的优势解析
    选择Node.js作为服务器端运行环境的优势解析

    Groupon从RubyonRails迁移至Node.js为什么要放弃原有技术栈?Groupon目前在全球共有两套站点——美国网站和欧洲网站,其美国网站前端最初是一个单一的Rails(最流行的Ruby开发框架)代码库。对于为什么会选择Rails来开发最初的网站,Groupon开发人员表示,Rails非常适合小型团队快速开发,可以让网站快速启动并运行起来,这对于初期功能不断变化的Groupon来说,是个非常不错的选择。随着Groupon的发展和新产品不断推出,这个代码库越来越大,有太多的开发者在同一个代码库工作,他们很难在本地运行并测试产品,如果有问题需要回滚,那么每个人的工作都前功尽弃了。Groupon团队决定将原有的单一Rails库分割成小的、独立的、更易于管理的库。为什么选择Node.js?Groupon团队评估了不同的软件栈,想寻找一个能够解决这些问题的方案——有效处理大量传入的HTTP请求、使并行API请求服务于每一个HTTP请求、将结果渲染为HTML5,并可以有效实现监控、部署和支持。该团队使用不同的软件栈开发了原型,并测试了它们,总体来说,发现Node.js是个非常适合的解决方案。如何迁移?Groupon团队使用Node.js重建了网站页面的每个主要部分,将它们作为一个独立的Node.js应用程序,然后重建了基础设施,使所有独立的应用程序可以一起工作。迁移之后,Groupon成为了全球最大的Node.js部署产品之一。迁移带来的好处之前单个Rails前端代码库被分割成了20个独立的应用程序,其带来了如下的好处:页面加载更快——快了50%与之前相比,处理相同的流量所使用的硬件资源更少团队可以独立地更改、部署各自负责的模块网站功能和设计实现可以快速迭代更详细的信息可参阅Groupon开发团队的博客。选择Nodejs的N个理由CalebMadrigal是来自美国密尔沃基市的一名软件顾问。四年前,他在听说“将JavaScript用作服务器端语言”这样的说法时,认为那是一个荒唐的想法。有那么多服务器端语言可供选择,为什么要选JavaScript?这是他当时的想法。但现在,他在当前的项目中选用了JavaScript/Node.js。他近日撰文对自己的这一转变进行了解释。首先,许多顶级企业都使用了Node.js,并且效果非常好,其中包括PayPal、Walmart、Ebay、Groupon和LinkedIn。这些企业在生产环境中大量使用了Node.js。Madrigal举了PayPal的例子。PayPal针对他们网站上其中一个流量最大的应用,对比了它的Node.js版本和Java版本,发现前者在多个方面优于后者,并最终决定由Java切换到JavaScript。InfoQ对此有过报道。其次,Node.js有一个很棒的包管理系统NPM。通过运行“npminstall包名”几乎可以安装任何包/库。另外,通过package.json文件可以跟踪依赖关系。因此,Node.js库很容易克隆,运行“npminstall”可以安装所有的依赖关系。再次,Node.js社区异常活跃,总是有新的库产生。这些库非常好用,使JavaScript成为一个非常高效的平台。然后是Node.js的REPL(read-evaluate-printloop)命令行。开发人员只需要在终端中输入“node”,就可以对Node.js进行逐行测试。最后,Node.js有一个很重要的特性:非阻塞函数。这就是为什么我们会在Node.js的代码中看到大量的callbacks和promises。这种设计模式给Node.js带来了非常优异的性能。此外,Node.js的最大一个优点是:它是JavaScript。任何人都知道JavaScript,所以使用Node.js不需要学习一门新语言。有了它,开发人员可以只使用一种语言,浏览器端用JavaScript,服务器端用Node.js。在使用像MongoDB和CouchDB这样存储JSON对象的文档数据库时,这会极大地简化数据库和用户界面之间的数据传递任务。

    • 建站经验
    • 110阅读
    • 2022-04-28

  • 盘点那些年个人站长使用过的网站模板
    盘点那些年个人站长使用过的网站模板

    你曾经使用哪些模版建立自己的网站?相信很多朋友现在的网站已经做的越来越大,也有的已经很少打理了,但至少曾经日思夜想的为网站换链接做过内容,也付出过很多,无论你今天网站状况是怎么样的,我想已不再那么重要,今天小编为大家盘点那些年个人站长使用过的网站模板!做站长,我们都曾想过,好好做一个网站,把网站做好我们就可以卖广告,卖链接,做一些网盟广告之类的赚点小钱,站长圈经常有人爆料说谁谁的网站现在BR多少多少?每日流量多少多少?做网盟的呢!每天的广告收入多少!网盟广告是以日为单位的,今日预算收入,昨日、一周、一月等等,数字很可人,远远超过站长去一些公司做SEO的工作收入,SEO工作又苦又累一个月拿着两千来块钱,好一点能拿到三四千,还没有人家网盟广告一天的收入多呢?有谁不想多挣钱呢?看到网盟这么赚钱,我相信每一个不安于平庸的SEOer都会“想入非非”的。于是我们开始了模版建站——SEO赚钱之旅!网站想要赚钱,任何一个模板都是可以的,只是有适不适宜之分,像一些企业模板就不太适合,而像一些分类信息,资讯行网站模板就非常适合用来赚钱。DEDE(织梦),这款模板我想大家应该都非常熟悉吧,对于小编来说也是非常熟悉的,这也是小编第一款拿来赚钱的模板,同时也是现在非常流行的模板之一,这款模板操作要比其他一些模板稍麻烦些,主要是因为模板内容较多,后台需要控制很多地方,而且有很多的插件,这可能是这款模板的缺点,但同时也是他的优点,时间积累一长操作一熟练就会发现,这款模板确实在很多方面表现优异,功能也特别的强大,相比一些WP,帝国,ZBLOG限制要小得多。当然,任何一款模板都有它的优缺点,下面我们也来依次介绍WP,帝国,ZBLOG这三款模板。WP,WP是个人网站中个人博客使用最多的网站模板,WP模板非常符合现代人的阅读习惯,而且WP主要是以人的阅读体验来做的,无论是在图片,文字还是网页布局上面,都添加了人的因素,随着现在搜索引擎越发的强调所谓的用户体验,WP的的优势将会越加的明显,前段时间百度专门为WP开发的Wordpress链接提交插件也可以看出百度对WP的态度,既然百度专门为WP开发链接提交插件,这也说明WP这款模板在一些功能上面也是不太完善的。上面也说了,WP主要考虑的人的阅读习惯,这在关键词排名上面占了很大的优势,不过如果想用此模板赚钱,目前来说最主要的方式就是网盟推广,而网盟推广就会有碍于人的搜索阅读,所以鱼与熊掌不可兼得也!帝国,听这个名字就感到好吊的样子,确实帝国就是大型网站模板,他不像WP与DEDE那样针对个人与中小型网站,如果一个大型网站在没有独立建站的能力以及基础那么帝国将是非常不错的选择。但是,这里面是说是一个大型网站,一般我对大型网站的理解是百度权重非常高,这里的百度权重不是BR多少多少,而是网页质量,百度信任度,如果非常高的话,就不需要担心,但如果不是而是要从一个新站、小站慢慢做大做强,这里可能会遇到一些麻烦,帝国省略了很多的SEO细节,这在SEO优化方面就会不如DEDE与WP。不过在用户体验感方面,我觉得还是WP>帝国>DEDE,帝国还将是一款不错的网站模板。ZBLOG,ZBLOG模板从字面意义上就知道这是属于个人博客,相较于WP个人博客,ZBLOG的出现要早很多,是很原始的博客模板,页面现在看来可能有点难看,拿我来比吧,很早之前就想用zblog做一个个人博客网站,模板选了多少套,愣是没有一个人合适的,感觉好难看啊!不过ZBLOG也是非常实用的,简单,明了,想要查看那一天的博文内容,只要一查找就能找到,很是方面,页面也可以设置tags等标签,对以后的SEO优化也是很有帮助的。不过ZBLOG也许真是快成了“老古董了”我们还是需要调整我们的模板建设方向,现在的新浪博客在很多方面和ZBLOG有相似的地方,这样更加剧了ZBLOG劣势地位,在日益追求特色的今天,保持传统的blog风格可能显得有点尴尬,但是ZBLOG在SEO行业也是有很深的影响力的,在SEO行业做了很多年的资深SEOer们有很多也是用的ZBLOG模板,网站模板的更换对SEO来说不是一件普通的工作,所以很多人还一直保留着,避免更换模版给网站带来的伤害。站长常用的网站也不仅仅指这些,像DZ动力,PHPCMS等,更有ECSHOP,CMSEASY,SDCMS等等都是站长日常容易接触到的网站模板,做任何一款网站都有对应的网站模板,也有我们选择它的理由,但有一点是不变的,那就是我们始终是站长。以上就是那些年个人站长使用过的网站模板盘点,谢谢大家阅读!

    • 建站经验
    • 79阅读
    • 2022-04-28

  • 想知道你的企业网站值多少分?来测试一下吧
    想知道你的企业网站值多少分?来测试一下吧

    你的企业网站值多少分?可以通过以下测试来测测你的企业网站值多少分,请认真回答以下问题,并统计好分数,在根据得到的总分数选择对应的答案。  1、你的网站是展示型网站、商城网站还是微餐饮网站?  A、展示型网站——1分  B、商城网站——3分  C、微餐饮网站——5分  2、你的网站是采用哪种方式建站的?  A、传统建站——1分  B、自助建站——3分  3、你建设网站的花费大概是多少?  A、1000元以下——1分  B、1000-2500元之间——3分  C、2500元以上——5分  4、你是分开购买域名、主机、建站系统的,还是一起购买的?  A、分开购买——1分  B、一起购买——3分  5、如果是分开购买,你的域名花费是多少?  A、50元以下——1分  B、50—100元——3分  C、100元以上——5分  6、如果是分开购买,你的主机花费是多少?  A、700元以下——1分  B、700—1000元——3分  C、1000元以上——5分  7、你的网站是单独一个电脑网站/手机网站/微网站,还是电脑网站、手机网站、微网站三站合一?  A、单独一个电脑网站/手机网站/微网站——1分  B、脑网站、手机网站、微网站三站合一——3分  8、你的网站是否支持多语言自由切换功能?  A、不支持——1分  B、支持——3分  9、你的网站支持促销功能吗?  A、不支持——1分  B、支持,但促销功能不多——3分  C、支持,并拥有时下流行的所有促销功能——5分  10、你的网站支持在线支付吗?  A、不支持——1分  B、支持——3分  11、你的网站支持优化推广系统吗?  A、不支持——1分  B、支持——3分  12、如果是微餐饮网站,你的网站是否支持智能定位?  A、不支持——1分  B、支持——5分  13、如果是微餐饮网站,你的网站是否支持在线外卖?  A、不支持——1分  B、支持——5分  14、如果是微餐饮网站,你的网站是否支持在线订位?  A、不支持——1分  B、支持——5分  15、你的网站是否支持QQ在线咨询功能?  A、不支持——1分  B、支持——3分  16、你的网站空间容量多少?  A、1G——1分  B、2G-5G——3分  C、无限容量——5分  17、你的网站用的是哪种域名?  A、二级域名——1分  B、一级国别域名——3分  C、com/net等一级国际域名——5分  18、你的网站是否支持淘宝产品导入功能?  A、不支持——1分  B、支持——3分  19、你的网站系统是否有备份功能?  A、不支持——1分  B、支持——3分  20、你的网站图片库容量是多少?  A、100M以下——1分  B、200M—500M——3分  C、500M以上——5分  21、你的网站是否支持新闻系统?  A、不支持——1分  B、支持——3分  22、如果支持新闻系统,你的新闻系统容量是多大?  A、栏目数量和文章数量1000以下——1分  B、栏目数量1000以上,文章数量1万以上——3分  C、栏目数量和文章数量不限——5分  23、你的网站是否有技术团队进行推广和维护?  A、没有——1分  B、有,自己组建专业的技术团队——3分  C、有,自助建站系统的服务商提供技术团队支持——5分  24、你的网站支持多少产品数量?  A、10000以下——1分  B、10000以上——3分  C、无限——5分  25、如果你建的是三站合一的网站,你的微网站是否支持微收款功能?  A、不支持——1分  B、支持——3分  26、你的网站使用的是否是独立服务器?  A、不是——1分  B、是——5分  27、你的网站是否有启用企业邮局?  A、否——1分  B、是——3分  28、如果你的网站有启用企业邮局,你的企业邮局容量是多少?  A、1000M/20G个企业邮箱以下——1分  B、1G/10个企业邮箱—3G/30个企业邮箱——3分  C、5G/50个企业邮箱以上——5分  29、你的网站是否支持多用户管理?  A、不支持——1分  B、支持——3分  30、你的网站是否支持广告系统?  A、不支持——1分  B、支持——3分  31、你的网站是否享有独立宽带?  A、否——1分  B、是——5分  32、你的网站是否是独立IP?  A、否——1分  B、是——5分  33、你的网站是否支持留言管理系统?  A、不支持——1分  B、支持——3分  34、你的网站是否支持在线招聘系统?  A、不支持——1分  B、支持——3分  35、你的网站是否支持表单系统?  A、不支持——1分  B、支持——3分  答案标准:35分以下(包括35分)为A,36分—60分为B,61—85分为C,86—110分为D,111—125分为E,126—150分为F  A、网站不合格  分数为35分以下的网站为不合格网站。在互联网高速发展时代,单独一个展示型电脑网站是不利于企业进行网络营销的,而且功能不齐全,网站优化推广效果差,这类网站迟早会被淘汰。  B、网站合格  分数为36分—60分的网站为合格网站。这类网站是刚好合格而已,属于跟上互联网发展的脚步,懂得搭建一个PC站+手机站+微网站三站合一的网站,但在功能、优化、推广、空间容量等方面仍存在很大的不足。  C、网站良好  分数为61—85分为良好网站。这类网站的功能配置方面相对比较好一点,考虑到空间容量、促销功能、推广优化等各方面的问题,在这些方面都做了适当的提升,符合了一个网站进行营销的基本条件,但营销性能仍有不足。  D、网站中等  分数为86—110分为中等网站。这类网站无论从功能配置还是营销性能上都做得比较好,考虑到网站营销对企业的重要性,对营销功能进行加强,不仅有利于网站的优化推广,也有利于企业进行网上业务的扩展。  E、网站优秀  分数为111—125分为优秀网站。这类网站的功能配置、优化推广、营销性能基本上都是比较优秀的,不仅网站建设得好,而且能从消费者的角度出发,应用一切有利于消费者的功能,如:智能定位、在线留言、在线咨询等功能,是一个有利于企业进行全网覆盖式营销的优秀网站。  F、网站理想  分数为126—150分为理想型网站。这类网站不仅从营销、推广、功能等角度进行建设,还从网站安全、网站稳定、网站运行等方面进行考虑。既能做到全网覆盖式营销,又能保证网站运行的安全、稳定、快速,这类网站可以说是完美的理想型网站。  以上就是关于企业网站值的测试题,现在大家是不是已经知道自己的网站值多少了?如果还没有达到你想要的效果,要继续努力,如果已经达到优秀级别了,要保持水准哦!

    • 建站经验
    • 86阅读
    • 2022-04-28

  • 全面剖析eBay的Hadoop集群应用及大数据管理
    全面剖析eBay的Hadoop集群应用及大数据管理

    eBay,全球最大的在线交易平台,由程序员PierreOmidyar于1995年劳动节周末在美国创立,起初叫AuctionWeb,于1997年7月正式改名为eBay,今年九月将迎来其20周年纪念。eBay第一笔交易是一只破损的激光笔,成交价14.83美元,Pierre主动联系买家以确信其知道这是一只破损的激光笔,而买家则回复“我是一个破损激光笔收藏家”。从此,eBay20年的发展正式开始了,带领了电子商务产业的极速成长,如今,eBay已经成为全球最大的在线交易网站,买家分布于全球190多个国家,超过2500万活跃卖家,1.57亿活跃买家,8亿活跃商品,通过ConnectedCommerce连接着全球各地的买家和买家,2014年产生超过2550亿美元的GMV,其中来自移动端的GMV超过280亿美元。据统计,在美国每五秒售出一个手袋,在澳大利亚每分钟通过移动端售出一双鞋,在德国每10分钟通过移动端售出一辆汽车或卡车。如此大量的用户及交易下,数据成为eBay的重中之中,从点击流到搜索,商品查看,交易以及愿望清单等不断进行收集。在eBay数据平台中存储着超过100PB的数据,其关键是如何获取、存储、加工和分析数据,并释放数据的价值使之成为行动指南,而各个大数据平台,则在各个方面为上万名分析师及业务用户提供了坚实的保障和基础,并不断创新以满足日新月异的变革和需求。eBay目前的大数据平台分为三层,数据整合层:负责数据获取,处理及清洗等ETL工作,包括批处理及实时处理能力,包括相关的商业产品和开源产品;数据平台层:主要由传统数据仓库(EDW),基于Teradata集群,总容量超过10PB;奇点(Singularity),存放半结构化及深层次结构化数据存储,总容量超过36PB;以及Hadoop集群,总容量超过100PB;数据访问层:通过各种工具,平台为业务用户和分析师提供访问和分析相关数据的能力,包括各种商业工具,开源产品及自研的各种平台等。本文将着重介绍eBay在相关领域的发展,平台及未来发展趋势。ConnectwithHadoop1.Hadoop在eBay的发展历史eBay最早的Hadoop应用是在eBay研究实验室(eBayResearchLab,eRL)构建,主要用作日志分析,以期提高每天的日志处理速度。最初的版本是0.18.2,4个节点,存储并处理约几百GB的日志,最大的处理能力为44个Map。随后,eBay搜索团队构建了10个节点的集群开始了Hadoop在eBay搜索领域的发展,并在2012年上线了基于HBase的搜索平台:Cassini。2010年,eBay上线了基于CDH2的集群,拥有532个节点,超过5PB的存储容量,并于2012年上线了基于HDP的集群,超过3000个节点,容量超过50PB。2014年,总节点数据超过10000多个,存储容量超过170PB,活跃用户超过2000多,现在,相关规模还在不断增长中。随之带来的管理、监控、分析和存储的挑战越来越严峻。基础架构的创新主导了Hadoop的进化,从最初的基于HDFS和MapReduce的批处理应用不断演变,第一代的Hadoop提供了灵活和可扩展的数据结构和处理能力,并在大数据兴起之时满足了公司各种大小数据处理需求提供了民主化需求。然而毕竟其只是第一步,有着各种限制,如果将其对比于操作系统的话,第一代Hadoop就如操作系统和应用,例如记事本捆绑在一起,且仅有一个应用,即MapReduce。然而随之而来的大量任务导致了调度瓶颈,从而促成了YARN(YetAnotherResourceNegotiator)项目的成立和发展,其解决了JobTracker在超大规模集中成为瓶颈等问题,并支持各种应用通过YARN来进行资源调度和管理从而将Hadoop带入了下一个时代,下一代的Hadoop取得了巨大的跃进,从面向批处理到提供交互式的处理能力。并提供了战略性的决定以支持独立的执行模式,例如MapReduce可以作为YARN上的一个应用运行。从此,通过YARN,Hadoop变成一个真正的数据操作系统。现在,从交易型数据库,文档数据库及图数据库的数据都可以存储在Hadoop之上,通过基于YARN的应用可以访问数据而无需复制或者在不同的应用中移动数据,包括MapReduce、Hive、HBase以及Spark等各种应用。从而提供了非常丰富的数据处理和创新能力。一个统一的数据存储,利用的平台将是确定的趋势。2.分层存储当前普遍的认知是使用廉价硬件组建Hadoop集群以存储超大容量数据及提供计算能力,例如,一个1000节点的集群,每个节点附带20TB的存储能力,则整个集群可以存储20PB的数据。所有的机器都有足够的计算能力以实现Hadoop的名言:“MovingComputationisCheaperthanMovingData”。不同类型的数据集通常都存放在同一个集群中,并被不同的团队共享以运行各种应用来满足业务需求。而数据的一个共同特点是其使用率会随着时间而逐渐降低,越新的数据使用率越高,而越旧数据的访问次数逐渐降低。初次生成的数据有着最大的使用率,我们将其定义为Hot,基于我们的分析,一周内访问量下降的数据被称为Warm,而之后三个月内只有少量访问的数据被称为Cold。最后,访问率降低到每年仅有几次甚至为零的数据集被称为Frozen,如下表:由此分析,将不同热度的数据存放在同一个集群,使用相同的计算和存储资源则变得越来越有问题,随着时间的增长,冷数据越来越多,将占据宝贵的存储和计算资源,而当有更多热数据需要进来或者作大量计算的时候,相应的存储变成了瓶颈,很多其他公司甚至提到了删除低价值数据等做法。在管理和运维超大Hadoop集群时如何处理不同热度的数据成为非常迫切的需求和现实挑战。将低热度数据集与高热度数据集作不同存放的策略已势在必行,在Hadoop2.3中,HDFS支持了分层存储,通过在集群中添加归档存储能力为冷数据提供深层存储能力,且保持对于上层应用的透明性。由于数据依然在同一个集群中,因此当请求需要访问相应冷数据时依然可以及时获得。例如,我们可以为上面的例子中添加100个节点,每个节点附带200TB存储但仅使用有限的计算资源,于是整个集群的总量将变为40PB(20PB磁盘+20PB归档)。通过相关数据策略,将不同热度的数据分布到不同存储上,例如,假设每份数据按Hadoop默认设置复制三份,对于Hot型数据则将三份数据全部存放在快速磁盘上,对于Warm类型数据仅存放一份拷贝在快速磁盘而其余两份放到归档存储,将Cold和Frozen数据全部存放于归档中。从而将不同的数据进行有效分配,示例如下图:分层存储已经在eBay最大Hadoop集群上使用,该集群拥有40PB的存储,我们为之添加了额外的10PB存储,每个节点附带220TB容量,由此将Warm、Cold及Frozen数据集逐步进行迁移。而由于仅需有限的计算能力,这些节点的每GB成本比其他节点便宜4倍左右。后续,eBay将持续在这方面进行研究和投入,例如SSD存储等。3.监控、告警及自动化运维当集群数量达到成千上万的规模时,监控、告警及自动化运维是保障数据高可用性及为上层应用提供持续服务的基础。在eBay的日常工作中,Hadoop集群的管理和维护任务相当繁重,而现有的管理和监控工具无法满足多集群,大规模及分布式收集日志,监控数据的需求。因此eBay研发了名为Eagle的集群监控告警平台。Eagle主要由基础的核心框架以及针对不同应用领域的诸多app组成,专注于解决大数据时代大型分布式系统自身监控这个复杂的大数据问题,具有高扩展性、高实时性,以及高可用性等特点,同时支持使用机器学习为复杂情况提供预测分析。轻量级分布式流处理框架:以DAG为基础模型对通用流处理范式进行抽象,在开发期用户只需基于DSLAPI定义监控程序的流式处理逻辑,运行期再选择实际物理执行环境,默认支持单进程和Storm,同时也支持对于其他执行环境的扩展,比如SparkStreaming或者Flink等。实时流聚合引擎:提供简单易用的实时流聚合规则定义语法,元数据驱动,动态部署,实现线性扩展的实时监控数据流聚合。分布式Policy引擎:分布式实时预警规则执行引擎,提供类SQL的描述性规则定义语法以及机器学习自动等多种扩展,支持预警规则的动态加载和分区。存储和查询框架:通用监控数据存储框架,可用于存储和查询日志、指标、警报、事件等多种类型数据,默认支持HBase,并针对HBase进行多种优化和扩展,比如coprocesser,二级索引以及分区等,也支持其他存储类型的扩展比如RDBMS等,并提供通用的ORM,RESTAPI以及易用强大的类SQL查询语法。可定制化监控报表:提供类Notebook的交互式实时可视化分析,也支持进一步选取部分图标,并定义布局保存为dashboard以供分享或者持续监控。除了对日常集群指标监控外,Eagle集成了JobPerformanceAnalyzer(JPA),通过实时监控Hadoop平台上的作业当前和历史执行状态,提供多维度不同粒度的性能分析,支持多种异常预警和性能警告,比如作业运行时间过长、读写过慢、数据倾斜、失败任务比率过多等,可有效在作业无法满足SLA之前提供预警和性能建议。同时结合机器学习模型,基于任务分布或指标变化等协同预测任务或者服务器节点等可能潜在的异常,并集成Remediation系统对系统进行自动修复。同时,针对异常用户行为,危险操作等,开发了EagleDAM(DataActivitiesMonitoring)的安全监控应用,通过自定义策略及机器学习模型,对关键数据,操作等进行监控和报警,防范于未然。4.在线交互分析当数据规模随着用户群体的多样化拓展而不断增长时,我们的用户,比如分析师与业务部门,希望能在保持最低延迟水平的前提下继续使用自己所熟悉的工具和方式来访问和分析存储于Hadoop之上的超大规模数据集,并且希望数据的获取、处理、存储和分析同时在Hadoop集群上完成,而无需再将数据从一个数据源迁移到另外一个数据源。在研究和评估了多种开源及商业产品后,eBay中国研发中心于2013年中正式立项启动了OLAPonHadoop项目,并在2014年10月开源,之后贡献给了Apache基金会,现在正在孵化阶段。ApacheKylin通过映射Hive中星型结构的表,由建模者定义相关维度和度量及其他设置而生成元数据,构建引擎基于元数据自动生成相关的Hive查询,一系列的MapReduce任务及HBase操作,从而将数据从Hive中读出并进行预先计算,将结果存放到HBase。之后,相同数据模型的查询都将直接读取已经被计算好的存放于HBase中的数据,从而实现秒级甚至亚秒级查询延迟。在该项目初始阶段调研和评估过包括Impala,Stinger,PhoenixonHBase,Teradata,MicroStrategy等多种开源和商业选项,最后发现没有一种可以满足eBay实际业务需求,为超大规模数据集提供秒级交互式查询能力。开发团队在研究过众多技术、论文和参考实现后,最终选择了MOLAP的方式,即为数据模型作预先计算,以空间换时间的方式,为前端业务用户和分析师提供在TB甚至PB级别数据集上交互式的查询能力。在上面的拓扑图中,最下面的节点为实际数据,而之上的每一个节点则代表了一种维度组合,理论上所有的SQL查询都能被该拓扑图覆盖,因此进行相关的预先计算后,只要引擎能正确解析查询语句并访问正确的数据存放地址就可以在极短的时间内获得结果。在实际开发过程中,Kylin系统有效地降低了维度,减少了非必要组合的计算,增加了多种压缩和编码算法,例如Trie字典编码技术、PartialCube计算、分组聚合等等。实际生产环境中,90%ile的查询延迟在1.5秒,95%ile小于5秒(最近30天)。虽然基于MOLAP的应用系统已经为相关的业务用户提供了在大规模数据集上的查询应用,但由于构建Cube需要花费大量的系统资源和时间,一方面对集群带来了较大的压力,另一方面很难满足对实时型要求高的需求。因此,Kylin团队为此研发了下一代架构,通过MicroBatch模式对流数据进行支持,如下图所示,每隔固定的时间读取来自上层数据流中的数据并促发聚合,最终导入到目标Cub俄中,目前已经在eBay内部上线相关案例并取得了良好的反馈。另外,对于Cube引擎也引入了新的算法,实测结果表明能够提供一倍以上的构建速度,并大大降低对系统资源的要求。此外,我们对Spark也投入了相关的研究,第一版的SparkCubing引擎业以完成并准备上线实测。5.数据生态以上简要介绍了eBay最近几年在大数据平台方面的发展和主要实践,基础平台的发展和建设离不开用户,合作伙伴以及管理层帮助和指导,在这个过程中,也逐渐构建起基于Hadoop及企业级数据仓库的数据生态,各个业务单位,分析团队利用相关平台和数据为支持极速变化的业务和快速增长的数据提供丰富的分析和决策支持,共同构建eBay的大数据生态。连接每个人通过大数据平台及应用,eBay能为买家和卖家提供更加良好的用户体验和服务,不断满足日益变化的市场和环境,并通过创新的技术来降低对环境的影响和依赖。今天,eBay知道你,明天,eBay将理解你并连接你与未来。eBay的秘密武器:用大数据激发购买欲eBay上活跃着180万买家和卖家,网站每天要产生大量的数据。在任何给定的时间点,会有大约350万件商品上市销售,通过eBay的拍卖搜索引擎每天有超过250万次查询。eBay搜索平台副总裁HughWilliams说,eBay的Hadoop集群和Teradata设备中通常保存有10PB的原始数据。在线拍卖网站eBay使用大数据的诸多功能,例如衡量网站性能和检测欺诈。但他们收集大量数据的更有趣的用途之一,是促使用户在网站上购买更多的商品。虽然eBay无法强制用户购买他们遇到的每一款产品,但eBay充分利用大数据的优势进行大力促销。做法之一就是优化搜索引擎和搜索结果,通过收集到的数据分析用户的行为模式,对结果做出调整。“如果时光倒流几年,在eBay使用搜索引擎,你可能会发现它太‘字面’了,”威廉姆斯说,“有些事情你可以向搜索引擎表达,它会从字面上找到用户所需要的信息,但它并没有真正理解用户的意图。”“我们一直在努力使我们的搜寻引擎更直观。”例如,通过使用大数据,eBay发现如果用户想要购买一个Pilzlampe,这是一种有收藏价值的德国蘑菇灯,当他们在eBay搜索引擎中输入“pilzlampe”时更可能进行购买,因为这样输入会有更多的结果。在搜索引擎中,简单地在一个词中间加一个空格键,eBay就可以通过网站提高销售的机会。有了这样的信息,eBay通过其搜索引擎改变和重写了用户的搜索查询,添加了同义词和替代性条款,以便带来更多的相关结果。不仅如此,eBay通过使用大数据对以下问题做出预测:列出的产品是否会卖出,会卖什么价钱,这会对拍卖网站的搜索引擎产生多大的影响。所有这一切都可以增加用户购买的可能性。Wlilliams认为,塑造的搜索查询方式的实施因素是有风险的。“实现一个因素需要几个月的工程,而且有非常高的风险,因为我们不知道在帮助我们的客户寻找项目的时候,它对客户是否真的有用,”他说。这就是为什么eBay通常在网站上运行一些测试,得到用户的样本组来衡量响应。另一个挑战是将搜索查询的环境考虑在内。一个例子是,如果用户查找“GeelongCats”,eBay的搜索引擎可能只是将“Cat”作为关键字,并在宠物类里搜索——当用户是搜索运动商品时这没有太大用处。Williams表示:“在我们的掌控范围内有可能出现非常微妙的问题,所以我们需要数据供科学家研究这些问题。”

    • 建站经验
    • 79阅读
    • 2022-04-28

  • eBay的网站架构演进以及技术特点解析
    eBay的网站架构演进以及技术特点解析

    eaby技术架构变迁ebay的系统架构的变迁主要经历了4个阶段,下面一幅图展现了ebay系统架构变迁的时间表在ebay的V1版本,ebay采用的是FREEBSD+APACHE+PERL+DGBM,这是一个比较原始的模型,而且相对比较简单,操作系统,应用服务器,web服务器以及数据库服务器都是在同一台机器中,网络结构在物理上只有一层。整个网站有四个域名,每个域名对应不同的应用,每组应用对应一台服务器。图表1ebayV1系统架构随着业务量以及访问量的不断上升,ebay在1999年开始对架构进行升级,技术架构发生了较大的变化,这期间主要是从1999-2004年,而架构的版本号则从V2.0到V2.5,下面我们来看看EbayV2.0技术架构V2.0开始采用ORACLE服务器,数据库服务器和web服务器分开,数据库独立部署到一台新的机器上面程序逻辑上面已经开始分层,也就是我们常说的mvc3层结构:显示层、业务逻辑层、数据访问层,而在物理上面还是两层结构web服务器以及数据库服务器编程语言采用C++,那个时候java刚兴起,估计也没有其他好的语言选择了。V2.1每组应用对应多台服务器,而多台服务器组成一个servlerpool(服务池),通过一个负载均衡服务器来分别转发请求到不同的服务器数据库部署到性能更加好的服务器上面V2.2增加了一台数据库服务器作为备份服务器,防止失败V2.3这个版本只是对每个应用增加了更多的服务器,不断的进行serverpoolV2.4这个版本最大且最重要的改变就是对数据库进行垂直拆分,即把数据库按照不同的功能模块进行划分,例如交易库,会员库,帐务库V2.5这个版本在2.4的版本上面,对部分数据库进行读写分离,同时对Item(物品条目)数据库进行水平拆分,把Items按照不同的Categoty分配到不同的Categoty商品库里面,,这样大大的扩展了对Items数据库的访问性能。图表2ebayV2系统架构 从上可以看出ebayV2的架构变迁,主要是通过服务器的添加,数据库的垂直拆分以及水平拆分,数据库的读写分离操作来提高整个网站的性能。在web层,通过添加服务器来进行水平扩展,同时对应用服务功能进行垂直拆分,按照不同的业务功能划分到不同的系统。在数据库层面,进行了读写分离尝试,对数据库进行垂直拆分,同时把Items库按照Category进行水平拆分,这样做,分散了对产品库items的集中访问,不过需要在DAL层提供透明的访问机制,ebays这里貌似还并没有这个成熟的框架,同时不知道分布式事务ebay在这个阶段是如何实现的。 V3整个应用程序开发平台全部替换为j2ee平台,用java改写了整个网站。看来是一次比较大的工作。目的是为模块解耦以及模块复用,从这里,我们可以看出java在开发复杂企业应用的优势。 V3版本在数据库层面上面做了更加优化的设计,ebay继续在数据库上面进行优化垂直拆分数据库,按照功能模块拆分为更多的子库水平拆分数据库,对同一类数据,按照key值的不同数据分配到不同的数据库中(具体水平分库的方式有多种,这里就不再介绍了。)在进行水平拆分数据库的时候,ebay也必须建立一套透明的DAL访问方式,必须提供透明的数据库访问机制以及透明的数据库路由功能,数据库的物理结构变更不会影响到代码的逻辑变动。 在这里,ebay也在数据库层给出了最佳实践:尽量减少数据库CPU的消耗,例如不使用存储过程,只使用少量的触发器减少数据库层面的逻辑功能,例如数据转化,组合,这些都放在逻辑层减少动态SQL,主要是SQL中参数的动态生成功能,这一点,公司的DBA也在强调尽可能的缩短数据库的事务时间,尽可能早的结束事物尽可能的采用异步更新数据库方式,分散数据库的压力,例如消耗数据库时间的操作要放在夜间处理。不使用分布式事务,看来分布式事务的确不使用高并发性的系统在应用逻辑层面,ebay把系统按照功能划分成许多不同的模块,每个模块作为一个子系统,同时通过水平扩展子系统服务器数量来提高整个系统的伸缩性。下面看看ebay在应用层面给出的最佳实践保持应用层子系统完全是无状态的,可以水平进行无限扩展以提高伸缩性,通过负载均衡服务器均等分配到各个子系统的实例池里面。尽可能的使用缓存,缓存能够减少数据库的压力,使用空间来换时间严格划分系统的各个层面,表现层,业务逻辑层,服务集成层,DAO层,基础设施层。在应用层的设计上面,ebay通过不同的功能划分了很多domain,每个domain只负责自己的功能的业务逻辑,domain与domain之间是不会依赖的,同时还会提供commondomain提供各个domain之间的交互以及依赖,见下图:由于ebay的数据库按照逻辑划分了很多不同的字库,那么ebay必须提供透明的访问数据库的能力,举个例子:ebay把Items按照categoray分成了很多subitems库,假如需要查询出来某一个用户所购买的所有Items,那么必须要查询所有的subitems库,把数据库组合出来,那么DAL层必须屏蔽数据库的物理结构,一次性的把所有的subitems库中对应的数据查询出来。而这个访问,对应用来说是透明的。应用不需要关注到底items有多少个子库。ebay的架构特点:PartitionEverything当一个网站刚开始时,可能一天只有几十个人访问,或者几百个,可能一台普通的服务器就足够了,db和应用统统都可以放在一起,可是随着用户的增加,业务的增加,一台服务器远远不够了,就自然想增加服务器,系统应该跟随改变。多一台服务器,也就减轻了一台压力。这样就出现了分割业务和分割数据。其实要做到恰到好处,也非常不容易,ebay按照业务功能水平划分应用,水平划分数据库。这个在国内好多网站都是这样做,不足为奇了,不过水平划分功能后,单个功能应用的分割也大有文章可做。怎么划分,很早以前ebay的架构文档说到这个事情。在水平按照业务划分数据库后可以再根据一定的规则划分表数,其中规则有很多,可以按照主要业务生产者为引导进行分割,所有数据跟随生产者一起,至于什么规则可以各抒己见。AsynchronyEverywhere同步应用会带来强耦合,可用性保障差,特别是在用户体验方面极度失败,试想一个网站首页要获取那么多业务信息如果同步的话会流失很大一部份用户,如果再加上网络慢,等到蚊子都睡觉了,人哪里还有时间看,其实分布式系统应该尽量使用异步处理。EBay的应对策略为:事件驱动和pipeline、多播消息,涉及的技术为:消息中间件(无序、至少一次到达)、基于SRM技术的可靠多播。AutomateEverything配置信息的动态化,涉及的技术:配置发布/订阅机制的实现、机器学习。这个超级牛,不知道国内有多少网站做到了,听说淘宝做到了(呵呵)。RememberEverythingFails故障检测和回滚这个现在很多网站都做,不过ebay做地比较牛,ebay差不多每天有2TB的日志,通过监控事件作出有效的判断和预警,淘宝也做得很好。eBay的应对策略为:异常后发消息、接收者获取消息警报、按功能实现降级,保障核心功能的可用性,涉及的技术有:消息中间件、如何实现按功能降级。EmbraceInconsistency其实这个有点象我们整天说的“拥抱变化”。在系统中如果事务过多,极大影响性能,特别是分布式事务,如果一味追求一致性会严重性能,ebay的做法是过程不一致,最终一致。涉及的技术有:消息中间件、CAP(Consistency一致性;Availability可用性;ToleranceofnetworkPartition分区容忍性(可理解为部分节点故障或节点之间连接故障下系统仍可正常工作))等 Expect(R)evolution这里eBay讲到的主要是如何更好的应对变化,这包括了功能演变、架构演变,eBay的应对策略为:灵活的schema、可插拔的处理流程以及增量的系统发布,这方面的技术还是相当复杂的,eBay采用的是:配置化处理流程、系统发布过程支持多版本共存。DependenciesMatter这点随着分布式的应用和异步的应用,以及功能的不断增加后,就会变得比较明显,eBay也是如此。他们的应对策略:服务拓扑管理、设计上的控制(只允许依赖…)、客户端承担责任。说到这点,不得不说下,客户端承担责任这点其实真的很重要,现在很多架构都喜欢放在服务端上解决N多问题,但很多场合确实有必要放到客户端去做,当然,这也会带来一些问题,例如升级等。总结:在大规模,高并发系统的设计中,最常用的技术就是分层和缓存,把一个业务流程垂直分解成几个系统,每个系统提供不同类型的服务,一个业务流程通过不同的服务组装起来,这就是SOA设计的思路吧。每个系统可以进行水平集群,提供无状态的服务,可以水平无线扩展,数据库层面,主要就是用到垂直分库,水平分库,读写分离,热备份等技术,提高数据库的读写能力。在应用层可以考虑使用集中式缓存或者分布式缓存来减少数据库的访问压力。

    • 建站经验
    • 81阅读
    • 2022-04-28

站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。