前一篇文章《架构设计:负载均衡层设计方案(1)——负载场景和解决方式》中我们描述了要搭设负载均衡层的业务场景和负载均衡层搭建和扩展思路。从这篇文章开始的后几篇文章,我们将详细介绍Nginx、LVS和Nginx+Keepalived、LVS+Keepalived和LVS+Nginx+Keepalived的安装细节,以及它们的性能优化方式。

Nginx和LVS都是可以独立工作的,Keepalived作为检测机制,不但可以和Nginx、LVS集成也可以和其他软件集成形成高可用方案(例如可以和MySQL数据库集成、可以和Jetty服务器集成、还可以和自己写的程序集成)。所以首先我们先来详细讲述Nginx和LVS的核心工作原理、安装过程和优化方式,再分别讲解他们和Keepalived的集成方式。这样的方式应该可以使您更快的掌握其中的核心,并能最快的融会贯通。

1、Nginx重要算法介绍

Nginx是什么,请自行百度。我们先介绍几个关键的算法,如果您还不了解这些算法在Nginx中所起的作用,请不要着急,本文后半部分将说明它们的作用。

1.1、一致性Hash算法

这里写图片描述

一致性Hash算法是现代系统架构中的最关键算法之一,在分布式计算系统、分布式存储系统、数据分析等众多领域中广泛应用。针对这个系列的博文,在负载均衡层、业务通信层、数据存储层都会有他的身影。

  • hash算法的关键在于它能够根据不同的属性数据,生成一串不相同的hash值,并且能够将这个hash值转换为

    02321
    范围整数(即上图中的圆环)

  • 一台服务器的某个或者某一些属性当然也可以进行hash计算(通常是这个服务器的IP地址和开放端口),并且根据计算分布在这个圆环上的某一个点。也就是图中圆环上的蓝色点。

  • 一个处理请求当然也可以根据这个请求的某一个或者某一些属性进行hash计算(可以是这个请求的IP、端口、cookie值、URL值或者请求时间等等),并且根据计算记过分布在这个圆环上的某一个点上。也就是上图圆环上的黄色点。

  • 我们约定落在某一个蓝点A左侧和蓝点B右侧的黄色点所代表的请求,都有蓝点A所代表的服务器进行处理,这样就完成解决了“谁来处理”的问题。在蓝色点稳定存在的前提下,来自于同一个Hash约定的请求所落在的位置都是一样的,这就保证了服务处理映射的稳定性。

  • 当某一个蓝色点由于某种原因下线,其所影响到的黄色点也是有限的。即下一次客户端的请求将由其他的蓝色点所代表的服务器进行处理。

1.2、轮询与加权轮询

这里写图片描述

  • 当有任务需要传递到下层节点进行处理时,任务来源点会按照一个固定的顺序,将任务依次分配到下层节点,如果下层可用的节点数量为X,那么第N个任务的分配规则为:

    =(NmodX)+1

  • 轮询处理在很多架构思想中都有体现:DNS解析多IP时、LVS向下转发消息时、Nginx向下转发消息时、Zookeeper向计算节点分配任务时。了解基本的轮询过程有助于我们在进行软件架构设计时进行思想借鉴。

  • 但是上面的轮询方式是有缺陷的,由于各种客观原因我们可能无法保证任务处理节点的处理能力都是一样的(CPU、IO、内存频率等不同)。所以A节点业务能同时处理100个任务,但是B节点可能同时只能处理50个任务。

  • 在这种情况下我们需要依据下层节点某个或者多个属性设置权值。这个属性可能是网络带宽、CPU繁忙程度或者就是各一个固定的权值。

那么加权轮询的分配依据是什么呢?有很多分配依据,例如:概率算法(此算法中包括蒙特卡罗算法,拉斯维加斯算法和舍伍德算法,在网络上有很多介绍资料)、最大公约数法。这里我们对最大公约数算法进行介绍,因为该方法简单实用:

