爆搜 + 模拟 --- codeforces 475C
学习一下虚拟IP和IP漂移的概念。
1.虚拟IP
在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。
虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机。
虚拟IP一般用作达到HA(High Availability)的目的,比如让所有项目中数据库链接一项配置的都是这个虚IP,当主服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用服务器。
2.虚拟IP原理
ARP是地址解析协议,它的作用很简单,将一个IP地址转换为MAC地址,然后给传输层使用。
每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关 系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。
在Linux下可以使用arp命令操作ARP高速缓存。
比如存在物理机A(IP是192.168.192.54 )和物理机器B(IP是192.168.192.40),A作为对外服务的主服务器(比如数据库主库),B作为备份机器,两台服务器之间的通信是通过Heartbeat,即主服务器会定时的给备份服务器发送数据包,告知主服务器服务正常,当备份服务器在规定时间内没有收到主服务器的Heartbeat,就会认为主服务器宕机,则备份服务器就会升级为主服务器。假设物理机A的ARP缓存如下:
地址 类型 硬件地址 标志 Mask 接口
192.168.192.54 ether ec:f4:bb::xx:xx C eth0
192.168.192.237 ether ec:f4:bb::xx:xx C eth0
192.168.192.40 ether :e3::c0:xx:xx C eth0
...
另外物理机器B(IP是192.168.192.40)的ARP缓存如下:
地址 类型 硬件地址 标志 Mask 接口
192.168.192.54 ether ec:f4:bb::xx:xx C eth0
192.168.192.237 ether ec:f4:bb::xx:xx C eth0
192.168.192.40 ether ec:f4:bb::xx:xx C eth0
...
当机器B通过BeatHeart得知机器A对外服务质量低于预期的时候(比如发生故障,服务无响应),会将自己的ARP缓存发送出去,让路由器修改路由表,告知虚拟地址应该指向我(物理机器B,192.168.192.40),这时候,外界再次访问虚拟IP的时候,机器B会变成主服务器,而A降级为备份服务器。这就完成了主从机器的自动切换,这一切对外界是透明的。
3.IP漂移
上面的VIP自动切换的过程就称之为IP漂移。
我们可以通过Keepalived来实现这个过程。 Keepalived是一个基于VRRP协议(Virtual Router Redundancy Protocol,即虚拟路由冗余协议)来实现的LVS(负载均衡器)服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
爆搜 + 模拟 --- codeforces 475C的更多相关文章
- bzoj4325: NOIP2015 斗地主(爆搜+模拟)
去年的我还不会打斗地主呵呵 觉得这道题挺难的..抄了一遍题解,感触挺多的= = 首先出牌的方式太多了不能每次都枚举所有的出牌方式, 于是分成两部分:1.顺子 2.带牌等其他 每次dfs都搜顺子,而且顺 ...
- bzoj1306: [CQOI2009]match循环赛(模拟爆搜)
Input第一行包含一个正整数n,队伍的个数.第二行包含n个非负整数,即每支队伍的得分.Output输出仅一行,即可能的分数表数目.保证至少存在一个可能的分数表.Sample Input 6 5 6 ...
- 【csp模拟赛2】 爆搜 方格加数
[题目描述] xyz1048576正在玩一个关于矩阵的游戏. 一个n*m的矩阵,矩阵中每个数都是[1,12]内的整数.你可以执行下列两个操作任意多次: (1)指定一行,将该行所有数字+1. (2)指定 ...
- B君的历史——复数乘法&&爆搜
题意 设 $r = \frac{-1+\sqrt7 i}{2}$,对任意整数 $x, y$ 都可以找到一个有限的整数集合 $S$,使得 $$x + y\sqrt7 i = \sum_{k \in S ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
- 【 POJ - 1204 Word Puzzles】(Trie+爆搜|AC自动机)
Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10782 Accepted: 4076 Special ...
- hdu5323 Solve this interesting problem(爆搜)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Solve this interesting problem Time Limit ...
- hdu4536-XCOM Enemy Unknown(爆搜)
XCOM-Enemy Unknown是一款很好玩很经典的策略游戏. 在游戏中,由于未知的敌人--外星人入侵,你团结了世界各大国家进行抵抗.随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3 ...
随机推荐
- 分布式代码管理 tortoisehg mercurial
下载客户端: https://bitbucket.org/tortoisehg/files/downloads mercurial客户端下载:http://mercurial.s ...
- Codeforces Round #384 (Div. 2) E. Vladik and cards 状压dp
E. Vladik and cards 题目链接 http://codeforces.com/contest/743/problem/E 题面 Vladik was bored on his way ...
- nodejs express 框架解密3-中间件模块
本文档是基于express 3.4.6 的 在上篇中我们提到了中间件,这篇主要解释这个模块,middleware.js 为: var utils = require('./utils'); /** * ...
- python排序算法的实现-插入
1.算法: 设有一组关键字{ K 1 , K 2 ,…, K n }:排序开始就认为 K 1 是一个有序序列:让 K 2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列:然后让 K ...
- mysql性能监控工具:mycheckpoint的使用方法
mycheckpoint 是针对mysql的一个性能监控.指标采集的python写成的工具. 工作原理说明: mycheckpoint是一段脚本,通过将其设置为crontab定时任务,每几分钟采集一次 ...
- TSPL学习笔记(4):数组相关练习
最近研究函数式编程,都是haskell和scheme交互着看的,所以笔记中两种语言的内容都有,练习一般也都用两种语言分别实现. 本篇练习一些数组有关的问题,之所以与数组相关是因为在命令式编程中以下问题 ...
- 查看macbook是多少位
Prince-2:~ snowinmay$ uname -aDarwin Prince-2.local 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 ...
- nginx lua获取客户端ip
--获取客户端ip function get_client_ip() local headers=ngx.req.get_headers() local ip=headers["X-REAL ...
- JIT
http://www.cppblog.com/vczh/category/9583.html
- 查看、关闭linux自启动网络服务
1.查看 netstat --tulnp ..master smtp 服务 2.关闭 /etc/init.d/服务 stop 停止 : start 启动 chkconfig 服务 off 关闭 ...