• 分布式服务器集群架构方案思考


    分布式服务器集群架构方案思考

    nginx-reverse-proxy-confnginx-reverse-proxy-conf

    研究了一套完整的分布式服务器集群架构方案。

     



    0x01.大型网站演化

    简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

    集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster,nginx即可实现),科学计算集群(High Performance Computing Cluster)。

    分布式是指将不同的业务分布在不同的地方;而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。

    之前在网上看到一篇关于大型网站演化的博客。http://www.cnblogs.com/leefreeman/p/3993449.html

    每个大型网站都会有不同的架构模式,而架构内容也就是在处理均衡负载,缓存,数据库,文件系统等,只是在不同的环境下,不同的条件下,架构的模型不一样,目的旨在提高网站的性能。

    最初的架构只有应用程序,数据库,文件服务。

    应用程序、数据库、文件服务架构应用程序、数据库、文件服务架构

    到后来,分布式服务、集群架设。

    分布式服务器集群分布式服务器集群



    0x02.关于均衡负载方案

    在上一篇,《Nginx反向代理实现均衡负载》讨论过过的nginx现实均衡负载方案,这里选择另一种HAProxy+Keepalived双机高可用均衡负载方案。

    HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。

    不论是Haproxy还是Keepalived甚至是上游服务器均提高生产力并增强可用性,也就是如下架构中Haproxy,Keepalived,Httpd服务器任意宕机一台服务还是可以正常运行的。

    HAProxy的优点:

    1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);

    2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;

    3、支持url检测后端的服务器;

    4、本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;

    5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡;

    HAProxy+Keepalive 均衡负载方案HAProxy+Keepalive 均衡负载方案



    0x03.关于Redis缓存方案

    缓存分为服务器缓存和应用程序缓存。

    关于应用程序内缓存,已经在Jue后台框架里面做了模块处理了。

    关于服务器缓存,主要缓存服务器文件,减少服务器和php交互,减少均衡负载服务器和应用程序服务器交互。

    缓存里面有一种典型的memcached,现在用的多的是redis轻量级缓存方案。

    关于memcached与redis,看这篇 《Memcached vs Redis?》

    Redis主要将数据存储在各种格式:列表,数组,集合和排序集,一次能接受多个命令,阻塞读写,等待直到另一个进程将数据写入高速缓存。

    Redis Cache 方案Redis Cache 方案

    一篇关于Reids缓存方案。《高可用、开源的Redis缓存集群方案》



    0x04.关于搜索引擎Sphinx方案

    (第一期不做,后期需求时候考虑)**

    Sphinx是俄罗斯人开发的,号称是很吊啦,千万级数据检索,每秒10MB/s,搭过环境。

    Sphinx和MySQL是基于数据库的全文引擎,创建索引是B+树和hash key-value的方式。

    原理类似于用底层C检索MySQL,然后弄出一个sphinx.conf配置文件,索引与搜索均以这个文件为依据进行,要进行全文检索,首先就要配置好sphinx.conf,告诉sphinx哪些字段需要进行索引,哪些字段需要在where,orderby,groupby中用到。

    Sphinx中文



    0x05.关于NoSQL快速存储方案

    NoSQL在这里的使用价值是处理一些琐事,比如用户个人网站的一些css值,height,width,color等等的小而繁多的数据,采用NoSQL旨在提升数据库速度,减少对MySQL的SELECT请求。

    关于NoSQL的方案很多了,选一个简单的MongDB好了。



    0x06.关于分布式MySQL方案

    (做分布式MySQL还没尝试过,初期也不清楚mysql所需要的压力,所以第一期不打算做分布式MySQL)

    《标准MySQL数据库外的5个开源兼容方案》



    0x07.分布式集群方案

    综合起来,大致就是如下模型,初探分布式架构,还有很多要修改的,待续,时时更新中。。。

    一个网站架构一个网站架构

  • 相关阅读:
    Network (poj1144)
    C. Hongcow Builds A Nation
    ZYB loves Xor I(hud5269)
    D. Chloe and pleasant prizes
    Game(hdu5218)
    约瑟夫环的递推方法
    Misaki's Kiss again(hdu5175)
    Exploration(hdu5222)
    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
    C. Arpa's loud Owf and Mehrdad's evil plan
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/5925604.html
Copyright © 2020-2023  润新知