初期:用户访问量低,只弄了一台服务器,一个tomcat项目运行一个web工程。
中期:用户访问量提高,服务器崩了,为了解决这个问题,购买服务器,增加服务器数量,然后每个服务器中个各放了一份,使用nginx代理转发。(这就是运用集群原理)
后期:用户访问量不断增加,响应速度变慢,服务器又崩了,在不考虑增加服务器带宽、内存和CPU的情况下如何解决这个问题?先解决响应速度变慢,用户频繁调用数据库,在客户端与数据库之间,使用redis缓存。解决之后,又发现问题:由于每台服务器运行一个tomcat,放着一个web工程,用户有可能在商品详情存在大幅度调用数据库,而订单列表调用幅度小,此时就存在着模块之间耦合度高,一个功能升级其他也需要升级,扩展性差,不能灵活部署。是该考虑项目重构,把项目按照模块分为不同的系统(使用zookeeper进行模块之间通信),例如:订单系统,会员系统、搜索系统、商品信息系统。把每个模块进行拆分,用户在哪个系统访问频繁,就针对哪个系统进行对症下药,增加缓存还是使用其他技术。(这样我们就可以单独对这个模块进行服务性能的提升,不用全部都一起提升。也降低了代码的耦合度,模块之间互不影响,即使后期增加开发人员,也可按照敏捷开发思想只对其负责模块进行开发,效率大大提升)。这样一个web工程就拆分成多个web工程(多个tomcat部署)。那这个项目就可以在一台服务器部署多个工程(不同端口进行通信)或者多台服务器运行单个项目。(这就是分布式原理)
总而言之,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。一、主从服务器
1、两台服务器。主服务器Master复制数据的更新、插入、删除等 *** 作; 从服务器Slave负责查询(读写分离,减缓服务器压力)
2、主服务器更新数据的同时更新从服务器的数据(数据备份)
3、当主服务器出现文件时,可用从服务器代替主服务器,保证网站的正常运行,同时检测主服务器存在的问题。注意:从服务器仍然只有查询功能,如银行系统更新时只能查询余额,不能存取款。(服务器可用性)
4、当把从服务器真正设置为主服务器时(即主从服务器设置调换),拥有更新数据的功能。
5、MyISAM不支持事务,但查询性能比InnoDB强;InnoDB支持事务,更新 *** 作性能比MyISAM强。因此,主服务器可以设置成MyISAM存储引擎,从服务器可以设置成InnoDB存储引擎(灵活设置存储引擎)
二、负载均衡
1、多台服务器。一个域名映射到多台服务器IP。
2、用户发出请求,提交到负载均衡服务器,由负载均衡服务器发送请求到不同的服务器。
3、负载均衡服务器选取服务器方法(负载均衡算法):
1、轮询:每台服务器轮换
2、加权轮询:为了应对某些服务器性能好,可以让他们的权重高一点,被选中的几率大一些。
3、最少连接:哪台服务器处理的连接少,就发给哪台服务器。
4、随机
4、存在的问题:客户端存在缓存,如果服务器出现故障,客户端报错。
5、分类:DNS负载均衡、>
你说的这个概念范围比较大,所有集群,可以是服务器集群,比如:底层服务器虚拟化,各个节点组成的集群。也可以是应用程序,比如一个web网站,部署多个节点,通过nginx去配置反向代理,这也是一个集群。又或者是redis、zookeeper、kafka等都可以部署集群模式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)