[svc]简单理解什么是rpc调用?跟restapi有何区别?

什么是rpc调用

  • restapi调用方式是对数据的crud. 常见的我们写flash写个api,或者借助django drf写个标准的resetapi,一个url可以借助httpget post put delete实现数据的crud. 属于应用层http调用了

那个文章说:
REST表示的是描述性状态传递(representational state transfer),REST整个就是关于 客户端和服务端之间的关系的,其中服务端要提供格式简单的描述性数据,常用的是JSON和XML。
不知道和osi7层的表示层有关系没

找了个django-microservice例子

订单服务调用邮件服务

邮件服务是通过url暴漏的, 通过post方式收到参数,发出邮件

  • rpc调用方式: 简单理解为主机B可以调用主机A的函数. 属于4层tcp调用,效率更高
hostA  hostB
f1     f2
       tcp:A:port f1 参数

python的rdc协议框架-zerorpc

注: 不需要安装zeromq

import zerorpc
class Cooler(object):
    """ Various convenience methods to make things cooler. """
    def add_man(self, sentence):
        """ End a sentence with ", man!" to make it sound cooler, and
        return the result. """
        return sentence + ", man!"
    def add_42(self, n):
        """ Add 42 to an integer argument to make it cooler, and return the
        result. """
        return n + 42
    def boat(self, sentence):
        """ Replace a sentence with "I'm on a boat!", and return that,
        because it's cooler. """
        return "I'm on a boat!"
s = zerorpc.Server(Cooler())
s.bind("tcp://0.0.0.0:4242")
s.run()

模拟远程调用

$ zerorpc -j tcp://localhost:4242 add_42 1
43

grpc调用

服务端写了个类: 暴露了个端口,将这个类通过tcp抛出去

客户端访问服务端的函数

原文地址:https://www.cnblogs.com/iiiiiher/p/10336822.html