首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

扩展性扩展性最佳实践:来自eBay的经验教训

在eBay,我们每天都在争论的主要架构力量之一是扩展性。它为我们制定的每一个架构和设计决策着色和推动。...销售功能由一组应用程序服务器提供,竞标功能由另一组应用程序服务器提供,另一组应用程序服务器进行搜索。总的来说,我们将大约16,000个应用服务器组织到220个不同的池中。...然而,无论分区方案的细节如何,一般的想法是支持数据分区和重新分区的基础设施将比不支持分区和重新分区的基础设施更具扩展性。...操作系统抽象硬件。许多现代语言中的虚拟机抽象了操作系统。对象关系映射层抽象数据库。负载平衡器和虚拟IP抽象网络端点。...总结 伸缩性有时被称为“非功能性需求”,暗示它与功能无关,并强烈暗示它不那么重要。没有东西会离事实很远。相反,我想说,扩展性是功能的先决条件 - 一个“优先级为0”的要求,如果有的话。

70040

拥抱变化—— 扩展性杂谈

本文不想探讨敏捷方面的知识,如何去拥抱变化,而是想要探讨程序的扩展性,如何在编码过程中,以最小的代价来应对程序未来的变化。 关于扩展性, 其本身就是一个多方面的概念集合 。...有人说程序的扩展性必须建立在对未来需求的准确把握上,也有人说程序的扩展性必须建立在能够对需求变化快速响应上。...可以从两个纬度对扩展性进行讨论,一是设计扩展性,二是编码扩展性,前者从宏观上考虑,后者从微观上考虑,当然编码也是一种设计活动。...本文重点论述编码的扩展性,对于设计扩展性,是一个系统性工程,由于作者还没有达到那个高度和境界,所以不敢瞎写,本文基本上不做介绍。...关于设计扩展性, 对于系统架构师或者系统工程师不仅仅要考虑在实现用户需求的基础上如何构建系统,还要考虑计算资源的扩展、应用规模的扩展,以及对技术换代的扩展和性能等。

