朋友们,今天咱们来聊聊分布式微服务中至关重要的 RPC 技术。说到微服务,就不得不提到 RPC ,可以说它就是分布式微服务框架的灵魂所在。那 RPC 到底是什么呢?简单来讲,它就是跨模块服务调用的框架。
咱们传统的单体架构调用服务很简单,直接引用 service ,用 service.方法名的方式就能调用成功,因为所有服务都写在一个包里面,可以直接在本地调用。但一旦改成分布式微服务,很多模块就分别在不同模块中了,像用户中心、商品中心、订单中心、通知中心等等,彼此独立。这时候,比如购买一个商品,就会涉及到对用户中心的调用,像判定用户有没有登录、账户有没有积分可以抵扣等等。
我们传统可能会用传参、响应、返参的方式调用,对于简单业务来说问题不大。可一旦业务量大、复杂了,HTTP 接口的效率就会变得很低。毕竟大家都知道 HTTP 有三次握手,网络开销大,频繁使用效率就受影响。
那怎么办?这时候就得考虑 RPC 框架了,它能让服务调用跟本地调用一样,高性能、低延迟,用户根本感受不到是远程调用。原理也不复杂,所有服务先注册到注册中心,这注册中心可是必须有的,它起到服务调度和监测的功能,能让我们看到各模块服务包的注册情况,对应的 IP 、端口,有几个服务包在线等等。每次调用时,先把请求发送到注册中心,注册中心找到对应的服务,返回给调用的模块。如果是集群部署,就按照负载均衡的策略或者特殊策略,找到一个能对外提供服务的包完成调用,然后返回结果。
常见的 RPC 框架有很多,像比较常见的 Dubbo 、Spring Cloud 等等,用的都不少。但 Dubbo 一般用的是 ZooKeeper 作注册中心,Spring Cloud 里的 Feign 一般用的是 Eureka 或者 Consul 等等。
好啦,今天关于 RPC 的内容就讲到这儿。如果您对本期内容有任何疑问,欢迎在评论区给我留言!谢谢大家!