标签:
组件之间仅仅通过消息传递来通信并协调行动
稳定性和可用性
如果采用单机系统,如果这台机器一切正常,则一切ok,如果这台机器坏了。整个应用就访问不了了。如果要做容灾备份等方案,就需要考虑分布式系统了。
软件负载均衡
如lvs,nginx等。免费,可控性强
总结:
1:增加网络开销与延迟,不过基本上影响很小,可以不在考虑因素之内
2:负载均衡硬件/软件出现问题,那么整个网络都会受到影响,所以需要考虑代理服务器的双机热备问题。而且在切换过程中,未完成的请求还是会受到影响。总的来说,是一种非常方便及适用的保证高可用的一种方式。
总结:
1.假如这个名称服务/规则服务器暂时坏掉了,我们也有不少的办法可以保证请求的正常处理。
2.发起请求方与处理请求方是直连的方式,减少了中间路径及带宽的消耗。
3.代码升级较复杂
所以为了解决这个单点的问题,我们可以添加另外一个数据库,与数据库一保持相同的数据。
4.事务
单机的事务很方便的就能控制,而在分布式环境中,事务是比较重要也比较难解决的一个问题。主要是通过两段提交(2pc)/最终一致/BASE/CAP/Paxos等来实现的。关于这些算法,可以看一下下面的这些连接:
分布式一致性算法:
http://www.hollischuang.com/archives/693
http://www.hollischuang.com/archives/663
两阶段提交协议/三阶段提交协议:http://www.hollischuang.com/archives/681
BASE:http://www.hollischuang.com/archives/672
CAP:http://www.hollischuang.com/archives/666
标签:
原文地址:http://www.cnblogs.com/taz372436/p/5606590.html