
架构师
文章平均质量分 91
源码头
稀有源码资源提供者
展开
-
如何设计一个秒杀系统08-答疑解惑:缓存失效的策略应该怎么定?
但是我前面也说了,整个请求的处理涉及很多服务调用也涉及很多其他的系统,也会有部分的处理需要排队,所以可能有部分先到的请求由于后面的一些排队的服务拖慢,导致最终整个请求处理完成的时间反而比较后面的请求慢的情况。因为要保证数据的一致性。再比如说,正常整个网站上每秒只有几万个请求,这几万个请求可能是非常分散的,那么假如现在有一个秒杀商品,这个秒杀商品带来的瞬间请求一下子就打满了我们的服务器资源,这样就会导致那些正常的几万个请求得不到正常的服务,这个情况对系统来说是绝对不合理的,也是应该避免的。原创 2023-05-19 07:55:25 · 148 阅读 · 0 评论 -
如何设计一个秒杀系统06-秒杀系统“减库存”设计的核心逻辑
今天,我围绕商品减库存的场景,介绍了减库存的三种实现方案,以及分别存在的问题和可能的缓解办法。最后,我又聚焦秒杀这个场景说了如何实现减库存,以及在这个场景下做到极致优化的一些思路。当然减库存还有很多细节问题,例如预扣的库存超时后如何进行库存回补,再比如目前都是第三方支付,如何在付款时保证减库存和成功付款时的状态一致性,这些都是很大的挑战。如果你也有实现减库存的经验或者问题,欢迎留言与我分享。原创 2023-05-18 09:44:18 · 460 阅读 · 0 评论 -
如何设计一个秒杀系统05-影响性能的因素有哪些?又该如何提高系统的性能?
性能优化的过程首先要从发现短板开始,除了我今天介绍的一些优化措施外,你还可以在减少数据、数据分级(动静分离),以及减少中间环节、增加预处理等这些环节上做优化。首先是“发现短板”,比如考虑以下因素的一些限制:光速(光速:C = 30万千米/秒;原创 2023-05-18 09:44:21 · 115 阅读 · 0 评论 -
如何设计一个秒杀系统04-流量削峰这事应该怎么做?
今天,我介绍了如何在网站面临大流量冲击时进行请求的削峰,并主要介绍了削峰的3种处理方式:一个是通过队列来缓冲请求,即控制请求的发出;一个是通过答题来延长请求发出的时间,在请求发出后承接请求时进行控制,最后再对不符合条件的请求进行过滤;最后一种是对请求进行分层过滤。其中,队列缓冲方式更加通用,它适用于内部上下游系统之间调用请求不平缓的场景,由于内部系统的服务质量要求不能随意丢弃请求,所以使用消息队列能起到很好的削峰和缓冲作用。原创 2023-05-18 09:38:52 · 401 阅读 · 0 评论 -
如何设计一个秒杀系统03-二八原则:有针对性地处理好系统的“热点数据”
热点分为热点操作和热点数据。所谓“热点操作”,例如大量的刷新页面、大量的添加购物车、双十一零点大量的下单等都属于此类操作。对系统来说,这些操作可以抽象为“读请求”和“写请求”,这两种热点请求的处理方式大相径庭,读请求的优化空间要大一些,而写请求的瓶颈一般都在存储层,优化的思路就是根据CAP理论做平衡,这个内容我在“减库存”一文再详细介绍。而“热点数据”比较好理解,那就是用户的热点请求对应的数据。而热点数据又分为“静态热点数据”和“动态热点数据”。所谓“静态热点数据”,就是能够提前预测的热点数据。原创 2023-05-18 09:36:59 · 168 阅读 · 0 评论 -
如何设计一个秒杀系统02-如何才能做好动静分离?有哪些方案可选?
今天,我主要介绍了实现动静分离的几种思路,并由易到难给出了几种架构方案,以及它们各自的优缺点。可以看到,不同的架构方案会引入不同的问题,比如我们把缓存数据从CDN上移到用户的浏览器里,针对秒杀这个场景是没问题的,但针对一般的商品可否也这样做呢?你可能会问,存储在浏览器或CDN上,有多大区别?我的回答是:区别很大!因为在CDN上,我们可以做主动失效,而在用户的浏览器里就更不可控,如果用户不主动刷新的话,你很难主动地把消息推送给用户的浏览器。原创 2023-05-18 09:36:01 · 206 阅读 · 0 评论 -
如何设计一个秒杀系统01-设计秒杀系统时应该注意的5个架构原则
来让我们回顾下前面的内容,我首先介绍了构建大并发、高性能、高可用系统中几种通用的优化思路,并抽象总结为“4要1不要”原则,也就是:数据要尽量少、请求数要尽量少、路径要尽量短、依赖要尽量少,以及不要有单点。当然,这几点是你要努力的方向,具体操作时还是要密切结合实际的场景和具体条件来进行。然后,我给出了实际构建秒杀系统时,根据不同级别的流量,由简单到复杂打造的几种系统架构,希望能供你参考。原创 2023-05-18 09:33:12 · 165 阅读 · 0 评论 -
从0开始学架构51-如何画出优秀的软件系统架构图?
其实,很多人之所以画不好架构图,最大的痛点就是不好把握到底要画哪些内容,画得太少担心没有展现关键信息,画得太多又觉得把握不住重点。所以现在的问题变成了:应该按照什么样的标准来明确架构图要展现的内容呢?答案就是我在第1讲中介绍的4R架构定义。软件架构指软件系统的顶层(Rank)结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。4R是指4个关键词:Rank,Role,Relation和Rule。第一步,明确Rank。原创 2023-05-18 09:31:13 · 2118 阅读 · 1 评论 -
从0开始学架构50-架构实战:架构设计文档模板
在前面的专栏里,有同学留言说想看看具体的架构设计文档。由于信息安全的原因,再加上稍微复杂的系统,设计文档都是几十页,因此专栏无法直接给出详细的文档案例。但我认为提供一个架构设计文档模板还是很有必要的,可以方便你在实际进行架构设计的时候更好地编写相关文档。我还以前面讲过的“前浪微博”消息队列为例,给出架构设计中最重要的两个文档的模板和关键说明。这个案例文档仅给出一些关键内容供你参考,部分细节无法全面覆盖或者完全保证正确。原创 2023-05-18 09:23:33 · 382 阅读 · 0 评论 -
从0开始学架构49-谈谈App架构的演进
专栏截止到上一期,架构设计相关的理念、技术、实践已经基本讲完,相信你一路学习过来会有一种感觉,这些内容主要都是讲后端系统的架构设计,例如存储高可用、微服务、异地多活等,都是后端系统才会涉及。事实上确实也是如此,通常情况下我们讲架构设计,主要聚焦在后端系统,但这并不意味着App、前端就没有架构设计了,专栏所讲述的整套架构设计理念,虽然是来源于我的后端设计经验,但一旦形成完善的技术理论后,同样适应于App和前端。复习完我们就可以进入今天的正题,我来谈谈App架构的演进,以及上面这些架构设计关键点是如何体现的。原创 2023-05-18 09:23:38 · 130 阅读 · 0 评论 -
从0开始学架构48-再谈开源项目:如何选择、使用以及二次开发?
我在专栏特别放送第3期谈了如何高效地学习开源项目,主要聊了我在学习开源项目的一些看法和步骤。今天我们再聊开源项目,谈谈如何选择、使用以及二次开发。软件开发领域有一个流行的原则:DRY,Don’t repeat yourself。翻译过来更通俗易懂:。开源项目的主要目的是共享,其实就是为了让大家不要重复造轮子,尤其是在互联网这样一个快速发展的领域,速度就是生命,引入开源项目可以节省大量的人力和时间,大大加快业务的发展速度,何乐而不为呢?原创 2023-05-18 09:14:11 · 284 阅读 · 0 评论 -
从0开始学架构47-架构重构内功心法第三式:运筹帷幄
在前面的架构重构内功心法“”和“”中,我提到架构师需要从一大堆问题中识别关键的复杂度问题,然后有的放矢地通过架构重构来解决。但是通常情况下,需要架构重构的系统,基本上都是因为各种历史原因和历史问题没有及时处理,遗留下来逐渐积累,然后到了一个临界点,各种问题开始互相作用,集中爆发!到了真正要开始重构的时候,架构师识别出系统关键的复杂度问题后,如果只针对这个复杂度问题进行架构重构,可能会发现还是无法落地,因为很多条件不具备或者有的问题没解决的情况下就是不能做架构重构。原创 2023-05-17 10:24:37 · 95 阅读 · 0 评论 -
从0开始学架构46-架构重构内功心法第二式:合纵连横
技术人员说:我们系统设计不合理,A业务和B业务耦合!原创 2023-05-17 10:23:41 · 86 阅读 · 0 评论 -
从0开始学架构45-架构重构内功心法第一式:有的放矢
在 专栏第8期架构设计三原则”中的演化原则部分,我提到了系统的架构是不断演化的,少部分架构演化可能需要推倒重来进行重写,但绝大部分的架构演化都是通过架构重构来实现的。架构重构时,业务已经上线运行了,重构既需要尽量保证业务继续往前发展,又要完成架构调整,这就好比“给飞行中的波音747换引擎”;而如果是新设计架构,业务还没有上线,则即使做砸了对业务也不会有太大影响。原创 2023-05-17 10:23:10 · 90 阅读 · 0 评论 -
从0开始学架构44-互联网架构模板:“平台”技术
当业务规模比较小、系统复杂度不高时,运维、测试、数据分析、管理等支撑功能主要由各系统或者团队独立完成。随着业务规模越来越大,系统复杂度越来越高,子系统数量越来越多,如果继续采取各自为政的方式来实现这些支撑功能,会发现重复工作非常多。因此我们自然而然就会想到将这些支撑功能做成平台,避免重复造轮子,减少不规范带来的沟通和协作成本。今天,我就来聊聊互联网架构模板的“平台”技术。由于每个平台本身都是一个庞大的体系,专栏只是介绍一下平台的核心职责和关键设计点,具体细节就不详细展开了。原创 2023-05-17 10:20:40 · 146 阅读 · 0 评论 -
从0开始学架构43-互联网架构模板:“用户层”和“业务层”技术
上一期,我从计算机网络层的角度谈了应对“高性能”和“高可用”的整体架构设计。今天,我将从“用户层”和“业务层”的角度谈谈常见的应用场景和关键技术。原创 2023-05-17 10:17:52 · 266 阅读 · 0 评论 -
从0开始学架构42-互联网架构模板:“网络层”技术
除了复杂度,互联网业务发展的另外两个关键特点是“高性能”和“高可用”。通常情况下,我们在设计高可用和高性能系统的时候,主要关注点在系统本身的复杂度,然后通过各种手段来实现高可用和高性能的要求,例如我前面介绍的计算高性能架构模式、存储高可用架构模式等。但是当我们站在一个公司的的角度来思考架构的时候,单个系统的高可用和高性能并不等于整体业务的高可用和高性能,互联网业务的高性能和高可用需要从更高的角度去设计,这个高点就是“网络”,所以我将相关措施统一划归为“网络层”。原创 2023-05-17 09:53:29 · 145 阅读 · 0 评论 -
从0开始学架构41-互联网架构模板:“开发层”和“服务层”技术
上一期,我介绍了互联网架构模板中的存储层技术。关于这部分内容,我将逐层介绍每个技术点的产生背景、应用场景和关键技术,希望让你可以对整体的技术架构有一个全貌认知。今天我们来聊聊互联网架构模板的“开发层”和“服务层”技术。原创 2023-05-17 09:35:46 · 170 阅读 · 0 评论 -
从0开始学架构40-互联网架构模板:“存储层”技术
很多人对于BAT的技术有一种莫名的崇拜感,觉得只有天才才能做出这样的系统,但经过前面对架构的本质、架构的设计原则、架构的设计模式、架构演进等多方位的探讨和阐述,你可以看到,其实并没有什么神秘的力量和魔力融合在技术里面,而是业务的不断发展推动了技术的发展,这样一步一个脚印,持续几年甚至十几年的发展,才能达到当前技术复杂度和先进性。抛开BAT各自差异很大的业务,站在技术的角度来看,其实BAT的技术架构基本是一样的。再将视角放大,你会发现整个互联网行业的技术发展,最后都是殊途同归。原创 2023-05-17 09:34:41 · 87 阅读 · 0 评论 -
从0开始学架构39-互联网技术演进的模式
由于各行业的业务发展轨迹并不完全相同,无法给出一个统一的模板让所有的架构师拿来就套用,因此我以互联网的业务发展为案例,谈谈互联网技术演进的模式,其他行业可以参考分析方法对自己的行业进行分析。互联网业务千差万别,但由于它们具有“规模决定一切”的相同点,其发展路径也基本上是一致的。互联网业务发展一般分为几个时期:初创期、发展期、竞争期、成熟期。不同时期的差别主要体现在两个方面:。原创 2023-05-17 09:32:48 · 102 阅读 · 0 评论 -
从0开始学架构38-架构师应该如何判断技术演进的方向?
互联网的出现不但改变了普通人的生活方式,同时也促进了技术圈的快速发展和开放。在开源和分享两股力量的推动下,最近10多年的技术发展可以说是目不暇接,你方唱罢我登场,大的方面有大数据、云计算、人工智能等,细分的领域有NoSQL、Node.js、Docker容器化等。各个大公司也乐于将自己的技术分享出来,以此来提升自己的技术影响力,打造圈内技术口碑,从而形成强大的人才吸引力,典型的有,Google的大数据论文、淘宝的全链路压测、微信的红包高并发技术等。原创 2023-05-17 09:29:50 · 86 阅读 · 0 评论 -
从0开始学架构37-微内核架构详解
微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品(原文为product-based,指存在多个版本、需要下载安装才能使用,与web-based相对应)的应用。例如Eclipse这类IDE软件、UNIX这类操作系统、淘宝App这类客户端软件等,也有一些企业将自己的业务系统设计成微内核的架构,例如保险公司的保险核算逻辑系统,不同的保险品种可以将逻辑封装成插件。原创 2023-05-16 07:57:52 · 408 阅读 · 0 评论 -
从0开始学架构36-微服务架构最佳实践-基础设施篇
每项微服务基础设施都是一个平台、一个系统、一个解决方案,如果要自己实现,其过程和做业务系统类似,都需要经过需求分析、架构设计、开发、测试、部署上线等步骤,专栏里我来简单介绍一下每个基础设施的主要作用,更多详细设计你可以参考Spring Cloud的相关资料(下面进入今天的内容,微服务架构最佳实践的基础设施篇。原创 2023-05-16 07:56:02 · 112 阅读 · 0 评论 -
从0开始学架构35-微服务架构最佳实践-方法篇
专栏上一期,我谈了实施微服务需要避免踩的陷阱,简单提炼为:微服务拆分过细,过分强调“small”。微服务基础设施不健全,忽略了“automated”。微服务并不轻量级,规模大了后,“lightweight”不再适应。针对这些问题,今天我们看看微服务最佳实践应该如何去做。我会分两期介绍这部分内容,今天是微服务架构最佳实践的方法篇,下一期是基础设施篇。原创 2023-05-16 07:52:03 · 97 阅读 · 0 评论 -
从0开始学架构34-深入理解微服务架构:银弹or焦油坑?
微服务是近几年非常火热的架构设计理念,大部分人认为是Martin Fowler提出了微服务概念,但事实上微服务概念的历史要早得多,也不是Martin Fowler创造出来的,Martin只是将微服务进行了系统的阐述(原文链接:不过不能否认Martin在推动微服务起到的作用,微服务能火,Martin功不可没。微服务的定义相信你早已耳熟能详,参考维基百科,我就来简单梳理一下微服务的历史吧(原创 2023-05-16 07:52:04 · 155 阅读 · 0 评论 -
从0开始学架构33-传统的可扩展架构模式:分层架构和SOA
相比于高性能、高可用架构模式在最近几十年的迅猛发展来说,可扩展架构模式的发展可以说是步履蹒跚,最近几年火热的微服务模式算是可扩展模式发展历史中为数不多的亮点,但这也导致了现在谈可扩展的时候必谈微服务,甚至微服务架构都成了架构设计的银弹,高性能也用微服务、高可用也用微服务,很多时候这样的架构设计看起来高大上,实际上是大炮打蚊子,违背了架构设计的“合适原则”和“简单原则”。为了帮助你在实践中更好的进行可扩展架构设计,我将分别介绍几种可扩展架构模式,指出每种架构模式的关键点和优缺点。原创 2023-05-15 07:23:45 · 169 阅读 · 0 评论 -
从0开始学架构32-可扩展架构的基本思想和模式
软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构。例如,一颗CPU生产出来后装到一台PC机上,不会再返回工厂进行加工以增加新的功能;金字塔矗立千年历经风吹雨打,但其现在的结构和当时建成完工时的结构并无两样。相比之下,软件系统就完全相反,如果一个软件系统开发出来后,再也没有任何更新和调整,反而说明了这套软件系统没有发展、没有生命力。原创 2023-05-15 07:20:26 · 84 阅读 · 0 评论 -
从0开始学架构31-如何应对接口级的故障?
你好,我是华仔。前几讲我介绍了异地多活方案。它主要用来应对系统级的故障,例如机器宕机、机房故障和网络故障等问题。这些系统级的故障虽然影响很大,但发生概率较小。在实际业务运行过程中,还有另外一种故障影响可能没有那么大,但发生的概率较高,这就是今天我要跟你聊的接口级的故障。接口级故障的典型表现就是,系统并没有宕机、网络也没有中断,但业务却出现问题了,例如业务响应缓慢、大量访问超时和大量访问出现异常(给用户弹出提示“无法连接数据库”)。原创 2023-05-15 07:17:29 · 126 阅读 · 0 评论 -
从0开始学架构30-异地多活设计4步走
上一期,基于异地多活架构设计复杂度最高的“跨城异地”,我结合自己的经验总结了异地多活设计的4个技巧及其核心思想,我认为掌握这些技巧是进入具体设计步骤的前提。今天,在掌握这4大技巧的基础上,我来讲讲跨城异地多活架构设计的4个步骤。原创 2023-05-14 08:30:37 · 115 阅读 · 0 评论 -
从0开始学架构29-异地多活设计4大技巧
关键在于搭建高速网络将两个机房连接起来,达到近似一个本地机房的效果。架构设计上可以将两个机房当作本地机房来设计,无须额外考虑。关键在于数据不一致的情况下,业务不受影响或者影响很小,这从逻辑的角度上来说其实是矛盾的,架构设计的主要目的就是为了解决这个矛盾。主要是面向不同地区用户提供业务,或者提供只读业务,对架构设计要求不高。基于这个分析,跨城异地多活是架构设计复杂度最高的一种,接下来我将介绍跨城异地多活架构设计的一些技巧和步骤,今天我们先来看4大技巧,掌握这些技巧可以说是完成好设计步骤的前提。原创 2023-05-14 08:28:32 · 113 阅读 · 0 评论 -
从0开始学架构28-业务高可用的保障:异地多活架构
无论是高可用计算架构,还是高可用存储架构,其本质的设计目的都是为了解决部分服务器故障的场景下,如何保证系统能够继续提供服务。但在一些极端场景下,有可能所有服务器都出现故障。例如,典型的有机房断电、机房火灾、地震、水灾……这些极端情况会导致某个系统所有服务器都故障,或者业务整体瘫痪,而且即使有其他地区的备份,把备份业务系统全部恢复到能够正常提供业务,花费的时间也比较长,可能是半小时,也可能是12小时。因为备份系统平时不对外提供服务,可能会存在很多隐藏的问题没有发现。原创 2023-05-14 08:27:02 · 89 阅读 · 0 评论 -
从0开始学架构27-如何设计计算高可用架构?
计算高可用的主要设计目标是当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可用。计算高可用架构的设计复杂度主要体现在方面,即当任务在某台服务器上执行失败后,如何将任务重新分配到新的服务器进行执行。因此,计算高可用架构设计的关键点有下面两点。1.哪些服务器可以执行任务第一种方式和计算高性能中的集群类似,每个服务器都可以执行任务。原创 2023-05-14 08:26:17 · 110 阅读 · 0 评论 -
从0开始学架构26-高可用存储架构:集群和分区
上一期我讲了高可用存储架构中常见的双机架构,分别为主备复制、主从复制、双机切换和主主复制,并分析了每类架构的优缺点以及适应场景。今天我们一起来看看另外两种常见的高可用存储架构:数据集群和数据分区。原创 2023-05-14 08:24:27 · 121 阅读 · 0 评论 -
从0开始学架构25-高可用存储架构:双机架构
存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个方面去进行思考和分析:数据如何复制?各个节点的职责是什么?如何应对复制延迟?如何应对复制中断?常见的高可用存储架构有主备、主从、主主、集群、分区,每一种又可以根据业务的需求进行一些特殊的定制化功能,由此衍生出更多的变种。原创 2023-05-10 09:32:37 · 156 阅读 · 0 评论 -
从0开始学架构24-FMEA方法,排除架构可用性隐患的利器
FMEA(Failure mode and effects analysis,故障模式与影响分析)又称为失效模式与后果分析、失效模式与效应分析、故障模式与后果分析等,专栏采用“故障模式与影响分析”,因为这个中文翻译更加符合可用性的语境。FMEA是一种在各行各业都有广泛应用的可用性分析方法,通过对系统范围内潜在的故障模式加以分析,并按照严重程度进行分类,以确定失效对于系统的最终影响。FMEA最早是在美国军方开始应用的,20世纪40年代后期,美国空军正式采用了FMEA。原创 2023-05-10 09:24:38 · 153 阅读 · 0 评论 -
从0开始学架构23-想成为架构师,你必须掌握的CAP细节
理论的优点在于清晰简洁、易于理解,但缺点就是高度抽象化,省略了很多细节,导致在将理论应用到实践时,由于各种复杂情况,可能出现误解和偏差,CAP理论也不例外。如果我们没有意识到这些关键的细节点,那么在实践中应用CAP理论时,就可能发现方案很难落地。而且当谈到数据一致性时,CAP、ACID、BASE难免会被我们拿出来讨论,原因在于这三者都是和数据一致性相关的理论,如果不仔细理解三者之间的差别,则可能会陷入一头雾水的状态,不知道应该用哪个才好。原创 2023-05-10 09:23:15 · 86 阅读 · 0 评论 -
从0开始学架构22-想成为架构师,你必须知道CAP理论
CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的ACM PODC上提出的一个猜想。2002年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。对于设计分布式系统的架构师来说,CAP是必须掌握的理论。为了更好地解释CAP理论,我挑选了Robert Greiner(原创 2023-05-10 09:21:18 · 93 阅读 · 0 评论 -
从0开始学架构21-高性能负载均衡:算法
负载均衡算法数量较多,而且可以根据一些业务特性进行定制开发,抛开细节上的差异,根据算法期望达到的目的,大体上可以分为下面几类。任务平分类:负载均衡系统将收到的任务平均分配给服务器进行处理,这里的“平均”可以是绝对数量的平均,也可以是比例或者权重上的平均。负载均衡类:负载均衡系统根据服务器的负载来进行分配,这里的负载并不一定是通常意义上我们说的“CPU负载”,而是系统当前的压力,可以用CPU负载来衡量,也可以用连接数、I/O使用率、网卡吞吐量等来衡量系统的压力。原创 2023-05-10 09:20:00 · 99 阅读 · 0 评论 -
从0开始学架构20-高性能负载均衡:分类及架构
单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。高性能集群的本质很简单,通过增加更多的服务器来提升系统整体的计算能力。由于计算本身存在一个特点:同样的输入数据和逻辑,无论在哪台服务器上执行,都应该得到相同的输出。因此高性能集群设计的复杂度主要体现在任务分配这部分,需要设计合理的任务分配策略,将计算任务分配到多台服务器上执行。。对于任务分配器,现在更流行的通用叫法是“负载均衡器”。原创 2023-05-10 09:18:24 · 76 阅读 · 0 评论 -
从0开始学架构19-单服务器高性能模式:Reactor与Proactor
我介绍了单服务器高性能的PPC和TPC模式,它们的优点是实现简单,缺点是都无法支撑高并发的场景,尤其是互联网发展到现在,各种海量用户业务的出现,PPC和TPC完全无能为力。今天我将介绍可以应对高并发场景的单服务器高性能架构模式:Reactor和Proactor。原创 2023-05-09 10:46:11 · 164 阅读 · 0 评论