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

eBay的网站架构有哪些技术特点

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

eBay的网站架构有哪些技术特点

本篇内容介绍了“eBay的网站架构有哪些技术特点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

eaby技术架构变迁

ebay的系统架构的变迁主要经历了4个阶段,下面一幅图展现了ebay系统架构变迁的时间表

在ebay的V1版本,ebay采用的是FREEBSD + APACHE + PERL +DGBM,这是一个比较原始的模型,而且相对比较简单,操作系统,应用服务器,web服务器 以及 数据库服务器都是在同一台机器中,网络结构在物理上只有一层。整个网站有四个域名,每个域名对应不同的应用,每组应用对应一台服务器。
eBay的网站架构有哪些技术特点

图表 1 ebayV1系统架构
随着业务量以及访问量的不断上升,ebay在1999年开始对架构进行升级,技术架构发生了较大的变化,这期间主要是从1999-2004年,而架构的版本号则从V2.0到V2.5 ,下面我们来看看Ebay V2.0技术架构
eBay的网站架构有哪些技术特点

V2.0
开始采用ORACLE服务器,数据库服务器和web服务器分开,数据库独立部署到一台新的机器上面

程序逻辑上面已经开始分层,也就是我们常说的mvc3层结构:显示层、业务逻辑层、数据访问层,而在物理上面还是两层结构 web服务器 以及 数据库服务器

编程语言采用C++,那个时候java刚兴起,估计也没有其他好的语言选择了。

V2.1
每组应用对应多台服务器,而多台服务器组成一个 servler pool(服务池),通过一个负载均衡服务器来分别转发请求到不同的服务器

数据库部署到性能更加好的服务器上面

V2.2
增加了一台数据库服务器作为 备份服务器,防止失败

V2.3
这个版本只是对每个应用增加了更多的服务器,不断的进行server pool

V2.4
这个版本最大且最重要的改变就是对数据库进行垂直拆分,即把数据库按照不同的功能模块进行划分,例如交易库,会员库,帐务库

V2.5
这个版本在2.4的版本上面,对部分数据库进行读写分离,同时对Item(物品条目)数据库进行水平拆分,把Items按照不同的Categoty分配到不同的Categoty商品库里面,,这样大大的扩展了对Items数据库的访问性能。
eBay的网站架构有哪些技术特点

图表 2 ebayV2系统架构

从上可以看出ebay V2的架构变迁,主要是通过服务器的添加,数据库的垂直拆分以及水平拆分,数据库的读写分离操作 来提高整个网站的性能。在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之间是不会依赖的,同时还会提供common domain 提供各个 domain之间的交互以及依赖,见下图:
eBay的网站架构有哪些技术特点

由于ebay的数据库按照逻辑划分了很多不同的字库,那么ebay必须提供透明的访问数据库的能力,举个例子:ebay把Items按照categoray分成了很多sub items库,假如需要查询出来某一个用户所购买的所有Items,那么必须要查询所有的sub items库,把数据库组合出来,那么DAL层必须屏蔽数据库的物理结构,一次性的把所有的sub items库中对应的数据查询出来。而这个访问,对应用来说是透明的。应用不需要关注到底items有多少个子库。
eBay的网站架构有哪些技术特点

ebay的架构特点:
Partition Everything

当一个网站刚开始时,可能一天只有几十个人访问,或者几百个,可能一台普通的服务器就足够了,db和应用统统都可以放在一起,可是随着用户的增加,业务的增加,一台服务器远远不够了,就自然想增加服务器,系统应该跟随改变。多一台服务器,也就减轻了一台压力。这样就出现了分割业务和分割数据。

其实要做到恰到好处,也非常不容易,ebay按照业务功能水平划分应用,水平划分数据库。这个在国内好多网站都是这样做,不足为奇了,不过水平划分功能后,单个功能应用的分割也大有文章可做。怎么划分,很早以前ebay的架构文档说到这个事情。

在水平按照业务划分数据库后可以再根据一定的规则划分表数,其中规则有很多,可以按照主要业务生产者为引导进行分割,所有数据跟随生产者一起,至于什么规则可以各抒己见。

Asynchrony Everywhere

同步应用会带来强耦合,可用性保障差,特别是在用户体验方面极度失败,试想一个网站首页要获取那么多业务信息如果同步的话会流失很大一部份用户,如果再加上网络慢,等到蚊子都睡觉了,人哪里还有时间看,其实分布式系统应该尽量使用异步处理。

EBay的应对策略为:事件驱动和pipeline、多播消息,涉及的技术为:消息中间件(无序、至少一次到达)、基于SRM技术的可靠多播。

Automate Everything

配置信息的动态化,涉及的技术:配置发布/订阅机制的实现、机器学习。这个超级牛,不知道国内有多少网站做到了,听说淘宝做到了(呵呵)。

Remember Everything Fails

故障检测和回滚

这个现在很多网站都做,不过ebay做地比较牛,ebay差不多每天有2TB 的日志,通过监控事件作出有效的判断和预警,淘宝也做得很好。

eBay的应对策略为:异常后发消息、接收者获取消息警报、按功能实现降级,保障核心功能的可用性,涉及的技术有:消息中间件、如何实现按功能降级。

Embrace Inconsistency

其实这个有点象我们整天说的“拥抱变化”。在系统中如果事务过多,极大影响性能,特别是分布式事务,如果一味追求一致性会严重性能,ebay的做法是过程不一致,最终一致。涉及的技术有:消息中间件、CAP(Consistency 一致性;Availability 可用性; Tolerance of network Partition 分区容忍性(可理解为部分节点故障或节点之间连接故障下系统仍可正常工作))等

 Expect (R)evolution

