21 | 架构设计:普通程序员也能实现复杂系统?
21 | 架构设计:普通程序员也能实现复杂系统?
讲述:宝玉
时长16:37大小15.23M
为什么软件项目需要架构设计?
什么是架构设计?
如何做好架构设计?
第一步:分析需求
第二步:选择相似的成熟的架构设计方案
第三步:自顶向下层层细化
第四步:验证和优化架构设计方案
推荐学习材料
总结
课后思考
赞 7
提建议
精选留言(18)
- 易林林2019-04-16淘宝这样的网站,需求复杂、功能点多、访问量大,微服务可以对各业务进行拆分,细粒度的保证功能的清晰度和完整性,方便多人分工协作;降低相互间的依赖,减少资源冲突,以便于维护和部署。与此同时,在访问量大的时候,可以很容易的进行网络数据分流,减小单个服务的负载。 而个人微博,需求点少,功能单一,基本上只是作为数据输出的载体,不需要用户过多的交互操作,并发访问量也不会太大,一般单个服务就可以胜任。 极客时间的架构我觉得使用微服务架构比较好,用户管理、专栏文章管理、视频教程管理、评论管理、支付管理、优惠活动管理等等需求相对比较复杂,使用单服务不利于扩展、维护和部署。另外,还要考虑安全性、稳定性、流畅性方面的问题(钱啊,很重要,容不得半点马虎)。展开
作者回复: 👍感谢分享! 微服务是个不错的选择。 极客时间好像不是用的微服务,参考这篇《极客邦池建强:难的不是从零打造一款产品,而是…… 》: https://www.infoq.cn/article/q7xlHaaiZ-9H6SwHXCNg
12 - 一路向北2019-04-18架构设计,一要有思想为基础,二是必须实践相结合,架构设计需要有高屋建瓴的眼光。架构的思想相当于是前人实践经验的总结。不过每次看这些架构的思想方法的时候,总是和实际的应用没能很好的结合起来,原因是不是架构设计的实践不够?或者是对各种实现的分析和思考太少?
作者回复: 我觉得不仅要有架构实践,还要有不同场景的实践。 举个例子来说,你平时做企业应用架构,没什么流量,没多少数据,复杂的地方都在业务逻辑,这时候你去看那些讲大数据、讲高并发的文章,很难带入到场景去。 还有就是一些架构,不自己搭一遍是很难了解其中的优缺点的,这也是另一个原因。 可以考虑有机会自己尝试把看到的一些好的架构实际的用一个原型程序搭一遍,造一点数据出来,用工具压测一下,这样会更有感觉更有深刻体会。 和实际应用想结合的问题,一方面说明你现有的架构可能并没有什么大问题,没有那么迫切的需求要改造;另一方面可能还是因为缺少实践经验,心里没底,不知道真用上了有没有用。 一点浅见,供参考。
5 - hua1682019-04-17宝哥,架构师与开发有什么区别呀? 架构师一定要懂开发吗?是不是只负责架构设计然后让开发去做就行了? 感觉架构师比开发清闲呀,名字也高大上,工资也不错吧~~~
作者回复: 这个问题下一篇就会详细解答 :) 架构师可不清闲,只是分工不一样而已,架构师大部分时间不是在写代码,而是在了解业务,在构思架构,做好比开发难多了。工资也要高很多!
4 - Mr.Chen2019-07-25老师好,持久层应该怎么理解,我感觉是数据库和数据操作层的和
作者回复: 持久层如果包括数据存储(数据库和文件存储都算),那么就是你说的“数据库和数据操作层的和”。 如果和数据存储层分开,那么就是指数据库访问相关操作。
3 - 纯洁的憎恶2019-04-23降低软件工程的参与门口,以调动更大规模的协作,从而解决更难更大的软件问题。架构设计可以在一定程度上解决技术复杂度问题,从而降低软件开发的复杂度,让更多的普通程序员参与进来。分而治之。把复杂系统抽象分解为多个简单的小模块,或者划分若干相对独立的层次,不至于牵一发而动全身。
作者回复: 👍很好的总结分享
3 - alva_xu2019-04-16老师,我们正好在考虑SOA架构,研究esb、api gateway等。前几天我写了篇文章发在博客上了,请老师点评。谢谢。《从巨石应用到微服务应用,从ESB到APIGateway,从前后端分离到中台出现,九九归一,Rest要一统天下?》, https://blog.csdn.net/alva_xu/article/details/89052040
作者回复: 已拜读!因为对你的业务不了解,也不好妄加评价。 当业务复杂到一定程度,分拆是很有必要的👍
3 - butterflies2019-05-09老师您好,我现在自学python 遇到一些瓶颈,写的脚本有时候总是进行有难度,页面跳转还有页面闪退都有问题?还有对一些项目架构理解不够深刻 请问老师怎样才能更好的去实施呢?
作者回复: 我觉得遇到这种问题,你可以先识别一下问题,比如说页面跳转或者页面闪退有问题,需要先甄别问题在哪里,如果还不能甄别,那么先增加一些相应的日志,缩小问题范围,直到能找到问题在哪里,找出来问题就好寻找解决方案了。 解决问题的时候,总结归纳,解决一个问题争取能把一类问题都解决,以后再遇到类似的问题就不用担心了。 项目架构理解是需要一个过程的,一开始先看,了解有哪些好的架构,然后再是用架构,用的过程中去体会总结架构好的地方不好的地方,或者说适用的领域,以后就知道什么情况下用什么架构了。 架构的实施可以先从模仿开始,然后逐步增加适合自己业务特点的内容,最后再考虑是不是要设计出自己业务特色的架构。
2 - Felix2019-04-18深受代码整洁之道影响,喜闻架构整洁之道一书,立即入手,期待ing
作者回复: 确实是很不错的书👍
2 - 青石2019-04-16项目计划和架构设计类似,都是自顶向下,由粗到细的过程。 至于用图说话,只能勤画来练习了。确实很佩服那些脑子里装满了流程图的兄弟。
作者回复: 是的,其实多画画就越来越熟练了。
2 - gfkdcadet2019-04-16老师推荐的资料一流!
作者回复: 赞,有用就好。也欢迎推荐你觉得好的资料。
2 - dancer2019-04-16基于用例图分析软件需求,确认软件中关键角色和功能和HeadFirst OOAD里讲的一样。我觉得一开始不确定软件的访问量以及复杂度的时候,选用分层设计是非常好的。当业务发展好,需求越来越复杂 人员组织越来越大时,架构也会随之变化。
作者回复: 分层架构确实是经典的符合服务端特点的架构。
2 - Siping2020-04-04最近正在做一个数据中台的架构设计,千头万绪,感觉怎么也描述不清
作者回复: 描述架构,简单有效的就是从整体到局部,由粗到细。 先画一些简单的框图,把大的层级分清楚,然后针对每一层把服务画出来,在把每一个服务的模块结构画出来。 这样可以帮助你梳理清楚。 另外可以多和有经验的同事、朋友讨论,在网上找类似的设计例子。
1 - 小老鼠2019-09-171、可否基于各种语言来介绍架构类型,比如JAVA、Python … 2、如何做好数据库选型、web服务选型,比如Tomcat 、jboss、weblogic、Django、Flask⋯
作者回复: 1. 语言更多的是实现的工具,通常对架构设计并不是决定性的,比如说分层架构,Java/C#都可以实现,甚至于不同层不同的语言; 2. 数据库选型可参考《22 | 如何为项目做好技术选型?》
1 - R2019-04-18宝玉老师好 反馈一下,上面评论里的链接不能选中复制 😂
作者回复: 🤦♂️这个是极客时间的产品设计问题,建议根据文章标题搜索一下,很好找
1 - ifelse2022-07-16个人博客用微服务,就是杀鸡用牛刀!
- ifelse2022-06-28架构设计,是为了控制软件项目中技术复杂的问题。架构设计,通过组织人员和技术,低成本满足需求以及需求的变化,保障软件稳定高效运行。--记下来
- 别惹年轻人2021-05-31架构设计是不是也包含高性能低延迟的模式,这种模式可能不仅没有人使实现变得简单,同时研发成本和维护成本也高了好几级,但确实提高了性能,大幅降低了响应时间。
- calvins2019-11-29极客时间的架构从需求方面分为两部分,第一是用户使用部分,第二是后台管理部分,后台管理包括文章,视频上架等商品类,优惠策略,广告等,访问量不大,内部员工使用,一般来说保证高可用就够了,用户使用部分,可以理解为商城部分,这部分主要面向用户,因为知识付费商城的特殊性,不会像电商网站那么高的并发,更重要的是稳定性与响应速度,所以web和app端可能基础服务是同一套逻辑实现,入口渠道,app,小程序,网站,后台服务商品展示为一类,广告活动为一类,订单支付为一类,用户管理为一类,基本上这四大块就能涵盖,所以传统的mvc三层结构就能满足。展开
作者回复: 👍很好的分析