分布式常用方案

JAVA ZMAS 19℃ 0评论

keepalive+nginx实现双机热备

Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,
类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与 其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。 Nginx+Keepalived一般是一主一备,正常情况下都有主机的nginx绑定公网虚拟ip,提供负载均衡服务。主备机器上都有一个keepalive通过脚本监控着nginx。当主机nginx挂掉以后,主机keepalive检测到异常后,就进行自杀,这样备机的keepalive就会接收到信息,备机的keepalive就会通知备机的nginx监管主机的工作。当主机恢复以后,备机keepalive同样会收到消息,就会把主动权又交还给主机。

mysql读写分离

数据库的读写分离,利用MySql主从复制,主库进行增删改,从库进行读取数据 Q:为什么用读写分离呢 A:增加了机器的处理能力,现在大多数的web应用读的操作 要远大于写的操作,而且读是可以接受时间上的延迟的 Q:读写分离的好处 A: 1. 因为从库不用管增删改的事情,所以可以配置没有事务的 MyISAM引擎来提升读的性能 2. 增加了机器冗余,当一台机器宕机了另一台机器可以快速 补上 3. 负载均衡,一主多从相当于是一个数据库集群 4. 主库从库同步是通过binog来同步的,发送binlog是异 步进行的,这样提升了效率,因为我们保持最终一致就行了 5. 不读写分离会导致高并发的时候delete、update、insert等sql操作会被大量的select操作所阻塞(PS:适用于目前大多的web应用) 问:如何在一个大型项目的sql语句中找出执行较慢的sql语句? 这一块就是涉及到MySql的慢查询了: show status like ‘slow_queries’ 在日志中就记录了MySql默认的大于10秒的sql语句了 (PS:主要记一下有slow_queries这个东西就行)

集群和分布式的概念

分布式是指将不同的业务分布在不同的地方。
而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。
而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

FastDFS为什么要结合Nginx?

我们在使用FastDFS部署一个分布式文件系统的时候,
通过FastDFS的客户 端API来进行文件的
上传、下载、删除等操作。
同时通过FastDFS的HTTP
服务器来提供HTTP服务。
但是FastDFS的HTTP服务较为简单,
无法提供负 载均衡等高性能的服务,
所以FastDFS的开发者一淘宝的架构师余庆同 学,
为我们提供了 Nginx上使用的FastDFS模块(也可以叫FastDFS的 Nginx模块)。其使用非常简单。

转载请注明:ZMAS‘S blog » 分布式常用方案

喜欢 (3)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址