首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >架构师都是如何设计的?

架构师都是如何设计的?

提问于 2024-12-20 11:54:46
回答 3关注 0查看 52

架构师设计架构的思路是什么样的?有什么固定逻辑或者设计步骤,如何评估系统使用量及并发量?

需求分析如何分析;系统规模如何评估;技术如何选型;架构如何设计;原型如何迭代?

请问拿到一个项目,从哪几个方面进行分析,然后从哪些地方入手进行技术栈选择和搭建?

回答 3

架构师之路

发布于 2024-12-25 02:52:21

很多人做了多年架构设计,很多人连架构设计的关键流程和步骤都不知道。

很多人确实上线了很多系统,也确实做了很多需求,但基本上都是毫无方法,全凭自己想象的在做架构设计。

总的来说,架构设计有四个大的步骤,其中第二个步骤最容易被大家忽略。

步骤一:理解需求以及定义系统边界。

Understand the problem & Identify the scope of the system.

理解需求,核心是和产品确定功能要求,以及根据业务确定性能要求

定义系统边界,核心是要明确系统哪些要做,哪些不做。

步骤二:也就是最容易被忽略的一个步骤,调研已有的类似的系统。

Research on existing systems.

你做的系统,是业内首创吗?如果不是,看看类似的系统是怎么做架构设计的。参考成熟的方案,能让你的架构设计事半功倍。

步骤三:顶层设计。

high-level architecture design.

设计系统的主要组件,以及它们之间的交互方式。例如:

使用机房,还是云?

使用单体,还是微服务?

要不要cache,要不要mq?

用rdb,还是nosql?

...

这里要包含系统架构的粗略图,以及实现核心需求的流程图。

步骤四:也是非常重要的一个步骤啊,解决主要矛盾迭代设计。

Refine the design.

顶层设计完之后,哪里是系统的主要矛盾?

我们要根据潜在的主要矛盾,细化与迭代顶层设计。

例如:你要做一个计数系统,对推文的阅读,转发,点赞,评论数进行计数。

假如主要矛盾如果是并发,1秒10万次?

那可能就要加入一些乐观锁,异步,批量请求,Copy On Write等巧妙设计,甚至牺牲一些一致性。

假如主要矛盾是一致性,不允许数据出错?

那可能就要加入一些互斥,校验,write-ahead logging等巧妙设计。

迭代设计,解决完一个主要矛盾,继续解决次要矛盾,直到所有的功能需求与性能需求得到满足。

这里面有个地方要注意:在第四步迭代设计的过程中,有可能会发现第三步顶层设计的缺陷。这个时候,可能要优化甚至推翻第三步顶层设计。

这也是为什么,一些系统运行了几年,就要进行重构。当初的顶层设计已经满足不了现有的业务需求了。在原有顶层设计基础上,解决不了主要矛盾了,那就重构顶层设计来解决。

这也是我非常推崇的两大核心架构设计理念:

其一,任何脱离业务的架构设计都是耍流氓;

其二,架构不只是设计而来的,更是迭代与演进而来的;

回归今日话题,架构设计的四大步骤:

其一,理解需求以及定义系统边界;

其二,调研已有的类似的系统;

其三,顶层设计,定义核心组件与交互;

其四,针对主要矛盾迭代设计;

有人问,第二步借鉴已有成熟系统的方案,在别的架构设计方法中,没有看到过这个步骤呀?莫不是搞笑的吧。

我非常严肃地声明,这个步骤非常重要,调研一定要多花时间。不行的程序员,看谁的代码都是屎;不行的架构师才会认为,我的方案最牛逼,别人的方案都是屎,但其实,自己原创的大部分方案才是屎。

保持开放的心态,借鉴优秀的方案,是优秀架构师的核心品质。

“借鉴”这一点,任何不接地气的架构方法,都不会有人说。

杜金房

发布于 2024-12-24 13:51:43

具体问题需要具体分析。一般的互联网系统有两个层面,系统用户数和活跃用户数,这些都跟你的业务有关,要从需求中来。

系统用户数会占存储,而活跃用户数占用你的处理能力。在活跃用户的基础上又有日活和月活,每个用户每天的请求数也不一定。系统的负载跟请求的数量成正比,跟频次也有很大关系。比如双11秒杀瞬时的请求频次就会非常高。

所以,要根据你的业务模型进行设计。

如果不知道怎么办?先找个跟你业务模型差不多的框架先跑起来再说,很多系统都是这么起来的。比如你做一个类似这个腾讯云开发者社区的网站,其实可以直接选一个BBS软件(如discuz?),把页面稍微定制一下就可以跑起来。然后如果有时间精力可以慢慢替换前端,替换后台API和数据库等。

stark张宇

发布于 2024-12-28 02:47:58

充分理解业务痛点和需求,要解决的问题,进行技术调研,用最简单的技术架构去实现设计、去实践,从数据安全、监控、单元测试、压测、交付的一系列流程

