rpc是什么:
rpc是基于tcp的,而http建立的连接与基于rpc的不同:
rpc远程过程调用:
微服务之间交互使用http:
- 通过域名Nginx进行服务转发时: 一个http请求通过域名找到nginx, nginx会进行slb(负载均衡)来返回某一个服务的地址。
- 通过IP Nginx进行服务转发时: 一个http请求通过ip只能直接且固定的找到某个机器, nginx因此无法进行负载均衡
微服务之间交互使用rpc:
- rpc使用tcp连接,如果使用nginx: 则请求者就会固定连接某个机器,无法进行动态的负载均衡。且有一个新的服务机器来到时,没有一个请求者与之相连。
- 因此不能使用nginx, 而应该使用服务发现。服务发现会寻找到当前可用的机器,然后随机分发给请求者。当有新的机器宕机或者新的机器来到时,会即使发现,并提供给请求者使用。
- 熔断:当某个机器的一次请求失败时,会将这个连接加入到熔断里。过一段时间就进行试探,来判断是否连接可用,如果可用就将这个连接移除熔断,如果无法连接次数达到某阈值,则会删除这个连接。