这里写图片描述

  • 首先按照某种规则计算得到每个处理节点的权值,上文已经说到计算规则可能是这个服务节点的CPU利用率、网络占用情况或者在配置文件中的固定权重。

  • 求这些权值的最大公约数,在上图中三个节点的权值分别是100、80、60.那么求得的最大公约数就是20(如果您忘记了最大公约数的定义,请自行复习)。那么这三个节点的被除结果分别是5、4、3,求和值为12。

  • 得到以上的计算结果,就可以开始进行请求分配了,公式同样为:

    (NmodX)+1=Y

    其中N表示当前的第N次任务;X表示整除后的求和结果;Y为处理节点。

总结一下:加权轮询是轮询方案的补充,通过将处理节点的属性转换成权值可以有效的描述处理节点的处理能力,实现更科学的处理任务分配。加权轮询的关键在于加权算法,最大公约数算法简单实用,定位效率高。

2、Nginx的安装

2.1、准备工作

操作系统:centOS 6.5。

Nginx的下载地址:http://nginx.org/en/download.html。请下载stable的版本1.8.0。后续Nginx肯定还会有升级,官网上面会持续更新stable version。

最小必备组件:
yum -y install make zlib zlib-devel gcc gcc-c++ ssh libtool

2.2、正式安装

  • 下载nginx1.8.0版本
    这里写图片描述

  • 解压nginx的tar文件
    这里写图片描述

  • 进行源码编译
    这里写图片描述

我们看到这时编译检查报错,报错写得很清楚,为了支持HTTP重写模块,Nginx需要PCRElib的支持。那我们到http://ncu.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz下载一个稳定的pcre版本编译安装即可(不一定是8.37版本)。

  • 再进行源码编译安装
    ./configure –prefix=/usr/nginx-1.8.0
    make && make install
    这里写图片描述

  • 整个验证、编译、安装过程不应该报任何错误。如果您使用prefix设置了安装目标目录,那么可能您还需要在/etc/profix文件中设置环境变量:
    这里写图片描述

2.3、安装验证和启动

下面介绍几个nginx常用的命令,如果您可以正常使用这些命令,那么说明nginx已经安装成功了。

nginx:直接在命令行键入nginx,就可以启动nginx。

nginx -t:检查配置文件是否正确。这个命令可以检查nginx.conf配置文件其格式、语法是否正确。如果配置文件存在错误,则会出现相应提示;如果nginx.conf文件正确,也会出现相应的成功提示。

nginx -s reload:重加载/重启nginx——以新的nginx.conf配置文件中的定义。

nginx -s stop:停止nginx。

3、进阶

Nginx在安装完成后,不用更改任何配置信息就可以直接运行。但是很显然这不会满足我们生产环境的要求。所以我们要重点介绍Nginx的配置文件,以及其中重要的配置项的含义。

3.1、重要配置项

如果您是按照本文的描述方式安装的Nginx,那么Nginx的主配置文件在:/usr/nginx-1.8.0/conf/nginx.conf的位置,如果您在编译安装的时候并没有指定安装目录,那么Nginx的主配置文件在:/usr/local/nginx/conf/nginx.conf的位置。当然您还可以在启动Nginx的时候使用 -c 的参数人为指定Nginx的配置文件位置(但是这种方式不建议)。

我们重新整理了Nginx的配置文件,将其分块,以便于讲解:

