什么是架构,架构就是最高层次的规划,难以改变的决定。
人生规划也是一种架构。选什么学校,学什么专业,进什么公司,找什么对象,过什么生活,都是自己人生的架构。
软件架构,就是关于软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
软件架构,需要关注性能、可用性、伸缩性、扩展性和安全性5个架构要素。
1.性能
从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。
浏览器端,可以通过浏览器缓存、页面压缩、合理布局等改善性能。
通过CDN,将网站静态内容,分发至离用户最近的网络服务商机房。
可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度。
在应用服务器端,可以使用服务器本地缓存和分布式缓存,加速请求处理过程。
在网站有很多用户高并发请求时,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力。
在代码层面,可以使用多线程、改善内存管理等手段优化性能。使用高效的算法,减少内存和响应时间。
在数据库服务器端,索引、缓存、sql优化等,还有NoSQL数据库。
2.可用性
网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问。
数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用和数据丢失。
3.伸缩性
所谓伸缩性,是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
4.扩展性
不同产品之间很少耦合,一个产品改动对其他产品无影响。
5.安全性
保证数据的安全性,准确性,不可窃取性。
本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7683198.html,如需转载请自行联系原作者