集群

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

负载均衡

负载均衡是指基于反向代理能将现在所有的请求根据指定的策略算法,分发到不同的服务器上。常用实现负载均衡的可以用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集群,任何一个节点都是可读可写的,读写强一致性。

如何解决数据不一致

在config/database.php mysql配置块中将sticky设置为true

sticky 是一个 可选值,它可用于立即读取在当前请求周期内已写入数据库的记录。若 sticky 选项被启用,并且当前请求周期内执行过 「写」 操作,那么任何 「读」 操作都将使用 「写」 连接。这样可确保同一个请求周期内写入的数据可以被立即读取到,从而避免主从延迟导致数据不一致的问题。不过是否启用它,取决于应用程序的需求。

同步代码到多台服务器

Laravel为我们提供了扩展包laravel/envoy,它为定义远程服务器的日常任务,提供了一套简洁、轻量的语法。Blade 风格语法即可实现部署任务的配置、Artisan 命令的执行等。

composer global require laravel/envoy

Envoy 任务都应在项目根目录下的 Envoy.blade.php 中定义。写入一下内容

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])@task('deploy', ['on' => ['web-1', 'web-2']]) cd site git pull origin {{ $branch }} composer update php artisan migrate@endtask

以上代码意思就是在命令行envoy run deploy时候,我们会ssh到会web-1,web-2 执行

cd site git pull origin {{ $branch }} php artisan migrate

也可以自己手写一个Linux cron来实现代码同步

点击了解更多去学习:非常使用的代码优化,怎么才能写好代码

weblogic集群部署与负载均衡_集群,负载均衡,分布式的讲解和多台服务器代码同步...相关推荐

  1. EureKa服务注册与发现(集群部署Eureka与支付模块集群部署、订单模块访问负载均衡调用支付服务实现)

    上一遍文章完成了,聚合父工程.消费模块.支付模块.公共模块的搭建.RestTemplate调用支付模块 该篇项目创建gitv2.0的管理分子完成学习 1.Eureka基础知识 1.1. 什么是服务治理 ...

  2. 集群部署中解决定时任务重复执行的问题-redis分布式锁应用

    背景描述 有小伙伴私信我,关于存在定时任务的项目在集群环境下部署如何解决重复执行的问题,PS:定时任务没有单独拆分. 概述:之前的项目都是单机器部署,所以定时任务不会重复消费,只会执行一次.而在集群环 ...

  3. mycat集群_HA高可用架构_验证高可用---MyCat分布式数据库集群架构工作笔记0030

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面咱们已经按照下面的,ip地址,已经安装好了,我们的高可用了 然后我们知道了,我们首先在myca ...

  4. 群晖python套件包_利用群晖Docker安装ubuntu16.04搭建python网站服务器(部署篇)

    在帖子<利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)(地址:http://www.cirdown.com:81/thread-185-1-1.html)&g ...

  5. 群晖经典第三方套件_使用群晖第三方套件进行IPV6的DDNS

    本帖最后由 minlang112 于 2020-3-12 22:01 编辑 一.前言 随着IPV6的强(qiang)力(zhi)推广,越来越多的"御三家"(电信.联通.移动)用户可 ...

  6. 黑群晖docker清理缓存_黑群晖 NAS 瞎折腾 篇一:超简单的docker设置frp内网穿透

    黑群晖 NAS 瞎折腾 篇一:超简单的docker设置frp内网穿透 2020-04-15 11:32:08 25点赞 241收藏 27评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇 ...

  7. 沙洋有几个微服务群_集群 分布式 微服务

    转自:https://blog.csdn.net/qq_37788067/article/details/79250623 概念: 集群是个物理形态,分布式是个工作方式. 1.分布式:一个业务分拆多个 ...

  8. 【Java项目】好客租房——数据库集群部署

    前置知识: [Mysql] 系统架构存在的问题 DB Server 目前只是用了单节点服务,如果面对大并发,海量数据存储,单节点的系统架构存在很严重问题,需要实现 Mysql集群 ,来应对大并发.海量 ...

  9. OpenStack Swift集群部署流程与简单使用

    之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...

最新文章

  1. ubuntu与xp双系统中如何设置默认启动系统?
  2. 领域驱动第四章-读书笔记
  3. 【theano-windows】学习笔记十七——梯度中的consider_constant
  4. OPENCV-7 学习笔记
  5. Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)...
  6. rhel5下的DNS服务器架设
  7. 3结构介绍_接收机基本结构
  8. Linux 命令(88)—— more 命令
  9. POJ 2104 K-th Number (区间第k大)
  10. 记录:mysql 字符串拼接函数
  11. SecureCRT软件下载及注册方法-附带软件及软件注册机
  12. 申请微信公众号平台流程
  13. 为什么很多宽带的上传速度都很慢??
  14. CRM管理软件有哪些?这5款好用的CRM软件值得推荐!
  15. VS-( 图片的上传 )
  16. mysql---运维角度浅谈MySQL数据库优化
  17. Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields【菜鸟读者】
  18. 巫师编程语言“咒语” 设想
  19. 【Lua进阶系列】实例lua调用capi
  20. Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制

热门文章

  1. 阿里云安全掌门人肖力:企业上云,如何保证安全?| 问底中国 IT 技术演进
  2. 程序员找工作黑名单:除了 996.ICU,程序员还将如何自救?
  3. 故宫网站遭“围攻”!
  4. 揭秘苹果“地下黑工厂”:临时工薪资无保障,男厕所门口排长龙
  5. 董明珠:格力绝不裁员;腾讯缺席首批游戏版号;iPhone XS Max 口袋自燃 | 极客头条...
  6. Google 的 Angular 迫使我放弃了 Web 开发
  7. 量子计算是否会终结区块链?
  8. @程序媛,为什么到今天女性薪资依然不如男?
  9. 数据结构与算法 完整版双链表
  10. python编程输入,Python编程:输入变量返回nam