[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層的表示層有關係沒
html

找了個django-microservice例子python

訂單服務調用郵件服務
git

郵件服務是經過url暴漏的, 經過post方式收到參數,發出郵件
github

  • rpc調用方式: 簡單理解爲主機B能夠調用主機A的函數. 屬於4層tcp調用,效率更高
hostA  hostB
f1     f2
       tcp:A:port f1 參數

python的rdc協議框架-zerorpc

注: 不須要安裝zeromqdjango

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()

模擬遠程調用api

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

grpc調用

服務端寫了個類: 暴露了個端口,將這個類經過tcp拋出去
框架

客戶端訪問服務端的函數
tcp

相關文章
相關標籤/搜索