很多人都说架构架构那到底什么是架构?
记住:最高层次的规划,难以改变的决定,这些规划和决定奠定了事务未来发展的方向和最终的蓝图。
当然了从这个意义上来说,人生规划也是一种架构,比如我们选择什么学校,学习什么专业,进入什么公司,将来要找一个什么样的对象,想要过什么样的生活等等等这些都可以算的上是个人成长的一个架构。
具体到软件架构,维基百科是这样定义的:“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”。系统的各个重要组成部分及其关系构成了系统的架构,这些组成部分可以是具体的功能模块,也可以是非功能的设计与决策,他们相互组成一个整体,共同构件了软件系统的架构。
架构需要关心哪方面的元因素呢?
一般来说,除了当前的系统功能需求外,软件架构还需要关注性能,可用性,伸缩性,扩展性还有安全性这5个要素,在架构的设计过程中要平衡这5个要素之间的关系,为了实现需求和架构目标,也可以通过考察这些架构要素来衡量一个软件架构设计的优劣,判断其是否满足我们的期望。
聊聊 架构之【性能】
性能是衡量一个网站的重要指标,除非是没得选择(比如我们购买火车票的12306网站),否则作为用户是很难接受一个响应很慢的网站。
如果我们的网站响应慢,这样带来的直接后果就是丢失大量的用户。
所以一定要记住,性能是我们网站架构设计的一个很重要的方面。任何软件架构设计方案都必须要考虑可能会带来的性能问题。
如果网站出现性能问题,都有哪些优化手段呢
也正是因为性能问题几乎无处不在,所以优化网站性能的手段也非常多
【从浏览器———到数据库】影响用户请求的所有环节都可以进行优化。
浏览器端的常用优化技术
- 使用浏览器缓存
- 使用页面压缩
- 合理布局页面
- 延时加载
- 减少Cookie的传输等
在请求响应方面
- 可以使用CDN,将网站的静态内容分发至离用户最近的网络服务商的机房,使用户通过最短的访问路径获取数据
- 可以在网站机房部署一个反向代理服务器,缓存一些热点文件
【这样做的好处第一:可以加快页面响应速度,第二:可以减轻应用服务器的压力。】
在应用服务器端
- 使用服务器的本地缓存
- 使用远程分布式缓存
【通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻服务器的负载压力】 - 也可以使用异步操作将用户的请求发送到消息队列等待后续处理,而将当前请求直接返回响应给用户
- 网站在高并发的请求下,可以将多台服务器组建成一个集群共同对外服务,这样做的好处也能提高整体的处理能力,达到改善性能的效果。
在代码层方面
- 可以使用多线程
- 改善内存管理等手段
在数据库的服务器端
- 可以添加索引
- 优化配置文件
- 使用mysql的缓存
- 优化sql语句
- 配置mysql读写分离
- 分库分表等手段
对于Nosql的数据库 - 可以优化数据模型
- 存储结构
- 伸缩特性等
根据什么来衡量一个网站 都有哪些指标呢
衡量网站的性能有一系列的指标,这里只是列举比较重要的指标
- 网站的响应时间
- TPS
- 系统性能计数器等
结束语:对于网站而言,性能符合预期仅仅是必要条件,因为无法预知网站可能会面临的访问压力,所以必须要考察系统在高并发访问情况下,超出负载设计能力的情况下可能会出现的性能问题。网站需要长时间持续运行,还必须要保证系统在持续运行并且访问压力不均匀的情况下保持稳定的性能特性。
聊聊架构之 【可用性】
可用性给网站带来哪些影响
对于大型网站来说,特别是一些知名网站,网站宕掉、服务器不可用是一个重大的事故,轻则影响荣誉,重则可能会摊上官司。假如是一个电商类型的网站,网站如果不可以那后果更是不堪设想,比如淘宝。因此呢很多网站都会承诺7X24小时可用,但事实上如何网站都不可能达到完全的7X24小时可用。总会有一些故障时间,扣除这些故障时间,就是网站的可用的总时间。一般比较知名的网站都会做到4个9以上的可用时间,也就是可用性超过99.99%。
先写这么多 明天再写 累了