Code Bye

web项目分布式架构搭建

本人这几天研究分布式架构  有些概念了解的很不清楚   所以拿出来跟各位讨论讨论,请各位大胆的发表本人的观点
本人的了解分布式架构主要有以下几种
1::tomcat+nginx+memcached+mysql集群
案例:1个nginx服务器  3个tomcat服务器  1个memcached    相似这种搭建起来的也属于一种分布式架构   对吗 各位?
2:然后现在炒的比较热门的hadoop+hbase等也是属于一种分布式架构?这种也是属于分布式吗 各位?
问一下大家:1和2都有什么优点和缺点?
其中1跟2的区别  (个人了解)
不同点:
1 主要是利用软件自身有的功能进行分布式 例如mysql集群 通过配置就可以完成  而2呢  是通过代码的方式来实现分布式架构
相同点:
2:不管哪一种方式都需要部署同一个web项目多份  例如3个tomcat就需要把同一个web项目copy三份到3个tomcat下面  而假如是hadoop架构也一样需要把同一个web项目copy多份部署到多个hadoop的服务器上去。
3:由于第2点 copy多份 就会出现主从服务器之分      例如我们修改了程序代码 我们只需要把变动的代码copy到主服务器  需要通过监控的方式把变动的代码 自动从主服务器上copy到其他从服务器上去   这种用的是什么软件?哪位知道?
讨教的地方:
mysql集群 就是任何一台mysql服务器的数据都是一致  仅仅是我们的web程序访问数据库的时候 mysql会自动根据服务器压力来判断 我们到底需要访问哪台mysql服务器而已?对吗 各位?
还有一点在web项目当中应用mysql集群或在项目当中通过配置多个数据源的方式来利用多个数据库有什么优缺点???
解决方案

80

haddop + hbase 和你的架构相比,人家支持分布式计算
而你的架构估计也就是  多个节点做load balance、高可以用性
其实你的这种设计也算目前比较主流的设计,假如能充分利用到memcached 以及 mysql读写分离,那就完美了。
还有,mysql数据同步也会有延迟的,并没有你想的那样,唰的一下,集群内全部的服务器瞬间就同步完成了。
所以在延迟的这点时间内,为了保证数据的一致性会用到缓存服务,如memcached
还有,mysql集群 和你的业务没有任何关系,假如你想实现mysql集群的load balance,要你的应用服务或中间件支持,mysql不会做你说的那些事情,仅仅增删改查。
多个数据源可以扛压力,读写分离,这就不用说了,还有就是容灾,挂了一台也不会有事,不过这些事情还是要你自个处理的,简单的做法就是封装个数据源,本人判断可用性和分流,假如要分布式,那估计要配合搞个中间价了

20

集群和负载均衡还不是一样的概念,当然虽然他们的貌似有共同的目的。
集群就是,增加多的服务器来分担前台的请求。但是LB(负载均衡)是有一些算法来检查你的哪些Node(节点)是空闲或忙的,然后再分配给相对空闲的Node处理

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明web项目分布式架构搭建