一个分布式服务器集群架构方案

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

 


 

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://homeway.me/2014/12/10/think-about-distributed-clusters/

 

转载于:https://www.cnblogs.com/AmilyWilly/p/4670848.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据预处理_Python数据预处理——缺失值、重复值

一、缺失值处理 isnull( ) 、fillna( ) 、dropna( )(1)查看缺失查看数据集缺失,返回每列的缺失个数 df.isnull().sum() 查看某字段有缺失的行 df[df.a.isnull()] 查看某字段每行的缺失情况:返回T/F:df.score.isnull() …

vb如何测试连接mysql_VB怎么连接访问Access数据库?

VB是我们常常会见到的一款可视化程序设计语言,它的功能十分强大,因此有很多人会使用它,但是有时候我们需要用到VB来连接Access数据库,但是却无从下手,那么VB怎么连接访问Access数据库呢?不懂的朋友请看以下…

textarea如何在文字后面_FLASH如何制作风吹文字的效果

使用动作补间动画可以制作各种各样的动态效果,树叶飘落、蝴蝶飞舞等。这里再使用引导层动画结合动作补间动画制作风吹文字飞起的效果。主要知识点:引导层动画、动作补间动画FLASH如何制作树叶飘落​jingyan.baidu.comFlash如何制作飞舞的蝴蝶​jingyan.b…

ef mysql 外键 一对一_EFCore-一对一配置外键小记2

前后两次遇到这样的错误:The property xx on entity type xxxx has a temporary value. Either set a permanent value explicitly or ensure that the database is configured to generate values for this property.多数情况下是表配置关系会出现这样的问题。我实…

矩阵快速幂 HDU3483

1 #include <iostream>2 #include <cstring>3 4 using namespace std;5 6 //矩阵大小上限7 const int SIZ100;8 int MOD;9 10 //矩阵大小为n*m&#xff0c;初始化全部为011 struct mat12 {13 int n,m;14 long long ar[SIZ][SIZ];15 mat()16 {17 …

哲学家就餐问题python_Python实现哲学家就餐问题实例代码

哲学家就餐问题&#xff1a; 哲学家就餐问题是典型的同步问题&#xff0c;该问题描述的是五个哲学家共用一张圆桌&#xff0c;分别坐在五张椅子上&#xff0c;在圆桌上有五个盘子和五个叉子&#xff08;如下图&#xff09;&#xff0c;他们的生活方式是交替的进行思考和进餐&am…

fpga摄像头模块_FPGA开源项目:双目测距(一)之双目图像采集显示以及图片保存...

1.简述这个项目是大三下学期暑假(也就是2019年8份)完成的&#xff0c;当时的视频效果已发布在bilibili上&#xff0c;这是我们的省级的科研立项&#xff0c;其实就我一个人负责完成。发布bilibili后很多人比较感兴趣&#xff0c;打算年初回学校完成毕设期间开源的&#xff0c;一…

github ssh 配置_Github远程仓库克隆更新本机,SSH协议免密操作配置和注意事项

Github远程仓库-克隆远程仓库到本机 【重点】目标如何克隆远程仓库到本机呢&#xff1f;小结下载项目的命令&#xff1a;git clone https://gitee.com/kekesam/sassweb777.git注意&#xff1a;1&#xff1a;它会自动创建本地仓库&#xff1b;2&#xff1a;它也会自动和远程仓库…

golang中文文档_【译】Go 语言源码贡献官方指导文档

以前给 Go 语言项目源码提交过一些 commits&#xff0c;期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考&#xff0c;因为最近又提交了几个 commits&#xff0c;就又把这篇文档再看了一遍&#xff0c;有感于 Go 团队在项目管…

mysql增加最大连接数_mysql最大连接数怎么设置

设置mysql最大连接数的方法&#xff1a;首先打开mysql的控制台&#xff1b;然后输入语句【set GLOBAL max_connections1000;】即可直接设置最大连接数。通常&#xff0c;mysql的最大连接数默认是100, 最大可以达到16384&#xff1b;如果我们想修改mysql的最大连接数&#xff0c…