#================================以下是全局配置项
#指定运行nginx的用户和用户组,默认情况下该选项关闭(关闭的情况就是nobody)
#user  nobody nobody;     
#运行nginx的进程数量,后文详细讲解
worker_processes  1;      
#nginx运行错误的日志存放位置。当然您还可以指定错误级别
#error_log  logs/error.log;    
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#指定主进程id文件的存放位置,虽然worker_processes != 1的情况下,会有很多进程,管理进程只有一个
#pid        logs/nginx.pid;    events {#每一个进程可同时建立的连接数量,后问详细讲解worker_connections  1024;   #连接规则,可以采用[kqueue rtsig epoll select poll eventport ],后文详细讲解use   epoll;    
}
#================================以上是全局配置项http {#================================以下是Nginx后端服务配置项upstream backendserver1 {#nginx向后端服务器分配请求任务的方式,默认为轮询;如果指定了ip_hash,就是hash算法(上文介绍的算法内容)#ip_hash    #后端服务器 ip:port ,如果有多个服务节点,这里就配置多个server 192.168.220.131:8080; server 192.168.220.132:8080;    #backup表示,这个是一个备份节点,只有当所有节点失效后,nginx才会往这个节点分配请求任务#server 192.168.220.133:8080 backup;        #weight,固定权重,还记得我们上文提到的加权轮询方式吧。#server 192.168.220.134:8080 weight=100;    }#================================以上是Nginx后端服务配置项#=================================================以下是 http 协议主配置#安装nginx后,在conf目录下除了nginx.conf主配置文件以外,有很多模板配置文件,这里就是导入这些模板文件include       mime.types;#HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式default_type  application/octet-stream;     #日志格式#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#日志文件存放的位置#access_log  logs/access.log  main;         #sendfile 规则开启sendfile        on;#指定一个连接的等待时间(单位秒),如果超过等待时间,连接就会断掉。注意一定要设置,否则高并发情况下会产生性能问题。keepalive_timeout  65;                      #开启数据压缩,后文详细介绍gzip  on;                                   #=================================================以上是 http 协议主配置#=================================================以下是一个服务实例的配置server {#这个代理实例的监听端口listen       80;#server_name 取个唯一的实例名都要想半天?server_name  localhost; #文字格式charset utf-8;  #access_log  logs/host.access.log  main;    #location将按照规则分流满足条件的URL。"location /"您可以理解为“默认分流位置”。location / {#root目录,这个html表示nginx主安装目录下的“html”目录。root   html;   #目录中的默认展示页面index  index.html index.htm;        }#location支持正则表达式,“~” 表示匹配正则表达式。location ~ ^/business/ {   #方向代理。后文详细讲解。proxy_pass http://backendserver1;   }#redirect server error pages to the static page /50x.html#error_page  404              /404.html;error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}#=================================================以上是一个服务实例的配置
}

以上是一个完整的nginx配置信息,可以直接粘贴使用,但不建议您这样做。因为上文中很多关键的配置属性都还没有讲解。这样粘贴复制不利于您的工作和学习。

3.1.1、use [ kqueue | rtsig | epoll | select | poll ]

科技在发展,社会在进步,满足摩尔定义的IT行业更是这样。以前所有的连接都是阻断式的(blocking I/O)也就是说一个TCP连接线程在发出Request后,代码就不会再往下执行了,直到得到远端的Response为止;服务器端也一样的,在处理完某一个客户端的Request之前,其他客户端的请求都会等待。这种处理方式使客户端和服务器端的通讯性能大打折扣。

很明显多线程貌似能够解决这个问题:一个线程处理不了,我可以再开线程来处理啊。但是多线程是有局限性的:

  • 创建一个线程会消耗有限的资源。以JAVA JVM为例,创建一个新的线程JVM会单独开放1MB的栈内存空间(通过-Xss参数可设置),虽然栈内存不受-Xmx和-Xms两个参数影响,但是可以说明线程的创建是需要消耗额外资源的。

  • 多线程工作时,计算机的CPU会耗费大量的资源让多线程在不同的状态下进行切换。在后续的文章中本书还会介绍依据这样的原理让计算机的CPU呈波形变化的编程方式。

  • 在Linux操作系统下,单个用户能够创建的线程和进程总数、整个操作系统能够创建的线程总数都是有限的。通过limit -a命令,您可以查看相关的内核参数。

  • 所以依靠线程来解决bio的问题是不靠谱的,只能起到缓解处理并行请求的作用。您可以想象一次并发10万个处理请求的问题,是不可能在计算机上同时创建10万个线程来解决的。

基于上面的描述,NIO(no blocking I/O)技术就这样诞生了。依靠event loop机制(想看这个机制的详细分析,请持续关注我的博客^_^),单个线程可以同时处理多个request请求,并在处理完产生response的时候,回调相关的远程事件。根据NIO实现机制的不同,技术名称也就不同了。我要说什么,您,应该懂了。

epoll、kqueue 等这些组件都是对多路复用网络I/O模型的实现,其中epoll是poll的升级版本,在linux环境下可以使用但限于linux2.6及以上版本。kqueue用在bsd上使用。

3.1.2、worker_processes和worker_connections

