负载均衡,分布式,集群的理解,多台服务器代码如何同步

集群
我们的项目如果跑在一台机器上,如果这台机器出现故障的话,或者用户请求量比较高,一台机器支撑不住的话。我们的网站可能就访问不了。那怎么解决呢?就需要使用多台机器,部署一样的程序,让几个机器同时的运行我们的网站。那怎么分发请求到我们的所有机器上?所以负载均衡的概念就出现了。

负载均衡
负载均衡是指基于反向代理能将现在所有的请求根据指定的策略算法,分发到不同的服务器上。常用实现负载均衡的可以用 nginx,lvs。但是现在也有个问题,如果负载均衡服务器出现问题了怎么办?所以冗余的概念就出现了。

冗余
冗余其实就是两个或者多台服务器 一个主服务器,一个从服务器。 假设一个主服务器的负载均衡服务器出现了问题,从服务器能够替代主服务器来继续负载均衡。实现的方式就是使用 keepalive 来抢占虚拟主机。

分布式
分布式其实就是将一个大项目的拆分出来,单独运行。

举个上面的例子。假设我们的访问量特别大。我们就可以做成分布式,跟 cdn 一样的机制。在北京,杭州,深圳三个地方都搭建一个一模一样的集群。离北京近的用户就访问北京的集群,离深圳近的就访问深圳这边的集群。这样就将我们网站给拆分 3 个区域了,各自独立。

再举个例子比如我们 redis 分布式。redis 分布式是将 redis 中的数据分布到不同的服务器上面,每台服务器存储不同的内容,而 mysql 集群是每台服务器都放着一样的数据。这也就理解了分布式和集群的概念。

mysql 主从
mysql master 服务器会把 sql 操作日志写入到 bin.log 日志里 slave 服务器会去读 master 的 bin.log 日志,然后执行 sql 语句。

主从有以下几个问题。

1.master 服务器能写又能读,slave 却只能读。

slave 读取的数据还没有写入,这样该怎么解决呢?

1. 假如缓存,从缓存中读取。
2. 强制从 master 读取。
3. 使用 pxc 集群,任何一个节点都是可读可写的,读写强一致性。

posted @ 2021-04-27 18:08  宁佳兵  阅读(452)  评论(0编辑  收藏  举报