lvs

一、负载均衡LVS基本介绍

LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。

LVS:
1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
3、应用范围比较广,可以对所有应用做负载均衡;
4、不支持正则处理,不能做动静分离。
5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
6、配置 复杂,对网络依赖比较大,稳定性很高。

Ngnix:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;
7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
8、不支持Session的直接保持,但能通过ip_hash来解决。、对Big request header的支持不是很好,
9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)
10、Nginx还能做Web服务器即Cache功能。

HAProxy的特点是:
1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6、HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
10、不能做Web服务器即Cache。

二、LVS的组成

LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。

1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

三、lvs的三种模式

VS/DR模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

注意:

需要设置lo接口的VIP不能响应本地网络内的arp请求。

总结:

1、通过在调度器 LB 上修改数据包的目的 MAC 地址实现转发。注意源地址仍然是 CIP,目的地址仍然是 VIP 地址。

2、请求的报文经过调度器,而 RS 响应处理后的报文无需经过调度器 LB,因此并发访问量大时使用效率很高(和 NAT 模式比)

3、因为 DR 模式是通过 MAC 地址改写机制实现转发,因此所有 RS 节点和调度器 LB 只能在一个局域网里面

4、RS 主机需要绑定 VIP 地址在 LO 接口(掩码32 位)上,并且需要配置 ARP 抑制。

5、RS 节点的默认网关不需要配置成 LB,而是直接配置为上级路由的网关,能让 RS 直接出网就可以。

6、由于 DR 模式的调度器仅做 MAC 地址的改写,所以调度器 LB 就不能改写目标端口,那么 RS 服务器就得使用和 VIP 相同的端口提供服务。

7、直接对外的业务比如WEB等,RS 的IP最好是使用公网IP。对外的服务,比如数据库等最好使用内网IP。

优点

和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

DR模式的效率很高,但是配置稍微复杂一点,因此对于访问量不是特别大的公司可以用haproxy/nginx取代。日1000-2000W PV或者并发请求1万一下都可以考虑用haproxy/nginx。

缺点

所有 RS 节点和调度器 LB 只能在一个局域网里面。

VS/TUN模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

注意:

需要设置lo接口的VIP不能在公网上出现。

总结:

1.TUNNEL 模式必须在所有的 realserver 机器上面绑定 VIP 的 IP 地址

2.TUNNEL 模式的 vip ------>realserver 的包通信通过 TUNNEL 模式,不管是内网和外网都能通信,所以不需要 lvs vip 跟 realserver 在同一个网段内

3.TUNNEL 模式 realserver 会把 packet 直接发给 client 不会给 lvs 了

4.TUNNEL 模式走的隧道模式,所以运维起来比较难,所以一般不用。

优点

负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

缺点:

隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

VS/NAT模式

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。

注意:

在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端

特点:

1、NAT 技术将请求的报文和响应的报文都需要通过 LB 进行地址改写,因此网站访问量比较大的时候 LB 负载均衡调度器有比较大的瓶颈,一般要求最多之能 10-20 台节点

2、只需要在 LB 上配置一个公网 IP 地址就可以了。

3、每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址。

4、NAT 模式支持对 IP 地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

优点:

集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

缺点

扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

 

七、LVS的八种调度算法

1. 轮叫调度 rr
这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。

2. 加权轮叫 wrr
这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多。

3. 最少链接 lc
这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1

4. 加权最少链接 wlc
这个算法比 lc 多了一个权重的概念。

5. 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

6. 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

7. 目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

8. 源地址散列调度算法 sh
与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

DR模式
direct_server:</span>192.168.254.17<span style="color: #000000;">

real_server:</span>192.168.254.18<span style="color: #000000;">
real_server:</span>192.168.254.19 <span style="color: #008000;">#</span><span style="color: #008000;">vip为虚拟服务ip</span>
vip:192.168.254.250<span style="color: #000000;">

direct_server:

yum install ipvsadm

老板

direct_server:

ipvsadm -C #清除配置信息

<span style="color: #008000;">#</span><span style="color: #008000;">添加对外提供的服务ip</span>
ipvsadm -A -t 192.168.254.250:80 -s rr <span style="color: #008000;">#</span><span style="color: #008000;">-A为ADD -t为tcp -s rr为设置算法为轮叫算法</span> <span style="color: #008000;">#</span><span style="color: #008000;">添加2台real_server主机</span>
ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18:80 -g <span style="color: #008000;">#</span><span style="color: #008000;">-a为add -t为tcp -r为realserver -g为DR路由模式</span>
ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19:80 -g <span style="color: #008000;">#</span><span style="color: #008000;">-a为add -t为tcp -r为realserver -g为DR路由模式</span> <span style="color: #008000;">#</span><span style="color: #008000;">配置网卡的子网口为vip,ip地址为192.168.254.250</span>
ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255<span style="color: #000000;"> up </span><span style="color: #008000;">#</span><span style="color: #008000;">添加路由(访问192.168.254.250都走ens33:0这个网卡)</span>
route add -host 192.168.254.250<span style="color: #000000;"> dev ens33:0

