Chinaunix

标题: 有没有双主的HA做法 [打印本页]

作者: mordorwww    时间: 2014-02-15 10:45
标题: 有没有双主的HA做法
两边都是主
客户端同时向两边发请求,两边同时处理客户请求和给客户响应
好处是不需要同步和平滑,几乎可以做到无缝吧?

银行似乎有这种做法,不知道互联网有没有这种做法
作者: Iveon    时间: 2014-02-15 14:32
你说的是集群不是HA
作者: mordorwww    时间: 2014-02-15 15:25
本帖最后由 mordorwww 于 2014-02-15 15:51 编辑
Iveon 发表于 2014-02-15 14:32
你说的是集群不是HA



不是集群
比如我只有只有一个用户,
或者说每个用户同时向主备发请求,主备同时处理请求,主备间无需心跳 和数据同步,主备可以都向用户回响应结果
作者: q1208c    时间: 2014-02-17 08:24
双 A 的情况下, 一般是按集群的方式管理了. 所以, 2楼说得对.

楼主的想法在互联网很普遍呀. 比如你现在访问的 CU, 可能就不只一台服务器来响应你的请求.
作者: mordorwww    时间: 2014-02-17 08:38
q1208c 发表于 2014-02-17 08:24
双 A 的情况下, 一般是按集群的方式管理了. 所以, 2楼说得对.

楼主的想法在互联网很普遍呀. 比如你现在 ...

你还是没有理解我的意思
两个节点间不做负载均衡,只做1+1备份
作者: q1208c    时间: 2014-02-17 13:08
回复 5# mordorwww

就算是你的模式, 那基本上也不算是HA了. 因为不能切换到另一边.

HA 的关键在于 "切换" . 如果不能切换, 那其实不算是HA的模式了.
   
作者: mordorwww    时间: 2014-02-17 14:32
q1208c 发表于 2014-02-17 13:08
回复 5# mordorwww

就算是你的模式, 那基本上也不算是HA了. 因为不能切换到另一边.



当然是HA,一边挂了,另一边接着干
作者: q1208c    时间: 2014-02-17 16:26
回复 7# mordorwww

你确定有这样的结构?

我很想知道用户是如何被切换到另外一台的.
   
作者: mordorwww    时间: 2014-02-17 19:39
本帖最后由 mordorwww 于 2014-02-17 19:40 编辑
q1208c 发表于 2014-02-17 16:26
回复 7# mordorwww

你确定有这样的结构?


不需要切换,两边同时做完全相同的工作

如果一主一备的话,就需要做心跳,倒换,还得做平滑

就比如你想写个软件,你手下俩牛人,你分别让他们各自写一个就完了。如果中间有个人不干了,丝毫不影响


我不确定有没有谁这样做过





作者: q1208c    时间: 2014-02-18 08:13
回复 9# mordorwww

我不是太明白你说的"不需要切换".

正常情况下, 一个客户端要访问一个服务, 需要知道这个服务的地址(IP)和 端口(port). 我们假定端口是统一的(如 http 80), 那个IP如何搞?
如果客户端同时知道两个IP, 那其实已经是 负载均衡的一种方式了. 只不过是在 客户端 实现的.

如果两台服务端有同样的IP(vip), 这样的服务是有的, 但只能提供UDP服务, 因为 TCP协议的关系, 这样的 多个主机同一个IP, 可能连基本的TCP连接都建立不起来.

在 UDP 服务中, 是有这样实现的, 好象叫 any cast, 目前我们使用的 DNS服务, 在13个根域服务器中, 好象有几个在采用这样的方式.
在 TCP 的服务中, 我还不知道有这样的用法.



   
作者: mordorwww    时间: 2014-02-18 09:07
本帖最后由 mordorwww 于 2014-02-18 09:11 编辑
q1208c 发表于 2014-02-18 08:13
回复 9# mordorwww

我不是太明白你说的"不需要切换".


说了根本就不是负载均衡,我就一个用户,只是为了容灾弄两个节点。
两个结点同时处理我的请求,同时给我响应,如果有一个没给我回响应也没关系,我业务仍然正常
你非要说这个时候在客户端做了切换也可以,总之切换平滑、主备心跳、主备数据同步都不需要了
作者: q1208c    时间: 2014-02-18 09:18
回复 11# mordorwww

