本人这几天研究分布式架构 有些概念了解的很不清楚 所以拿出来跟各位讨论讨论,请各位大胆的发表自己的观点
我的了解分布式架构主要有以下几种
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集群或者在项目当中通过配置多个数据源的方式来利用多个数据库有什么优缺点???
haddop + hbase 和你的架构相比,人家支持分布式计算
而你的架构估计也就是 多个节点做load balance、高可以用性
其实你的这种设计也算目前比较主流的设计,如果能充分利用到memcached 以及 mysql读写分离,那就完美了。
还有,mysql数据同步也会有延迟的,并没有你想的那样,唰的一下,集群内所有的服务器瞬间就同步完成了。。
所以在延迟的这点时间内,为了保证数据的一致性会用到缓存服务,如memcached
还有,mysql集群 和你的业务没有任何关系,如果你想实现mysql集群的load balance,要你的应用服务或中间件支持,mysql不会做你说的那些事情,仅仅增删改查。。
多个数据源可以扛压力,读写分离,这就不用说了,还有就是容灾,挂了一台也不会有事,不过这些事情还是要你自个处理的,简单的做法就是封装个数据源,自己判断可用性和分流,如果要分布式,那估计要配合搞个中间价了
集群和负载均衡还不是一样的概念,当然虽然他们的貌似有共同的目的。
集群就是,增加多的服务器来分担前台的请求。但是LB(负载均衡)是有一些算法来检查你的哪些Node(节点)是空闲或者忙的,然后再分配给相对空闲的Node处理
的确版主有概念性的认知不足,应该先看看基知识的书。
集群,与应用分布式是两个概念。
hadoop 是把一堆硬件看成一个物理资源,进行统一的调配,实现高可用性,并且能将低性能的硬件连接组合成一个高性能的设备,虽然这样做能源利用率会很低。
应用分布式只是为了提高性能与稳定性,比如构建memcached,数据库读写分离,WebServer的动态负载均衡,静态CDN等等。
总的来说 应用分布式发展到一定规模,会遇到硬件以及运维管理的瓶颈。因为你管理的是一堆硬件与业务的结合体。
集群的概念就是把 应用层与硬件层分离,它只解决硬件层的部署、连接管理、容灾、分布式复制、同步、Node的算力调配,大数据文件系统等等的问题,降低运维难度,并让系统硬件高扩展性,不用为突然增加N台服务器或者突然减少N台服务器而去对应用层做很大的调整。
所以集群技术不是发明出来的,是生长出来的,没有一个公司一上来就用去构建自己的集群的,只有当业务规模发展到一定程度后才会逐步的构建集群技术,然后将应层层往上面迁移。
转自csdn论坛:http://bbs.csdn.net/topics/390785809
我的了解分布式架构主要有以下几种
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集群或者在项目当中通过配置多个数据源的方式来利用多个数据库有什么优缺点???
haddop + hbase 和你的架构相比,人家支持分布式计算
而你的架构估计也就是 多个节点做load balance、高可以用性
其实你的这种设计也算目前比较主流的设计,如果能充分利用到memcached 以及 mysql读写分离,那就完美了。
还有,mysql数据同步也会有延迟的,并没有你想的那样,唰的一下,集群内所有的服务器瞬间就同步完成了。。
所以在延迟的这点时间内,为了保证数据的一致性会用到缓存服务,如memcached
还有,mysql集群 和你的业务没有任何关系,如果你想实现mysql集群的load balance,要你的应用服务或中间件支持,mysql不会做你说的那些事情,仅仅增删改查。。
多个数据源可以扛压力,读写分离,这就不用说了,还有就是容灾,挂了一台也不会有事,不过这些事情还是要你自个处理的,简单的做法就是封装个数据源,自己判断可用性和分流,如果要分布式,那估计要配合搞个中间价了
集群和负载均衡还不是一样的概念,当然虽然他们的貌似有共同的目的。
集群就是,增加多的服务器来分担前台的请求。但是LB(负载均衡)是有一些算法来检查你的哪些Node(节点)是空闲或者忙的,然后再分配给相对空闲的Node处理
的确版主有概念性的认知不足,应该先看看基知识的书。
集群,与应用分布式是两个概念。
hadoop 是把一堆硬件看成一个物理资源,进行统一的调配,实现高可用性,并且能将低性能的硬件连接组合成一个高性能的设备,虽然这样做能源利用率会很低。
应用分布式只是为了提高性能与稳定性,比如构建memcached,数据库读写分离,WebServer的动态负载均衡,静态CDN等等。
总的来说 应用分布式发展到一定规模,会遇到硬件以及运维管理的瓶颈。因为你管理的是一堆硬件与业务的结合体。
集群的概念就是把 应用层与硬件层分离,它只解决硬件层的部署、连接管理、容灾、分布式复制、同步、Node的算力调配,大数据文件系统等等的问题,降低运维难度,并让系统硬件高扩展性,不用为突然增加N台服务器或者突然减少N台服务器而去对应用层做很大的调整。
所以集群技术不是发明出来的,是生长出来的,没有一个公司一上来就用去构建自己的集群的,只有当业务规模发展到一定程度后才会逐步的构建集群技术,然后将应层层往上面迁移。
转自csdn论坛:http://bbs.csdn.net/topics/390785809