大型网站由于高并发,高可用的特点对架构有更高的要求,同时也对技术有更高的要求,今天正好了解了一些这方面的知识,总结一下。

任何一个网站都不是一开始就是已一个超大型网站的要求设计的,任何一个网站都是由小到大,访问量也是慢慢上升,因此架构一般设计要考虑扩展性。

  1. 目前解决高并发一个常用手段是加缓存,目前比较流行的缓存服务器是memcache服务器和redis服务器
    memcache服务器:是一套分布式的高速缓存系统,是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,是key-value的形式进行存储,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度,Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
    redis服务器:也是Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
  2. 一般针对大型网站除了会对在内部做缓存外,针对访问量很大的资源,还会购买cdn服务商的服务,将类似js/css和图片等静态资源缓存在cdn服务器上,在网络路由中,cdn会将用户路由至最近的cdn服务器上,将其中缓存的资源进行返回。较大提高响应速度。
  3. 在服务器内部,一般会进行负载均衡,常见的web负载均衡技术包括:DNS轮询、IP负载均衡
    DNS:DNS轮询是最简单的负载均衡方式。以域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器。DNS轮询没有快速的健康检查机制,而且只支持WRR的调度策略导致负载很难“均衡”,通常用于要求不高的场景。并且DNS轮询方式直接将服务器的真实地址暴露给用户,不利于服务器安全。
    IP负载均衡:IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。比如NAT、DR、Turning等。是最经常使用的方式。IP负载均衡可以使用硬件设备,也可以使用软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以工作在4-7层,NginX工作在7层。
    由于目前大型网站访问量过大,在以上策略无法解决面临的苦难时,一般会考虑分布式系统,一般可以考虑分布式缓存,分布式web系统,目前大型网站技术愈来愈成熟,也不断进步完善,学海无涯,笔者所写全为自家之言,且技术是不断进步的,有不对的希望指正