软件架构设计
去年由于项目的需要,有时间看了看软件架构设计,读了些书和论文,以前认为架构师做的工作不太多,看完之后,感觉自己和架构师还有一段路程,笔者认为架构师不仅要熟悉技术,业务和管理,更重要的是要有自己的思想,架构设计在我看来,他不是技术,而是一种艺术。我喜欢艺术,我热爱架构,以前在自己的学习道路上总是渺茫,似乎现在找到了方向。
通过一段时间的学习让我认识了互联网软件架构,企业应用软件架构,嵌入式软件架构和有线或无线网络架构。以及在一个方面的各种架构,比如我们经常忽略的安全架构。
架构笔录:
1、网站流量影响整个网站架构的设计
2、网站架构的设计是一种平衡的设计,没有完美的架构,架构的设计要简单灵活,便于扩充,因此找出平衡点是关键
3、网站架构的设计不要过渡,考虑到1~2年内的用户需求即可
4、小网站与大网站的区别在于,当数据量达到一定级别,小问题会变成大问题
5、大的网站架构不适合做小事情,小架构也做不了大事情
6、即使通过硬件的扩充,架构的负荷已经超过设计负荷的5~10倍,就要考虑重新设计系统的架构,举例来说就是一个研发团队是10个人以内,可以采用家长式管理,而到100人以内,管理方式必须变化,因此架构也要根据负荷情况不断变化
7、要通过网站的监控分析,来找到系统瓶颈的临界点
8、任何一个网站的开发都会是从集中式-分布式-高级分布式的方向过渡
9、Google可以通过机器的扩充来达到网站扩展的要求,依赖的是系统架构设计中的线性可扩展性
10、中国的网站架构和运营要考虑自身的网络运营环境如网通和电信网络的区别
11、网站架构的设计也要考虑运营成本的问题,能得到的资源往往比预期的要少
12、架构的设计要考虑安全性和恶意客户的攻击
13、网站的负载要通过测试来验证,并通过监控系统进行分析,并且要做好风险的应对,系统的负载永远不要超过80%
14、架构的设计中无时无刻不存在折中的情况,痛苦的取舍是必须作出的抉择
15、架构设计中要充分考虑团队、领导和用户间的沟通,龙的那片不能动的鳞也要有策略的动一动
16、架构设计要充分分析数据的特性,读和写哪个更重要,例如Google的搜索根本不用数据库,甚至连文件系统都进行重写,以达到最快的数据读取效果
17、网站架构的设计要考虑API接口的开放性
补充1:
1、网站架构是一门平衡艺术,永远在性能和需求之间寻求平衡
2、Taobao在生态圈上考虑了很久,很有可能会推出重量级的OpenAPI,具体是什么,值得期待
3、腾讯产品在产品稳定性要求很高,单组服务产品的压力测试非常严格,最终把大访问问题转化为添加服务器问题
4、完美的缓存机制需要考虑稳定性、事务处理和分布式,memCache是其中较简单的实现
5、监控程序实时报警,比如同期超过5%的正常波动
6、产品经理要溶入技术团队,避免过度设计
7、用户每上一个台阶,架构设计将迥然不同