你要这么说, 我没办法了.

不过, 我很好奇, 你两台机器分别处理的数据不进行同步, 那么, 如果一台掉了, 它处理的数据你就不要了?



我们对业务的理解不太一样, 在我的理解中, 所有的数据必须可靠, 有效. 所有的服务也如此, 所以, 才会产生HA, 虽然HA也不能保证100%的可靠, 但总好过单台.

虽然集群在可靠性上更高, 但谈到数据一致性, 集群同样有需要面临的问题.

感谢你的想法, 祝你成功.
   
作者: mordorwww    时间: 2014-02-18 09:20
本帖最后由 mordorwww 于 2014-02-18 09:21 编辑
q1208c 发表于 2014-02-18 09:18
回复 11# mordorwww

你要这么说, 我没办法了.


两台机器干完全相同的活,数据当然是一样的
作者: q1208c    时间: 2014-02-18 09:39
回复 13# mordorwww

你的意思是, 客户端同时向两台机器发起同样的请求, 服务端做相同的处理.

如果是这样, 那在正常情况下, 两台机器上的数据当然是一致的, 但当其中一台因为设备维护或硬件故障 down机的时候呢? 当它再次恢复的时候, 两台机器的数据已经不致了.

如果 有一台down机, 为了数据一致性, 另一台停止服务, 那么, 虽然数据致性得到了保证, 但这并没有保证服务连续性 ... ...
   
作者: mordorwww    时间: 2014-02-18 09:49
q1208c 发表于 2014-02-18 09:39
回复 13# mordorwww

你的意思是, 客户端同时向两台机器发起同样的请求, 服务端做相同的处理.



你说的对,有这个问题,服务还是有点中止,不能100%无缝
不过这个中止是可控的,相对于随机故障的切换好控制得多
作者: thinalai    时间: 2014-02-20 09:15
回复 10# q1208c


    10几个DNS主根采用任播, 话说楼主想要的完全没听说过.
作者: liuyong203951    时间: 2014-02-20 15:22
这个模式不知道叫做什么,不过确实有这种架构。
两个应用同时接收数据,同时处理,那一个更快就返回,慢的则丢弃。
这个在期货交易的软件中有用到。
作者: Darleter    时间: 2014-02-21 13:45
想法很新奇,客户端1个请求被复制出2份,同时发送到服务端。然后服务端响应并计算。然后同时传回两份?这不是脱裤子放屁吗?还不是一个请求一个响应啊。

作者: q1208c    时间: 2014-02-21 14:22
回复 17# liuyong203951

你确定是用在交易系统中?

我很想知道, 接收数据的两台机器上的数据是如何保持一致的? 除非, 这两台机器上根本没有数据, 只有一个算法, 比如, 你问它 "1 + 2", 它们就返回 "3".
   
作者: long1225    时间: 2014-03-01 19:12
q1208c 发表于 2014-02-18 08:13
回复 9# mordorwww

我不是太明白你说的"不需要切换".


这个正解,楼主的问题说明思维比较发散,这个回复说明专业性比较强
作者: InfoCore-Great    时间: 2014-03-03 16:46
本帖最后由 InfoCore-Great 于 2014-03-03 16:49 编辑

回复 12# q1208c

你的意思是, 客户端同时向两台机器发起同样的请求, 服务端做相同的处理.

如果是这样, 那在正常情况下, 两台机器上的数据当然是一致的, 但当其中一台因为设备维护或硬件故障 down机的时候呢? 当它再次恢复的时候, 两台机器的数据已经不致了

-------------------------------------------------------
论点有纰漏,你担心的数据不一致问题会存在,但仅仅是数据放在服务器本地,如果数据是位于存储上面呢?
我的意思,2台服务器用的是共享存储,就不会涉及到同步的问题了,对吧?任何一台Server随意宕机,反正数据就一份。


其实,我到是想说,这个楼主发了很多帖子,且每个都是很奇怪的逻辑,并且还不喜欢按照别人的思路考虑问题,太浪费精力,还不如让他沉了吧。

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2