一个分布式服务器集群架构方案 落日映苍穹つ 2022-06-11 09:29 160阅读 0赞 > > ![logo-big-data-cloud.jpg_objectId_1190000002418709_token_1d97d9af2716f6922b5fe5d5ea745018][] -------------------- # 0x01.大型网站演化 # 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。 集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster,nginx即可实现),科学计算集群(High Performance Computing Cluster)。 分布式是指将不同的业务分布在不同的地方;而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。 之前在网上看到一篇关于大型网站演化的博客。[http://www.cnblogs.com/leefreeman/p/3993449.html][http_www.cnblogs.com_leefreeman_p_3993449.html] 每个大型网站都会有不同的架构模式,而架构内容也就是在处理均衡负载,缓存,数据库,文件系统等,只是在不同的环境下,不同的条件下,架构的模型不一样,目的旨在提高网站的性能。 最初的架构只有应用程序,数据库,文件服务。 ![2014-12-10-big-website-framwork-1.jpg_objectId_1190000002418709_token_b0c31c6be938e0f9f001f8c99864f764][] 到后来,分布式服务、集群架设。 ![2014-12-10-big-website-framwork-10.jpg_objectId_1190000002418709_token_52cdb401b9ebdc64708779f2415b9fa7][] -------------------- # 0x02.关于均衡负载方案 # 在上一篇,[《Nginx反向代理实现均衡负载》][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节点进行检测和负载均衡; ![2014-12-10-keepalive-haproxy.jpg_objectId_1190000002418709_token_f7a1c5cd0092ca2c2882d3b4e2bde773][] -------------------- # 0x03.关于Redis缓存方案 # 缓存分为服务器缓存和应用程序缓存。 关于应用程序内缓存,已经在[Jue后台框架][Jue]里面做了模块处理了。 关于服务器缓存,主要缓存服务器文件,减少服务器和php交互,减少均衡负载服务器和应用程序服务器交互。 缓存里面有一种典型的memcached,现在用的多的是redis轻量级缓存方案。 关于memcached与redis,看这篇 [《Memcached vs Redis?》][Memcached vs Redis] Redis主要将数据存储在各种格式:列表,数组,集合和排序集,一次能接受多个命令,阻塞读写,等待直到另一个进程将数据写入高速缓存。 ![2014-12-10-redis-cache.jpg_objectId_1190000002418709_token_e42e3ab7a22ac3a9697f9321b90b47e8][] 一篇关于Reids缓存方案。[《高可用、开源的Redis缓存集群方案》][Redis] -------------------- # 0x04.关于搜索引擎Sphinx方案 # (第一期不做,后期需求时候考虑) Sphinx是俄罗斯人开发的,号称是很吊啦,千万级数据检索,每秒10MB/s,搭过环境。 Sphinx和MySQL是基于数据库的全文引擎,创建索引是B+树和hash key-value的方式。 原理类似于用底层C检索MySQL,然后弄出一个sphinx.conf配置文件,索引与搜索均以这个文件为依据进行,要进行全文检索,首先就要配置好sphinx.conf,告诉sphinx哪些字段需要进行索引,哪些字段需要在where,orderby,groupby中用到。 [Sphinx中文][Sphinx] -------------------- # 0x05.关于NoSQL快速存储方案 # NoSQL在这里的使用价值是处理一些琐事,比如用户个人网站的一些css值,height,width,color等等的小而繁多的数据,采用NoSQL旨在提升数据库速度,减少对MySQL的SELECT请求。 关于NoSQL的方案很多了,选一个简单的MongDB好了。 -------------------- # 0x06.关于分布式MySQL方案 # (做分布式MySQL还没尝试过,初期也不清楚mysql所需要的压力,所以第一期不打算做分布式MySQL) [《标准MySQL数据库外的5个开源兼容方案》][MySQL_5] -------------------- # 0x07.分布式集群方案 # 综合起来,大致就是如下模型,初探分布式架构,很多模块将就形势做调整,时时更新中,待续。。。 ![2014-12-10-big-website-framwork-design.png_objectId_1190000002418709_token_47f5bedac40478ce42e5bd7445f8de89][] -------------------- ##### 本文出自 [夏日小草][Link 1],转载请注明出处:[http://homeway.me/2014/12/10/think-about-distributed-clusters/][http_homeway.me_2014_12_10_think-about-distributed-clusters] ##### [logo-big-data-cloud.jpg_objectId_1190000002418709_token_1d97d9af2716f6922b5fe5d5ea745018]: https://segmentfault.com/image?src=http://homeway.me/image/logo-big-data-cloud.jpg&objectId=1190000002418709&token=1d97d9af2716f6922b5fe5d5ea745018 [http_www.cnblogs.com_leefreeman_p_3993449.html]: http://www.cnblogs.com/leefreeman/p/3993449.html [2014-12-10-big-website-framwork-1.jpg_objectId_1190000002418709_token_b0c31c6be938e0f9f001f8c99864f764]: https://segmentfault.com/image?src=http://homeway.me/image/2014-12-10-big-website-framwork-1.jpg&objectId=1190000002418709&token=b0c31c6be938e0f9f001f8c99864f764 [2014-12-10-big-website-framwork-10.jpg_objectId_1190000002418709_token_52cdb401b9ebdc64708779f2415b9fa7]: https://segmentfault.com/image?src=http://homeway.me/image/2014-12-10-big-website-framwork-10.jpg&objectId=1190000002418709&token=52cdb401b9ebdc64708779f2415b9fa7 [Nginx]: http://homeway.me/2014/12/05/nginx-reverse-proxy-to-load-balance/ [2014-12-10-keepalive-haproxy.jpg_objectId_1190000002418709_token_f7a1c5cd0092ca2c2882d3b4e2bde773]: https://segmentfault.com/image?src=http://homeway.me/image/2014-12-10-keepalive-haproxy.jpg&objectId=1190000002418709&token=f7a1c5cd0092ca2c2882d3b4e2bde773 [Jue]: https://github.com/grasses/Jue-MVC [Memcached vs Redis]: http://www.bigdatalittlegeek.com/blog/2014/3/25/memcached-vs-redis [2014-12-10-redis-cache.jpg_objectId_1190000002418709_token_e42e3ab7a22ac3a9697f9321b90b47e8]: https://segmentfault.com/image?src=http://homeway.me/image/2014-12-10-redis-cache.jpg&objectId=1190000002418709&token=e42e3ab7a22ac3a9697f9321b90b47e8 [Redis]: http://www.infoq.com/cn/news/2014/11/open-source-redis-cache [Sphinx]: http://sphinxsearch.com/wiki/doku.php?id=sphinx_chinese_tutorial [MySQL_5]: http://www.infoq.com/cn/news/2014/11/mysql-five-open-source-project [2014-12-10-big-website-framwork-design.png_objectId_1190000002418709_token_47f5bedac40478ce42e5bd7445f8de89]: https://segmentfault.com/image?src=http://homeway.me/image/2014-12-10-big-website-framwork-design.png&objectId=1190000002418709&token=47f5bedac40478ce42e5bd7445f8de89 [Link 1]: http://homeway.me/ [http_homeway.me_2014_12_10_think-about-distributed-clusters]: http://homeway.me/2014/12/10/think-about-distributed-clusters/
还没有评论,来说两句吧...