worker_processes:操作系统启动多少个工作进程运行Nginx。注意是工作进程,不是有多少个nginx工程。在Nginx运行的时候,会启动两种进程,一种是主进程master process;一种是工作进程worker process。例如我在配置文件中将worker_processes设置为4,启动Nginx后,使用进程查看命令观察名字叫做nginx的进程信息,我会看到如下结果:

这里写图片描述

图中可以看到1个nginx主进程,master process;还有四个工作进程,worker process。主进程负责监控端口,协调工作进程的工作状态,分配工作任务,工作进程负责进行任务处理。一般这个参数要和操作系统的CPU内核数成倍数。

worker_connections:这个属性是指单个工作进程可以允许同时建立外部连接的数量。无论这个连接是外部主动建立的,还是内部建立的。这里需要注意的是,一个工作进程建立一个连接后,进程将打开一个文件副本。所以这个数量还受操作系统设定的,进程最大可打开的文件数有关。网上50%的文章告诉了您这个事实,并要求您修改worker_connections属性的时候,一定要使用ulimit -n 修改操作系统对进程最大文件数的限制,但是这样更改只能在当次用户的当次shell回话中起作用,并不是永久了。接着您继续Google/百度,发现30%的文章还告诉您,要想使“进程最大可打开的文件数”永久有效,还需要修改/etc/security/limits.conf这个主配置文件,但是您应该如何正确检查“进程的最大可打开文件”的方式,却没有说。

下面本文告诉您全面的、正确的设置方式:

  • 更改操作系统级别的“进程最大可打开文件数”的设置
    首先您需要操作系统的root权限:

    叫您的操作系统管理员给您。

    修改limits.conf主配置文件

    vim /etc/security/limits.conf

    在主配置文件最后加入下面两句:

    * soft nofile 65535
    * hard nofile 65535

    注意“”是要加到文件里面的。这两句话的含义是soft(应用软件)级别限制的最大可打开文件数的限制,hard表示操作系统级别限制的最大可打开文件数的限制,“”表示所有用户都生效。保存这个文件(只有root用户能够有权限)。

    保存这个文件后,配置是不会马上生效的,为了保证本次shell会话中的配置马上有效,我们需要通过ulimit命令更改本次的shell会话设置(当然您如果要重启系统,我也不能说什么)。

    ulimit -n 65535

    执行命令后,配置马上生效。您可以用ulimit -a 查看目前会话中的所有核心配置:

    ulimit -a
    core file size (blocks, -c) 0
    data seg size (kbytes, -d) unlimited
    scheduling priority (-e) 0
    file size (blocks, -f) unlimited
    pending signals (-i) 7746
    max locked memory (kbytes, -l) 64
    max memory size (kbytes, -m) unlimited
    open files (-n) 65535
    pipe size (512 bytes, -p) 8
    POSIX message queues (bytes, -q) 819200
    real-time priority (-r) 0
    stack size (kbytes, -s) 10240
    cpu time (seconds, -t) unlimited
    max user processes (-u) 7746
    virtual memory (kbytes, -v) unlimited
    file locks (-x) unlimited

    请注意open files这一项。

  • 更改Nginx软件级别的“进程最大可打开文件数”的设置:
    刚才更改的只是操作系统级别的“进程最大可打开文件”的限制,作为Nginx来说,我们还要对这个软件进行更改。打开nginx.conf主陪文件。您需要配合worker_rlimit_nofile属性。如下:

    user root root;
    worker_processes 4;
    worker_rlimit_nofile 65535;

    #error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;

    #pid logs/nginx.pid;
    events {
    use epoll;
    worker_connections 65535;
    }

    这里只粘贴了部分代码,其他的配置代码和主题无关,也就不需要粘贴了。请注意代码行中加粗的两个配置项,请一定两个属性全部配置。配置完成后,请通过nginx -s reload命令重新启动Nginx。

  • 验证Nginx的“进程最大可打开文件数”是否起作用:

    那么我们如何来验证配置是否起作用了呢?在linux系统中,所有的进程都会有一个临时的核心配置文件描述,存放路径在/pro/进程号/limit。

    首先我们来看一下,没有进行参数优化前的进程配置信息:

    ps -elf | grep nginx
    1 S root 1594 1 0 80 0 - 6070 rt_sig 05:06 ? 00:00:00 nginx: master process /usr/nginx-1.8.0/sbin/nginx
    5 S root 1596 1594 0 80 0 - 6176 ep_pol 05:06 ? 00:00:00 nginx: worker process
    5 S root 1597 1594 0 80 0 - 6176 ep_pol 05:06 ? 00:00:00 nginx: worker process
    5 S root 1598 1594 0 80 0 - 6176 ep_pol 05:06 ? 00:00:00 nginx: worker process
    5 S root 1599 1594 0 80 0 - 6176 ep_pol 05:06 ? 00:00:00 nginx: worker process

    可以看到,nginx工作进程的进程号是:1596 1597 1598 1599。我们选择一个进程,查看其核心配置信息:

    cat /proc/1598/limits

    这里写图片描述

    请注意其中的Max open files ,分别是1024和4096。那么更改配置信息,并重启Nginx后,配置信息就是下图所示了:

    这里写图片描述

