02.为什么要用SpringCloud或Dubbo来进行服务治理

问题

    单个服务之间可以通过java自带的HttpUrlConnection来进行互相远程调用,也可以用HTTPclient、OkHttp等HTTP请求框架调用,那为什么还要用dubbo和cloud来进行服务治理呢?


1. 负载均衡
    分布式系统中单个服务都是以集群方式存在的。有这样一种情况,当A服务调用B服务的时候,A和B都是有N台机器的集群,这时是用A服务集群中的哪个机器去调用B服务集群中的哪个机器呢?
    所以需要从A集群和B集群中各选出一台机器,这样的逻辑可以通过HttpUrlConnection或者其他HTTP请求框架实现,但是很麻烦。
2. 容错机制
    单一应用的程序出现错误的概率是0.01%,所以成功的概率是99.99%,是可以接受的。但放在分布式服务架构中(更容易出错),每台机器都是独立的应用,如果出现错误的概率也是0.01%,由于单机错误具有扩散性,一次请求处理过程中如果有50台机器参与,那么该系统出现错误的概率是:
99.9 % 50 = 9.51 % 99.9\%^{50} = 9.51\% 99.9%50=9.51%
    这时就需要容错的机制(举例子,实际不一定是这样的):

调用
A服务集群:A1,A2,A3
B服务集群:B1,B2,B3
  • A1调用B3,B3出现错误
  • 重试调用B3 3次,还是出错
  • 改用A1去调用B2,三次重试还是出错
  • 再从redis中找一个返回值,但是没有
  • 返回一个默认值给A1,同时剔除B2和B3,这样不会出现系统的瘫痪
  • 这时B3,和B2修复好了,重新上线
    以上这些都是容错机制在做的,自己要写的话不但费劲,而且不一定周到,效率也不一定高。

总结:负载均衡和容错机制(不只限于这两种功能)是分布式架构进行服务治理时应用必然用得到的,所以单独抽离出来做成工具软件,提高了开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值