和开发者交流更多问题细节吧,去 写回答
相关文章
Christina问我:你都是如何设计索引的?
数据库系列更新到现在我想大家对所有的概念都已有个大概认识了,这周我在看评论的时候我发现有个网友的提问我觉得很有意思:帅丙如何设计一个索引?你们都是怎么设计索引的?怎么设计更高效?
敖丙
2021/01/08
8240
Christina问我:你都是如何设计索引的?
优秀的代码都是如何分层的?
说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。
用户1516716
2019/08/06
3.3K0
优秀的代码都是如何分层的?
优秀的代码都是如何分层的?
说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。
用户5224393
2019/11/07
5730
优秀的代码都是如何分层的?
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/04/13
3500
优秀的代码都是如何分层的?
优秀的代码都是如何分层的?
说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。
Java后端技术
2018/08/09
1.7K0
优秀的代码都是如何分层的?
优秀的代码都是如何分层的?
来源:juejin.im/post/5b44e62e6fb9a04fc030f216
Java团长
2019/07/30
4030
优秀的代码都是如何分层的?
优秀的代码都是如何分层的?
说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。
程序员小明
2019/10/10
3.7K0
优秀的代码都是如何分层的?
前端同学都是如何玩转 ChatGPT 的???
我在去年的时候就跟风注册了一波,其回答问题的准确性和编码能力让我吃惊。不得不说,ChatGPT作为一个新兴的AI产品,和老美的电影里的人工智能有那么一些相像了,甩了三问一不知的小爱、小度和小E不止一条街。
@超人
2023/05/12
6210
前端同学都是如何玩转 ChatGPT 的???
前端同学都是如何玩转 ChatGPT 的???
ChatGPT最近一周忽然登上了国内各大平台的热搜榜,应该在去年11月末的时候就有不少同学了解并使用过,那个时候它刚刚问世,在互联网圈子里有了很大的热度,但是对于大众来说,还是不太了解的。
winty
2023/08/23
3630
前端同学都是如何玩转 ChatGPT 的???
鹅厂架构师谈:如何做好架构设计?
# 关注并星标腾讯云开发者 # 每周3 | 谈谈我在腾讯的架构设计经验 # 第1期 | 黄规速:鹅厂架构师谈:如何做好架构设计?
腾讯云开发者
2023/08/03
9550
鹅厂架构师谈:如何做好架构设计?
阿里P8架构师都是怎么分析软件模型的?
要先知道项目提供了哪些模型,模型又提供了怎样的能力。若只知道这些,你只是在了解别人设计的结果,这不足以支撑你后期对模型的维护。
JavaEdge
2021/12/07
3230
阿里P8架构师都是怎么分析软件模型的?
大厂都是如何优化Redis大Key的?
若一个K的V很大,则可能对Redis产生明显的性能影响。因为Redis是单线程模型,对于大K进行查询或删除,可能会导致Redis阻塞。 那我们开发时应该如何查询Redis中的大K,以及如何在设计上实现大K的拆分呢,即如何优化?
JavaEdge
2021/04/01
1.2K0
大厂都是如何优化Redis大Key的?
如何成为合格的架构师
一直以来,在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。甚至于很多架构师一说架构,就开始谈论什么应用架构、硬件架构、数据架构等等。我曾经也到处寻找过架构的定义,请教过很多人,结果发现,没有大家都认可的定义。套用一句关于 big data 流行的笑话,放在架构上也适用:
leon公众号精选
2022/04/27
2700
如何成为合格的架构师
如何成为顶尖的架构师?
在技术圈,架构师一方面是已经被说烂的职务,另一方面也是让人困扰的职位,行业发展到现在似乎人人都是架构师,各种架构图绚丽多彩漫天飞舞,同时永远有人在抱怨架构太烂、坑太多。 那么到底什么是架构师?如果有一天把你丢到架构师的位置上你会怎么做? 做什么呢?今天,阿里国际技术事业部的无叶,与大家坐一起,聊一聊。 一、两种架构师 工作五年以上的童鞋,或多或少都会有这样的经历:在小团队或者项目中承担非明确的架构师职责,我们做项目或者产品的关键设计和实施;负责产品基础设施;引入新的理念,框架;解决团队中的复杂问题;在团队成
Java架构
2018/05/04
1.1K0
Apache架构师的30条设计原则!
Srinath 通过不懈的努力最终总结出了30条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构师团队或部门。Srinath 认为架构师应该扮演的角色是一个引导者,讨论发起者,花草修建者,而不是定义者和构建者。Srinath 为了解决团队内部的架构纷争和抉择,制定了以下30条原则,这些原则被成员们广泛认可,也成为了新手架构师的学习途径。
开源社
2019/08/15
3120
Apache架构师的30条设计原则!
大厂都是如何处理重复消息的?
消息最多传递一次,如果当时客户端不可用,则会丢失该消息。即消息在传递时,最多被送达一次。无消息可靠性保证,允许丢消息。
JavaEdge
2022/09/14
2K0
大厂都是如何处理重复消息的?
聊聊架构设计做些什么来谈如何成为架构师
  也因为碎片化的时间多了,所以开始刷某乎了,关注了架构相关的板块,也顺手回答了一些问题。发现有很多同道中人正在经历着我前两年经历的阶段,对于做架构没有相对具象的一些理解,更没有系统化的认识。所以把最近回答的一些内容整理一下,权当记录,留给3年后的自己~
Zachary_ZF
2018/09/10
4880
聊聊架构设计做些什么来谈如何成为架构师
前端最努力的同学都是如何学习的?
大家好,我是二哥呀! 先说一下我个人对前端职业发展前景的看法,希望对那些站在前端学习起点,或者已经在路上,但又有点犹豫和迷茫的小伙伴一点点启发和帮助。
沉默王二
2021/11/16
3690
前端最努力的同学都是如何学习的?
优秀的 Java 项目代码都是如何分层的?
说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。
芋道源码
2019/08/14
3.5K0
优秀的 Java 项目代码都是如何分层的?
优秀的 Java 项目,代码都是如何分层的?
说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。
后端码匠
2021/02/26
5200
优秀的 Java 项目,代码都是如何分层的?

相似问题

架构师应该如何设计?

015

架构师需要设计网络方面的知识学习吗?

147

架构师如何成长?

011

架构师?

016

如何寻找合适的架构师?

06
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档