3.1.3、max client的计算方式:

这个小结我们主要来说明两个在网上经常说的公式:

  • max_client = worker_processes * worker_connections

  • max_client = worker_processes * worker_connections / 4

这两个公式分别说明,在Nginx充当服务器(例如nginx上面装载PHP)的时候,Nginx可同时承载的连接数量是最大工作线程 * 每个线程允许的连接数量;当Nginx充当反向代理服务的时候,其可同时承载的连接数量是最大工作线程 * 每个线程允许的连接数量 / 4。

第一个问题很好理解,关键是第二个问题:为什么会除以4。网上的帖子给出的答案是。浏览器->Nginx、Nginx->后端服务器、后端服务器->Nginx、Nginx->浏览器,所以需要除以四,我想说TCP协议是双向全双工协议,为什么需要这样建立连接呢?所以这个说法肯定是错误的。

在nginx官方文档上有这样一句话:

Since a browser opens 2 connections by default to a server and nginx uses the fds (file descriptors) from the same pool to connect to the upstream backend。

翻译成中文的描述就是,浏览器会建立两条连接到Nginx(注意两条连接都是浏览器建立的),Nginx也会建立对应的两条连接到后端服务器。这样就是四条连接了。

3.1.4、gzip

后文补讲,放在这里算是一个扣子^_^

3.2、健康检查模块

后文补讲,放在这里算是一个扣子^_^

3.3、图片处理模块

后文补讲,放在这里算是一个扣子^_^

3.4、Nginx的Rewrite功能

后文补讲,放在这里算是一个扣子^_^

4、后文介绍

