分布式网站架构知识点总结(二):常见概念+架构发展+性能调优

昨天与大家分享的分布式网站架构的知识,主要总结了应用、特点、架构模式等内容。今天着重说说关于分布式架构的常见概念、架构发展进程及性能调优方式。希望大家能一起学习进步,喜欢的朋友可以尽情收藏~(^-^)V

分布式网站架构知识点总结(二):常见概念+架构发展+性能调优

一、分布式架构的常见概念

集群:小饭店原来是一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系就是集群。

分布式:为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系就是分布式的,一个配菜师也忙不过来,有请了个配菜师,这两个配菜师的关系就是集群了。所以说有分布式的架构中可能有集群,但集群不等于有分布式。

节点:节点是指一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的项目中,一个节点表示的是一个操作系统上的进程。

副本机制:副本指的是在分布式系统中为数据或服务提供冗余。

  • 数据副本:指在不同的节点上持久化同一份数据,当出现某一个节点的数据丢失时,可以从副本读取数据。数据副本是分布式系统中结果数据丢失的唯一手段。
  • 服务副本:表示的是多个节点提供相同的服务,通过主从关系来实现服务的高可用方案。
  • 中间件:中间件位与操作系统提供的服务之外,又不属于应用,它是位与应用和系统层之间为开发者方便的处理通信,输入和输出的一类软件,能够让用户关心自己应用的一部分。

二、架构的发展过程

成熟的大型网站系统架构并不是一开始就设计的非常完美的,也不是一开始就具备高性能,高可用,安全性等特性,而是随着用户量的增加,业务功能的扩展慢慢完善演变过来的。在这个发展过程中,开发模式,技术架构等都会发生非常大的变化。

阶段一:单应用架构

系统的初级都是应用和数据库都放在一台服务器上。

阶段二:应用服务器和数据库服务器分离

随着网站的用户量增大,流量增大,对应用服务器和数据库服务器单独的部署机器。这样可以增加系统的性能,提高访问的效率,提高单机的负载能力和容灾的能力。

阶段三:应用服务器集群-应用服务器负载告警

随着访问量和流量的增加,假设数据库没有遇到瓶颈,对应用服务器集群来对请求进行分流,提高程序的性能。存在的问题:用户的请求由谁来转发,session如何来管理的问题。

阶段四:数据库压力变大-数据库读写分离

读写分离的话,这样以后的请求,查询的请求就可以去从库里面读数据,写的数据可以到主库中了。

阶段五:使用搜索引擎缓解读库的压力

数据库做读库的话,常常对模糊查询的性能不是很好,特别是对于大型的互联网公司来说,想搜索的模块就比较核心了,这是可以使用搜索引擎了,虽然可以大幅度的提高查询的速度,但是同时也会带来一些问题比如索引的构建。

阶段六:引入缓存机制缓解数据库的压力

对一些热点的数据,可以使用redis,memcache来作为应用层的缓存;另外在某些场景下,可以使用mongodb来替代关系型数据库来存储。

阶段七:数据库的水平/垂直拆分

垂直拆分:把数据库中不同的业务数据拆分到不同的数据库中。

水平拆分:把同一个表中的数据拆分到两个甚至更多的数据库中,水平拆分的原因是某些业务量数据量大的已经达到了单个数据库的瓶颈,这时候可以采取将表拆分到多个数据库中。

阶段八:应用的拆分

随着业务的发展,业务越来越多,应用的压力越来越大。工程规模也越来越庞大。这个时候就可以考虑将应用拆分,按照领域模型将用户,商品,交易分拆成子系统。

三、性能调优方式:

性能是一个网站的重要指标,任何架构设计都必须考虑性能的问题。 性能涉及到前端优化,服务器端优化,数据库查询优化等多个方面。下面列举了一些常用的调优方式。

前端优化:

在浏览器端,可以使用浏览器缓存,页面压缩,页面合理布局,减少http请求等手段改善性能。 还可以使用CDN,将静态内容分发至离用户最近的网络服务机房,使用户可以以最短的路径获取数据。

服务器端优化:

可以使用缓存,通过缓存的数据处理用户请求,加快请求过程,减轻数据库负载压力。也可以异步操作将用户请求发送至消息队列,等待后续处理,当前请求直接返回响应给用户。 在网站有高并发的情况下,可以使用集群,提高整体处理能力,改善性能。 在代码,可以使用多线程加快处理速度等手段优化性能。

数据库优化 :

索引,缓存,SQL优化等手段都比较成熟。性能优化最重要的一步,寻找性能瓶颈,也就是木桶原理中最短的那块木板。

获取更多编程干货,大家可以关注我的头条号~

分布式网站架构知识点总结(二):常见概念+架构发展+性能调优

相关推荐