让一个动画一直执行的属性是_iOS 动画 一

View AnimationsAnimatable properties• bounds: 改变 bounds 属性可以在当前 view 内改变子视图等的相对位置。• frame: 改变 frame 可以移动或者缩放 view 。• center: 当你想移动 view 到屏幕的新位置时&#xff0c;可以改变此属性。• backgroundColor: 背景颜色。• al…

阿里云java mysql环境_阿里云搭建centos java mysql nginx环境

1.上传下载yum install lrzszsz下载rz上传2.安装压缩命令yum install -y unzip zip;3.安装javarpm -ivh jdk-8u161-linux-x64.rpm4.安装mysqlyum install libaioyum -y remove mariadb-libs-5.5*rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpmrpm -ivh mysql-commun…

ide快捷键_一款好用的IDE怎么可以没有代码提示?

我在使用过IntelliJ IDEA(一款Java开发工具)之后&#xff0c;感觉Delphi的IDE在编写代码方面尤其是代码提示方面和IntelliJ IDEA相比真的天差地别&#xff0c;所以决定认真的研究一下Delphi的代码提示功能一般情况下我们使用Delphi的开发工具都会安装cnpack专家包&#xff0c;但…

IOS开发学习记录第4天之C语言学习

&#xff08;一&#xff09;、今天我们要学习的主要包括一下内容&#xff1a; 1、标示符概念及其命名原则 在C语言中&#xff0c;符号常量&#xff0c;变量&#xff0c;数组&#xff0c;函数等都需要一定的名称&#xff0c;我们把这种名称称之为标识符。 标识符划分&#xff1a…

mysql pmm 布署_给 mysql 安装 pmm 监控

PMM 说明PMM(Percona Monitoring and Management) 是一款监控和分析 MySQL 服务的一套工具&#xff0c;可以从图形化的方式看到 MySQL 服务的各种性能指标&#xff0c;慢查询分析、连接数、线程状态、查询信息、缓存信息等等&#xff0c;对分析 MySQL 运行时问题很有帮助。PMM …

java 自定义注解_Java注解

前言近日在阅读开源项目&#xff0c;发现项目里好多奇奇怪怪的注解(DataScope、Log...)看得我一脸懵&#xff0c;不知道大家是否也有过这样的经历&#xff0c;回想了一下&#xff0c;发现自己对于注解的知识&#xff0c;好像只停留在Override。。。异常尴尬&#xff0c;所以今天…

java开发和基于asp.net开发有什么优越性?_java语言的入门开始介绍

java编程语言是目前世界最流行的编程语言&#xff0c;它是在c的基础上开发出来的语言&#xff0c;它取其精华去其糟粕让java语言具有功能强大和简单易用的特征。java具有&#xff1a;面对对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。java可以编写…

响应性web设计实战总结(二)

响应性web设计实战总结(二) 阅读目录 背景知识&#xff1a;Gulp-less安装及配置如下对响应性web总结&#xff0c;之前总结过2篇文章&#xff1b;可以看如下&#xff1a; http://www.cnblogs.com/tugenhua0707/p/4147569.html http://www.cnblogs.com/tugenhua0707/p/4598657.h…

uploadify java 上传_jquery使用uploadify插件实现多文件的上传(java版)

2、安装&#xff0c;由于下载下来的例子是php版本的&#xff0c;所以我只留下了主要的几个文件。如图&#xff1a;4、使用前台页面&#xff1a;pageEncoding"UTF-8"%>html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR…

js 多个定时器_JS中的同步/异步编程

1. 进程(process)/线程(thread)进程process&#xff1a; 电脑端安装很多的应用软件&#xff0c;每当运行一个应用程序&#xff0c;相当于开辟一个进程&#xff08;而对于浏览器来说&#xff0c;每新建一个页卡访问一个页面&#xff0c;都是新开辟一个进程&#xff09;任务管理器…