员工1 | 员工2

real_server:

#在回环地址的子网口上配置服务ip(vip)

ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up

</span><span style="color: #008000;">#</span><span style="color: #008000;">添加路由</span>
route add -host 192.168.254.250<span style="color: #000000;"> dev lo:0 echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_announce
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_announce echo </span><span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_announce
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_announce arp_ignore:定义接收到ARP请求时的响应级别
0:默认,只用本地配置的有响应地址都给予响应
</span>1<span style="color: #000000;">:仅仅在目标IP是本地地址,并且是配置在请求进来的接口上的时候才给予响应
(仅在请求的目标地址配置请求到达的接口上的时候,才给予响应) arp_announce:定义将自己的地址向外通告时的级别
0:默认,表示使用配置在任何接口的任何地址向外通告
</span>1<span style="color: #000000;">:尽量仅向目标网络通告与其网络匹配的地址
</span>2<span style="color: #000000;">:仅向与本地接口上地址匹配的网络进行通告

tun隧道模式

lvs-server

ifconfig tunl0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.0 up

route add -host 192.168.254.250 dev tunl0

ipvsadm -A -t 192.168.254.250:80 -s rr

ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18 -i

ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19 -i

real server
ifconfig tunl0 </span>192.168.254.250 netmask 255.255.255.255 broadcast 192.168.254.250<span style="color: #000000;"> up
route add </span>-host 192.168.254.250<span style="color: #000000;"> dev tunl0
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span> &gt;/proc/sys/net/ipv4/conf/tunl0/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span> &gt;/proc/sys/net/ipv4/conf/tunl0/<span style="color: #000000;">arp_announce
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span> &gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span> &gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_announce
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span> &gt;/proc/sys/net/ipv4/conf/tunl0/<span style="color: #000000;">rp_filter
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">0</span><span style="color: #800000;">"</span> &gt; /proc/sys/net/ipv4/conf/all/<span style="color: #000000;">rp_filter 0:不开启源地址校验。
</span>1<span style="color: #000000;">:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。
如果反向路径不是最佳路径,则直接丢弃该数据包。
</span>2<span style="color: #000000;">:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),
如果反向路径不同,则直接丢弃该数据包。

keepalived:

yum install keepalived

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

#全局配置

global_defs {

notification_email {

#收件人地址

}

#邮件服务器

}

VRRP配置DS1

vrrp_instance VI_1 {

state MASTER #角色类型MASTER|BACKUP

interface ens33 #网卡名称

virtual_router_id 51 #虚拟路由id(需要与BACKUP一致)

priority 100 #优先级

advert_int 1 #没1秒检查一次

#nopreempt #非抢占模式



authentication {

auth_type PASS #认证类型 主备之间必须一样

auth_pass 1111 #认证密码 主备之间必须一样

}

virtual_ipaddress {

192.168.254.250 #虚拟ip(vip)

}

}

#LVS配置

virtual_server 192.168.254.250 80 {

delay_loop 3 #健康检查时间间隔

lb_algo rr #负载均衡调度算法

lb_kind DR #负载均衡转发规则

protocol TCP #协议



real_server 192.168.254.18 80 { #要监控的real_server的ip和端口号

weight 1 #权重

TCP_CHECK { #基于tcp协议的检查

connect_timeout 3 #连接时间超时

retry 3 #重连次数

delay_before_retry 3 #重连间隔时间

}

}

real_server </span>192.168.254.19 80<span style="color: #000000;"> {
weight </span>1<span style="color: #000000;">
TCP_CHECK {
connect_timeout </span>3<span style="color: #000000;">
retry </span>3<span style="color: #000000;">
delay_before_retry </span>3<span style="color: #000000;">
}
}

}

192.168.254.17 DS1

192.168.254.20 DS2

ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up

route add -host 192.168.254.250 dev ens33:0

192.168.254.18 RS1

ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up #loopback

route add -host 192.168.254.250 dev lo:0

echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_announce
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_announce

192.168.254.19 RS2

ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up #loopback

route add -host 192.168.254.250 dev lo:0

echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/lo/<span style="color: #000000;">arp_announce
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">1</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_ignore
echo </span><span style="color: #800000;">"</span><span style="color: #800000;">2</span><span style="color: #800000;">"</span>&gt;/proc/sys/net/ipv4/conf/all/<span style="color: #000000;">arp_announce

tail -f /var/log/messages

	<p class="postfoot">
posted on <span id="post-date">2018-11-30 23:08</span> <a href="https://www.cnblogs.com/fengzi7314/">疯子7314</a> 阅读(<span id="post_view_count">668</span>) 评论(<span id="post_comment_count">0</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=10047130" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(10047130);return false;">收藏</a>
</p>
</div>

lvs--小白博客的更多相关文章

  1. python之socket模块详解--小白博客

    主要是创建一个服务端,在创建服务端的时候,主要步骤如下:创建socket对象socket——>绑定IP地址和端口bind——>监听listen——>得到请求accept——>接 ...

  2. MariaDB第四章:视图,事务,索引,外键--小白博客

    视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...

  3. MariaDB第三章:数据库设计与备份--小白博客

    数据库设计 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 2.第二范式(确保表中的每列都和主键相关) 第 ...

  4. Mariadb第一章:介绍及安装--小白博客

    mariadb(第一章)   数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以 ...

  5. Ansible第二章:palybook介绍与使用--小白博客

    playbook tasks variables templates handlers roles yaml介绍 yaml是一个可读性高的用来表达资料序列的格式,yaml参考了其他多种语言,包括:xm ...

  6. Ansible第一章:基础认识--小白博客

    ansible Ansible:Ansible的核心程序Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等.可以通过file来 ...

  7. python第九章:面向对象--小白博客

     面向对象介绍 一.面向对象和面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点 ...

  8. python之yagmail模块--小白博客

    yagmail 实现发邮件 yagmail 可以简单的来实现自动发邮件功能. 安装 pip install yagmail 简单例子 import yagmail #链接邮箱服务器 yag = yag ...

  9. python之configparser模块详解--小白博客

    configparse模块 一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似 ...

  10. python第八章:多任务--小白博客

    多线程threading 多线程特点: #线程的并发是利用cpu上下文的切换(是并发,不是并行)#多线程执行的顺序是无序的#多线程共享全局变量#线程是继承在进程里的,没有进程就没有线程#GIL全局解释 ...

随机推荐

  1. Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)

    通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现>一文的学习,我们已经学会如何使用Nacos来实现服务的注册与发现,同时也介绍如何通过LoadBal ...

  2. webpack4.0各个击破(7)—— plugin篇

    webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...

  3. C#多线程编程笔记

    在开发中经常有遇到因为程序执行的时间过长,而造成程序假死的情况,这是因为我们的程序是同步执行的,当执行到需要长时间的操作时,程序就会等待当前的操作完成,从而造成程序假死.C#的异步与多线程就是为了解决 ...

  4. ----Juquery复选框全选反选及获取选中值Value

    --获取选中值 var pList = ""; $("[name='ckdProd']").each(function () { if ($(this).is( ...

  5. ORA-01940 无法删除当前已连接的用户之解决方案

    在执行drop user的时候,提示报错信息:ORA-01940: cannot drop a user that is currently connected SQL> drop user l ...

  6. Java开发笔记(五)数值变量的类型

    如今个人电脑的配置越来越高,内存和硬盘的容量大小都是以G为单位,而1G=1024M=1024*1024K=1024*1024*1024字节.不过在PC的早期发展阶段,电脑的存储空间却是十分有限的,像2 ...

  7. 让Mongo在Spring中跑起来

    本文标题为<让Mongo在Spring中跑起来>,旨在Spring中如何成功连接MongoDB并对其进行增删改查等操作,由于笔者也是刚接触,对其中的一些原由也不甚了解,若有错误之处,敬请指 ...

  8. SAP MM 可以不用创建盘点凭证直接录入盘点结果?

    SAP MM 可以不用创建盘点凭证直接录入盘点结果? 可以.SAP标准功能就支持这么做. 事务代码 MI09 (Enter Count w/o Reference to Document), 输入pl ...

  9. SuperMap GIS资料-----云与Web端技术资料集锦

    转自:http://blog.csdn.net/supermapsupport/article/details/70254484 产品白皮书 iServer产品  教学视频  许可说明  安装部署   ...

  10. 总结:BGP和静态路由并存,达到故障自动倒换的目的。

    总体结论: 在上云的场景中,客户需要本地数据中心到云上VPC,出现网络故障时做到自动倒换,保证业务不中断. 一.客户需求 1.客户有总厂.分厂.总厂是通过专线和VPN连接上云,分厂是通过专线先连接到总 ...