我原本计划一篇文章就把Nginx的主要特性都进行介绍,奈何Nginx的强大功能确实太多了。为了保证您对知识的全面消化,这边文章就写到这里了。LVS的讲解再往后拖一周左右吧,下篇文章我们继续讲解Nginx的强大功能,包括gzip功能、强大的rewrite功能,以及两个扩展模块:健康检查模块和图片处理模块,至于Nginx集成PHP作为服务器的特性,为了保证这个系列文章的中心线络就不再讲了,那又是一套完整的知识体系。敬请期待我的下一篇博客,谢谢。另外,目前一周一篇文章的频率我觉得是比较合适的,后面的文章我争取保持这个速度。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. git创建分支,合并分支,常用命令

    本文非原创,来源于:点击这里这篇文章写得非常全面,而且通俗易懂,本文详细的介绍了:git如何创建分支,如何合并分支,如何管理分支,如何解决冲突。Git 分支几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时…...

    2024/5/10 17:22:16
  2. java多文本框使用右键弹出菜单复制粘贴剪切功能实现

    在学习JPopupMenud的过程中,做了一个小软件。实现了多个文本框,同时使用右键弹出菜单,并实现复制、粘贴、剪切功能。 实际上在网上查的时候,网上有一个很普遍的右键复制、粘贴、剪切的功能(http://blog.csdn.net/xinem/article/details/3866904)。我抄过来发现可以实现功…...

    2024/5/10 13:42:32
  3. C#网络编程技术教程pdf 文档分享

     《C#网络编程技术教程》是一本系统介绍C#网络编程技术的教材,《C#网络编程技术教程》共11章,由两部分组成。第1部分(第1~5章)为基础知识,内容包括Visual C#.NET集成开发环境、C#语言的基础知识、面向对象的程序设计、C#的Windows编程方法、C#的常用数据类、网络编程的…...

    2024/4/20 23:36:18
  4. nginx配置tomcat负载均衡+nginx服务器+apache后端服务器

    nginx配置tomcat负载均衡nginx可以作为Web前置机,将客户请求按照一定算法合理分配给后置的tomcat应用服务器,从而达到均衡目的。当然如果应用使用了session会话,后置的tomcat应用还要保证session共享才能达到应用集群效果。本文不讨论tomcat的集群问题,重点讨论nginx如何配…...

    2024/5/10 13:43:31
  5. KindEditor富文本编辑器的使用

    一、KindEditor 是什么?KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP…...

    2024/5/10 9:07:34
  6. CUDA编程入门极简教程

    码字不易,欢迎给个赞!欢迎交流与转载,文章会同步发布在公众号:机器学习算法全栈工程师(Jeemy110)目录目录 前言 CUDA编程模型基础 向量加法实例 矩阵乘法实例 小结 参考资料前言2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型…...

    2024/4/20 21:17:26
  7. 五年青青修福报,绝症维权难奈何。

    文章目录概述HR与主管录音法律知识普及 概述 今天看了一篇文章: 网易裁员,让保安把身患绝症的我赶出公司。我在网易亲身经历的噩梦! 尚未看完文章,烟已入喉三根。 本篇有着感情色彩,如果您对于观点不赞同,评论讲述即可,切莫祸及家人。 怀着的一颗忐忑的心看下去,我无法完…...

    2024/5/10 10:18:46
  8. nginx+tomcat+redis 做负载均衡时session 共享实现

    针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redis的session共享;(如果想搭建本环境可从上一篇开始,涉及到nginx的环境搭建http://blog.csdn.net/qq584852076/article/details/46469141) 下载JDK7、tomcat7以备后续测试; 一、下载tomc…...

    2024/5/10 7:14:59
  9. Python编程自学教程资源

    得益于当前人工智能、数据科学的热潮,越来越多的人开始学习编程语言。Python作为一门易上手的脚本语言,可以应用于诸如人工智能、深度学习、数据挖掘、计算机视觉、web开发等各种不同领域,同时它也是当下最热门的编程语言。那么,Python该怎么学习呢?应该从哪里开始学习呢?…...

    2024/4/20 23:36:15
  10. 限制对比度自适应直方图均衡化算法原理、实现及效果

    本文为转载,原博客地址:http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html一、自适应直方图均衡化(Adaptive histgram equalization/AHE)1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术。和普通的直方图均衡算法不同,AHE算法…...

    2024/4/20 23:36:14
  11. 实时消息传输协议(RTMP)详解

    概述概念:RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频、视频和互动内容)。RTMP提供了一套全双工的可靠的多路复用消息服务,类似于TCP协议[RFC0793],用来在一对结点之间并行传输带时间戳的音频流,视频流,数据流。通常情况…...

    2024/4/20 23:36:13
  12. 使用MySQL Router实现高可用、负载均衡、读写分离

    目录一、MySQL Router简介1. 功能2. 架构3. 使用二、安装配置三、自动失败切换四、负载均衡五、读写分离六、多实例1. 环境2. 配置文件3. 功能测试参考:一、MySQL Router简介MySQL Router是MySQL官方提供的一个轻量级中间件,可以在应用程序与MySQL服务器之间提供透明的路由方…...

    2024/4/20 23:36:13
  13. 写项目时怎样将后台管理使用的富文本编辑器保存的内容转为HTML格式

    前言: 在写博客项目时,后台管理使用了editormd编辑器,内容为Markdown的语法,但在前台显示时显示的不是我想要的效果,如图: 完全没有啥效果,所以得引入一个markdown转HTML的插件: https://github.com/atlassian/commonmark-java 根据这个项目内的介绍引用即可,可以只引…...

    2024/4/20 23:36:11
  14. 汇川技术小型PLC梯形图编程系列教程(零):梯形图编程学习指南

    本文转自:汇川技术小型PLC梯形图编程系列教程(零):梯形图编程学习指南 http://www.yanjuntech.cn/archives/1969本人目前接触的都是汇川的产品,以后有机会接触其他公司的产品的时候,再写其他厂家的PLC等控制器的详细教程。 编程软件安装汇川技术的小型PLC使用的是汇川自己的…...

    2024/4/20 23:36:12
  15. Linux高级网络编程系列教程

    一、网络应用层编程1、Linux网络编程01——网络协议入门2、Linux网络编程02——无连接和面向连接的区别3、Linux网络编程03——字节序和地址转换4、Linux网络编程04——套接字5、Linux网络编程05——C/S与B/S架构的区别6、Linux网络编程06——UDP协议编程7、Linux网络编程07——…...

    2024/4/28 10:20:30
  16. 平衡自动化与智能化,构建AI生态系统

    https://www.toutiao.com/a6685280749622395406/越来越多的人接受人工智能将改变我们的工作方式的现实,人们还一致认为,这可能会导致许多工作岗位被替代或者更确切地说,被人工智能系统所取代。这促使一些人考虑有关人工智能道德的问题,并指出把两者分开是不明智的,有人建议…...

    2024/4/20 23:36:09
  17. 结合Apache和Tomcat实现集群和负载均衡

    本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵。 因原文中有较多的贴图,如若各位读者一时不想亲自动手而直想看到配置效果,可查看原文。 一:…...

    2024/4/20 23:36:08
  18. 详述如何退出 Vim 编辑器

    Vim 是一个类似于 Vi 的著名的功能强大、高度可定制的文本编辑器,其在 Vi 的基础上改进和增加了很多特性。怎么说呢?学习如何用 Vim 进行文本编辑应该算是程序员的必备技能之一啦!But,很多同学在使用 Vim 进行文本编辑的时候却不知道如何退出 Vim 编辑器,这就有些尴尬啦!…...

    2024/4/20 23:36:06
  19. 中国工程院院士高文ICTC演讲《国家新一代人工智能发展规划》

    2018年10月24-26日,以“创新发展模式深化媒体融合”为主题的第二十六届媒体融合技术研讨会(ICTC2018)在杭州黄龙饭店举行。在24日举办的主题报告会上,中国工程院院士高文做了《国家新一代人工智能发展规划》为主题的演讲。ICTC由国家广播电视总局批准、中国广播电影电视社会组…...

    2024/4/20 23:36:06
  20. Nginx 与Tomcat 实现动静态分离、负载均衡

    一.Nginx简介:Nginx一个高性能的HTTP和反向代理服务器, 具有很高的稳定性和支持热部署、模块扩展也很容易。当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器,Nginx采取了分阶段资源分配技术,处理静态…...

    2024/4/20 23:36:05

最新文章

  1. OSPF链路状态数据库

    原理概述 OSPF是一种基于链路状态的动态路由协议,每台OSPF路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。 LSA有多种不同的类型,不同类型的LSA的功能和作用是不同的&…...

    2024/5/10 18:55:03
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/9 21:23:04
  3. Oracle备份和还原的几种方式

    1、使用数据泵方式 exp demo/demoorcl buffer1024 filed:\back.dmp fully demo:用户名、密码 buffer: 缓存大小 file: 具体的备份文件地址 full: 是否导出全部文件 ignore: 忽略错误,如果表已经存在,则也是覆盖 exp demo/de…...

    2024/5/10 0:24:00
  4. jQuery(一)

    文章目录 1. 基本介绍2.原理示意图3.快速入门1.下载jQuery2.创建文件夹,放入jQuery3.引入jQuery4.代码实例 4.jQuery对象与DOM对象转换1.基本介绍2.dom对象转换JQuery对象3.JQuery对象转换dom对象4.jQuery对象获取数据获取value使用val()获取…...

    2024/5/10 0:15:03
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/10 12:36:12
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/9 15:10:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/10 10:22:18
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/9 17:11:10
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57