83610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NoSQL和数据扩展性

    扩展数据架构 扩展数据架构已发展用于提高整体系统效率并降低运营成本。 具体的NoSQL数据库可能具有不同的拓扑要求,但通用架构是相同的。 ?...一系列一致性选项,而不仅仅是与关系数据库ACID的一致性 高可用性,一些具有分区容忍(Cassandra)和一些具有ACID一致性(ArangoDB) 商品硬件上的水平扩展性...第二,它们可在商品硬件上进行水平扩展 - 即非常大的数据集不需要非常强大且非常昂贵的单个计算机。...相反,您可以使用多个小型计算机服务器,甚至更好地扩展到像亚马逊Web服务(AWS)这样的虚拟化云基础架构。 我汇集了几个数据点来说明权衡。 已经包含关系数据库用于比较。...一些NoSQL数据库可用作云端友好的即可使用的DBaaS。

    12.2K60

    影响JavaScript应用扩展性因素

    从另一方面讲,JavaScript 应用并非天生成熟的扩展应用,而是逐步积累、进化成的扩展应用。对于JavaScript 开发人员来说, “扩展性的影响因素”是一个有效的工具。...我们不希望一开始就过度设计,更不希望被早期设计绑住手脚,限制了扩展性。 对扩展的需要 扩展软件是一种基于反应的活动。考虑扩展性的影响因素可以帮助我们积极地做出准备。...例如,激增的用户请求导致负载骤增,这时负载均衡器介入,将负载均匀地分派到后端服务器。在某些极端情况下,系统可能会在需要时自动准备新的后端资源来应对变化,当不再需要时将这些资源自动销毁。...JavaScript应用的独特一面在于,浏览器能获得的硬件资源就是它能使用的全部硬件资源,它从后端获取的数据可以很好地按比例增长,但这不是我们需要考虑的。...随着软件的不断演进,我们要想成功做点什么,就必须关注“扩展性的影响因素”。 上图自上而下地展示了扩展性的影响因素。

    37620

    架构设计之高扩展性

    扩展性表示可通过加机器线性提高系统处理能力,承担更高流量和并发。 由于峰值的流量不可控,不可能在系统架构设计初期就考虑好机器数量以支持并发。...高扩展性设计 拆分,把庞杂系统拆分成独立、单一职责的模块。 注意对不同类型模块,拆分原则不同。假如设计一个知乎,那么会有几个模块呢?至少5个模块。...部署方式遵照最简单三层部署架构 负载均衡负责请求的分发 应用服务器负责业务逻辑的处理 数据库负责数据的存储落地 所有模块的业务代码混合,数据也都存在一个库。...业务拆分一定程度提升了系统扩展性,但运行久后,单一业务DB在容量和并发请求量上仍会超过单机限制。需针对DB做二次拆分。...总结 未做拆分的系统虽然扩展性不强,但简单,无论开发、运维都无需很大精力。

    57020

    扩展性系统的设计

    架构设计的高扩展性表示可通过加机器线性提高系统处理能力,承担更高流量和并发。 由于峰值的流量不可控,不可能在系统架构设计初期就考虑好机器数量以支持并发。...高扩展性设计 拆分,把庞杂系统拆分成独立、单一职责的模块。 注意对不同类型模块,拆分原则不同。假如设计一个知乎,那么会有几个模块呢?至少5个模块。...部署方式遵照最简单三层部署架构 负载均衡负责请求的分发 应用服务器负责业务逻辑的处理 数据库负责数据的存储落地 所有模块的业务代码混合,数据也都存在一个库。...业务拆分一定程度提升了系统扩展性,但运行久后,单一业务DB在容量和并发请求量上仍会超过单机限制。需针对DB做二次拆分。...总结 未做拆分的系统虽然扩展性不强,但简单,无论开发、运维都无需很大精力。

    98310

    浅析SAP Subscription Billing扩展性

    通常来说,任意一个标准产品都不可能满足所有客户的实际需求;因此,随着客户越来越多,产品的扩展性显着尤其重要。这篇文章简单介绍一下Subscription Billing的扩展性功能。...1 总体来讲,Subscription Billing的扩展性可分为两个方面:字段扩展和流程扩展。 字段扩展,通过Custom References实现。...流程扩展,就是在一个标准流程执行过程中提供一些扩展点,客户可以通过这些扩展点实现一些自定义逻辑。...关于SAP Subscription Billing扩展性的具体细节,大家可以参考SAP官方help document。...Java里面继承的关键字extend,其名词形式就是extensibility,中文翻译就是扩展性。所以,猜想Java语言的设计者们在设计Java语言的时候,认为继承就是一种扩展形式。

    87620

    扩展性系统的设计

    仓库,欢迎Star/fork: Java-Interview-Tutorial https://github.com/Wasabi1234/Java-Interview-Tutorial 架构设计的高扩展性表示可通过加机器线性提高系统处理能力...高扩展性设计 拆分,把庞杂系统拆分成独立、单一职责的模块。 注意对不同类型模块,拆分原则不同。假如设计一个知乎,那么会有几个模块呢?至少5个模块。...部署方式遵照最简单三层部署架构 负载均衡负责请求的分发 应用服务器负责业务逻辑的处理 数据库负责数据的存储落地 所有模块的业务代码混合,数据也都存在一个库。...存储层的扩展性 无论是存储数据量,还是并发访问量,不同业务模块间量级相差很大。 比如知乎,关系数据量远大于用户数据量,但用户数据的访问量却远比关系数据大。...总结 未做拆分的系统虽然扩展性不强,但简单,无论开发、运维都无需很大精力。

    69422

    3种方式提升云扩展性

    在亚马逊云服务中部署被盛赞为是一个很好的方式来实现高扩展性并且你只需要支付你所使用的云计算机性能即可。那么,如何从这项技术中获得最佳的扩展性呢? 1....当超过阈值时,AWS将启动你的Web服务器的新实例,并自动将其置于负载均衡器池中。一旦流量低于最低阈值,亚马逊将从负载均衡器池中为你移除一台服务器。...在这种配置中,MySQL将把所有已完成的事务发送到集群中的其他服务器。你的被动服务器也可以处理你的应用程序的读取流量。...在实现高可用性的同时,你也可以通过将大部分的SELECT操作流量发送到另一个服务器来获得扩展性。...当你将那个活动的root volume附加上去,新的更大的EC2实例将是你原来的服务器,也就是你的服务器就地扩大了!

    3.2K70

    扩展性】谷歌扩展和弹性应用的模式

    扩展性:调整容量以满足需求 扩展性是衡量系统通过在系统中添加或删除资源来处理不同数量的工作的能力。...驱动因素和制约因素 提高应用程序的扩展性和弹性有不同的要求和动机。也可能存在限制您实现扩展性和弹性目标的能力的限制。...约束 约束可能会限制您提高应用程序的扩展性和弹性的能力。确保您的设计决策不会引入或促成这些约束: 对难以扩展的硬件或软件的依赖。 对在高可用性配置中难以操作的硬件或软件的依赖。...该模型促进了扩展性和可恢复性,因为这意味着服务可以增长、缩小或重新启动,而不会丢失处理任何正在进行的进程或请求所需的数据。...缓存通过减少对基于磁盘的存储的依赖来支持改进的扩展性。由于可以从内存中处理请求,因此减少了到存储层的请求延迟,通常允许您的服务处理更多请求。

    1.7K20

    系统架构设计(3)-扩展性

    扩展性,描述系统应对负载增加的能力。它不是衡量一个系统的一维指标, 谈论“系统X是扩展 ”或“不扩展”无太大意义。...相反,讨论扩展性通常得考虑:“若系统以某种方式增长,应对措施有啥”, “该如何添加计算资源来处理额外的负载” 3.1 描述负载 先得简洁描述系统当前的负载,才能更好讨论后续的增长问题(例如负载加倍,意味啥...所以,为了测试系统的扩展性而人为地产生负载时,负载生成端要独立于响应时间来持续 发送请求。若客户端在发送请求之前总是等待先前请求的完成,就会在测试中人为缩短服务器端的累计队列深度,带来测试偏差。...3.3 应对负载增加的方案 现在真正讨论扩展性了,当负载参数增加时, 如何继续保持良好性能呢。 实践中的百分位数 后台服务,若一次完整的服务包含多次请求调用,此时高百分位数指标尤为重要。...好架构通常要做取舍,例如,使用几个强悍服务器仍可以比大量小型虚拟机来得更简单、便宜。

    95520

    【MySQL】扩展性基本原则

    概念 扩展( Scalable ):表明数据库系统在通过相应升级(包括增加单机处理能力或者增加服务器数量)之后,能够达到提供更强的服务能力,提供更强处理能力 扩展性(Scalability):指一个数据库系统通过相应的升级之后所带来处理能力提升的难易程度...Out):通过增加处理节点的方式来提高整体处理能力,简单来说就是通过增加机器来增加整体的处理能力 纵向扩展(Scale Up):通过增加当前处理节点的处理能力来提高整体的处理能力,简单来说就是通过升级现有服务器的配置...就是应用系统通过相关的技术实现,让整个系统在满足用户使用的基础上,允许 数据短时间内处于非实时状态,而通过后续技术来保证数据在最终保证处于一致状态 原则三: 高可用及数据安全 1.系统横向扩展设计后,扩展性提高...,整体性能得到改善,但是可维护性变得更加困难,系统监控更难; 2.不论如何调整设计系统的架构,系统的整体可用性不能被降低; 3.必须保证在出现软/硬件故障的时候,能够保证数据不会出现丢失; ---- 确保高可用及数据安全原则

    1.3K20

    聊聊分布式的扩展性

    总会有一个leader,当服务器的数量增加的时候,业务增加的时候,总会进行相关的扩容或者缩容,那么这个团队的扩展性如何? 增加了更多的事儿,leader是否能抗住?是否能分配所有的任务?...你是分布式就扩展性好了?未必吧。。。 那么扩展性从哪几个方面来进行考虑呢?...那么内存是否就成了扩展性的瓶颈。。。...在减少master的压力上面,还可以使用权限下放的策略,例如在需要写入数据的时候,可以直接在客户端进行缓存元数据信息,然后直接写入到存储节点的服务器上,从而可以减少访问master的次数。...总结 扩展性。。。不是说说而已,不是分布在几台机器上就是扩展了,增加一个节点,需要同步多少数据?一个节点永久性宕机,需要多少时间来进行故障恢复?故障恢复时间也是一个很好的度量范围。

    1.6K40

    对业务系统的扩展性设计思考

    在一个业务系统本身进行集群化部署的情况下,这些配置信息是不适合放到中间件服务器的配置文件里面的,持久化到数据库表里面反而是一个好的选择。 再次,对于数据库单表容量的扩展本身也是重点要考虑的问题。...业务系统扩展总结 最后再简单总结下一个应用系统的扩展设计。 其一,扩展设计涉及到数据库,应用层,业务规则逻辑,界面层的多处扩展性。...必须要各个分层,各个点上都考虑到扩展性,往往才能够完成一个完整的扩展性设计需求。...其二,扩展性设计一方面是解决的业务系统并发量增加后的扩展能力,一个方面重点是解决的业务需求变更的时候系统本身的适应变化度。...在扩展性设计中最好的就是尽量不要涉及到重新编译和版本部署。 其三,扩展性设计往往会牺牲性能,因此也不能过度的使用扩展性和冗余设计,导致整体应用架构性能出现明显下降。

    1.1K20
    领券