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

news/2024/7/9 22:01:16 标签: 分布式计算, 集群, 服务器

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





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 均衡负载方案





0x03.关于Redis缓存方案

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

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

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

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

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

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

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.分布式集群方案

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


一个网站架构


http://www.niftyadmin.cn/n/814391.html

相关文章

【RapidJson】Rapidjson解析

Json 是一种轻量级数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成。相较于XML,json更小、读写更快、更易解析。另一方面,Rapidjson作为json的升级版,在效率方面,具有更好的优势。Json语法规则…

Redis5 Cluster集群搭建 配置 以及 Failed to send CLUSTER MEET command

redis 集群分为3种:主从复制、哨兵模式、cluster集群 本文使用的是cluster集群模式,优缺点可以自行查阅。 环境 3台机器 每台机器上一个master(7001)一个slave(7002) ,一共3个master 3个slave axe1(192.168.86.101) 7001(master) 7002(sl…

想让系统更稳定?这15条MySQL改善经验必须收藏

MySQL 作为目前的主流开源数据库, 既能挑战 “双11”,又能扛起 “618”,比起网红版数据库,MySQL 绝对是实力担当。 1、 为查询缓存优化查询 像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,谨慎使…

大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响

1 前言 HTTPS 在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS 也会降低用户访问速度,增加网站服务器的计算资源消耗。 本文主要介绍 https 对用户体验的影响。 2 HTTPS 对访问速度的影响 在介绍速度优化策…

【c/c++】构造函数的默认参数以及缺省参数值

示例&#xff1a; #include <iostream> using namespace std; class Box { public: Box(int h 10, int w 10, int len 10); //在声明构造函数时指定默认参数 Box(float h10,float w15); int volume(); private: int height; int width; int length; }; Box::Box(int …

这款神器做出来的文字特效 ,刷爆了朋友圈,抖音,微博……

最近中了抖音的毒 一刷就停不下来的节奏 发现&#xff0c;最近这种效果好火&#xff01; 播妞一直琢磨&#xff0c;用AE怎么能做出这种效果呢&#xff1f;如果按照K帧的方法&#xff0c;应该可以实现&#xff0c;但太麻烦&#xff0c;但做出来肯定没有这么流畅&#xff01; 最…

【c/c++】函数模板和模板函数

1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数&#xff0c;以支持多种不同的形参&#xff0c;避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。函数模板的声明形式为&#xff1a; template<typena…

建议收藏:好用的 Unix/Linux 命令技巧

1、删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃&#xff0c;我担心这是由于巨大的磁盘IO造成的&#xff0c;要删除这个大文件&#xff0c;输入&#xff1a; > /path/to/file.log # 或使用如下格式 : > /path/to…