这里eBay讲到的主要是如何更好的应对变化,这包括了功能演变、架构演变,eBay的应对策略为:灵活的schema、可插拔的处理流程以及增量的系统发布,这方面的技术还是相当复杂的,eBay采用的是:配置化处理流程、系统发布过程支持多版本共存。

Dependencies Matter

这点随着分布式的应用和异步的应用,以及功能的不断增加后,就会变得比较明显,eBay也是如此。

他们的应对策略:服务拓扑管理、设计上的控制(只允许依赖…)、客户端承担责任。

说到这点,不得不说下,客户端承担责任这点其实真的很重要,现在很多架构都喜欢放在服务端上解决N多问题,但很多场合确实有必要放到客户端去做,当然,这也会带来一些问题,例如升级等。

“eBay的网站架构有哪些技术特点”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

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

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

eBay的网站架构有哪些技术特点

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

下载Word文档

猜你喜欢

eBay的网站架构有哪些技术特点

本篇内容介绍了“eBay的网站架构有哪些技术特点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!eaby技术架构变迁ebay的系统架构的变迁主
2023-06-10

MatrixOne构架有哪些特点

MatrixOne架构具有以下特点:1. 高度灵活:MatrixOne架构可以根据不同的业务需求和组织结构进行灵活的定制和扩展。它支持多层次的组织架构和复杂的业务流程,并能够自动适应变化和增长。2. 统一的数据模型:MatrixOne架构采
2023-09-26

c#中wcf架构的特点有哪些

分布式计算:WCF是一个分布式计算框架,可以在不同的计算机上运行不同的服务,并且可以通过网络进行通信。基于标准:WCF基于开放标准,如SOAP,XML,HTTP等,可以与其他平台和语言进行交互。灵活性:WCF提供了丰富的配置选项,可以根据需
c#中wcf架构的特点有哪些
2024-03-02

网站所固有的特点有哪些

本篇内容介绍了“网站所固有的特点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  优点一、网站上可以实现即时聊天功能。  有很多的网站
2023-06-10

JavaWeb网站技术架构是怎样的

这期内容当中小编将会给大家带来有关JavaWeb网站技术架构是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

2023-06-05

Aurora数据库的架构特点有哪些

分布式架构:Aurora数据库采用了分布式共享存储架构,数据被分散存储在多个节点上,使得数据库能够应对高并发和大规模数据的需求。多副本机制:Aurora数据库支持数据的多副本存储,确保数据的高可靠性和可用性。当某个节点发生故障时,系统可以自
Aurora数据库的架构特点有哪些
2024-04-09

云服务器技术有哪些特点

云服务器(CloudStorage)是一种使用虚拟化技术将计算资源和存储资源分布在多个地方的服务器集群,它的优势在于可以为用户提供弹性的云数据中心资源,以提高资源的利用率和灵活性,从而提升云计算服务的性能和可靠性。云服务器的特点如下:弹性扩展:云服务器可以根据用户的应用和数据量实时扩展计算能力和存储空间,从而满足用户的需求,提高资源利用率。高可用性:云服务器可以在发生故障的时候自动切换到
2023-10-26

个人架设网站需要哪些技术

个人架设网站需要以下技术:1. 前端开发技术:HTML、CSS、JavaScript等。2. 后端开发技术:PHP、Python、Node.js、Ruby等。3. 数据库技术:MySQL、MongoDB等。4. Web服务器:Apache、
2023-06-06

asp网站空间有哪些特点

ASP网站空间是一种基于Windows操作系统和IIS服务器的Web空间,其主要特点包括:1、支持ASP技术ASP网站空间支持ASP(Active Server Pages)技术,可以使用ASP语言编写动态网页和Web应用程序。2、支持.N
2023-05-14

Flex富客户端技术的特点有哪些

这篇文章主要为大家展示了“Flex富客户端技术的特点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex富客户端技术的特点有哪些”这篇文章吧。Flex技术分析与以往纯B/S技术不同,Fl
2023-06-17

网站建站技术及工具有哪些

1. HTML/CSS/JavaScript:网站建设的基本技术,前端开发的必备技能。2. CMS(内容管理系统):如WordPress、Joomla、Drupal等,可以快速搭建一个功能齐全的网站。3. Bootstrap:前端框架,提供
2023-06-04

数据库探针技术有哪些特点

1. 高效性:探针技术可以高效地监控和分析数据库的运行情况,提供实时的性能数据和统计信息。2. 精确性:探针技术可以提供非常精确的性能数据和统计信息,可以帮助管理员快速定位数据库性能问题的根本原因。3. 可扩展性:探针技术可以根据需要进行扩
2023-06-13

云服务器技术有哪些特点呢

云服务器(CloudStorage)是一种用于存储和共享数据的服务器技术,其特点包括:快速、高效、弹性和可靠性。快速:云服务提供商通常以分钟、小时或天为单位来提供服务,使得企业可以在几分钟内部署、迁移或停止资源。这种快速的服务使得企业不必等待大规模的基础设施更新以支持新的数据。高效:云服务提供商通常使用自动化工具来监控和管理资源,以便在资源使用完毕或发生故障时进行更快速的调整或处理。自动化工
2023-10-26

css的框架有哪些,有哪些特点

css 框架提供预先构建的 css 样式规则,用于快速、一致地设计网站和应用程序,节省了开发时间并确保跨浏览器一致性。流行的 css 框架包括:bootstrap:响应式,组件库丰富,易于使用和定制。foundation:可定制性强,灵活,
css的框架有哪些,有哪些特点
2024-04-25

java架构师必须掌握的技术有哪些

这篇文章主要介绍“java架构师必须掌握的技术有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java架构师必须掌握的技术有哪些”文章能帮助大家解决问题。一、前言一个成熟的大型网站(如淘宝、京东
2023-06-05

编程热搜

  • 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动态编译

目录