RPC和注册中心的简介

RPC和注册中心的简介,第1张

网络调用RPC 假设一个web 调用另外一个service 就符合RPC协议

在网络传输中的数据是序列化及返回为反序列化传输

什么是RPC:RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务

RPC的原理:RPC协议的底层原理,就是对象的序列化、反序列化以及序列化后数据的传输。

RPC协议的核心组成部分:网络传输协议:>struct ListNode    

{  

    int data;  

    int len;  

    ListNode next;    

};   

  

void InsertNode(ListNode &pHead, ListNode pNode)  

{  

    ListNode  pTmp = NULL;  

    if(pNode == NULL)  

    {  

        printf("pNode is NULL!\n");  

        return;  

    }  

    if(pHead == NULL)  

    {  

        pHead = pNode;  

    }  

    else  

    {  

        for(pTmp = pHead;pTmp->next != NULL; pTmp = pTmp->next)  

        ;  

        pTmp->next = pNode;    

    }  

}  

   

  

void SortAndPrint(int a[], int n)  

{  

    ListNode pHead = NULL;  

    ListNode temp = NULL;   

    int i = 0;  

    int data = 0;  

    int dataLen = 0;  

    while(i < n)  

    {  

        int j = 0;  

        int len = 0;  

        int moreNum = a[i];  

        int lessNum = a[i];  

  

        //查找小于一个数的连续数出现次数   

        while(j < i)  

        {  

            if(a[j] == lessNum-1)  

            {  

                j = 0;  

                lessNum--;  

                continue;  

            }  

            j++;   

        }  

          

        //只有小于一个数的所有数均出现时才存数据  

        if(lessNum == 1)  

        {  

            j = 0;  

            while(j < i)  

            {  

                if(a[j] == moreNum+1)  

                {  

                    len++;  

                    moreNum++;  

                    j = 0;  

                    continue;  

                }  

                j++;  

            }  

              

            ListNode p = (ListNode)malloc(sizeof(ListNode));  

            memset(p, 0, sizeof(ListNode));  

            p->data = a[i];  

            p->len = len;  

            p->next = NULL;  

            InsertNode(pHead, p);  

        }  

        i++;  

    }  

      

    //按顺序打印序列   

    for(temp=pHead; temp!=NULL; temp=temp->next)  

    {  

        dataLen = temp->len;  

        data = temp->data;  

        while(dataLen)  

        {  

            printf("%d,",data++);  

            dataLen--;  

        }  

        printf("%d\n",data);  

    }  

      

    //释放资源   

    ListNode prev = NULL;  

    ListNode curr = pHead;  

    while(curr!=NULL)  

    {  

        prev=curr;  

        curr=curr->next;  

        if(prev != NULL)  

        {  

            free(prev);  

            prev = NULL;  

        }  

    }  

}

 

int main(void)  

{  

int a[] = {1,2,5,8,10,4,3,6,9,7};

SortAndPrint(a, 10);

return 0;

}

Remote Procedure Call (RPC)调用是WINDOWS使用的一个协议,提供进程间交互通信,允许程序在远程机器上运行任意程序。

用个简单的说法就是,你的朋友有一台电脑,只要他打开了这一服务,同时满足下面几个条件:你知道他计算机的超级用户的帐号与密码;你知道他的IP地址;你的计算机可以Ping通你朋友的计算机。那么你就可以在你的计算机上完全控制他的计算机了,像 *** 作自己的计算机一样。

在Web服务发展的初期,XML格式化消息的第一个主要用途是,应用于XML-RPC协议,其中RPC代表远程过程调用。在XML远程过程调用 (XML-RPC)中,客户端发送一条特定消息,该消息中必须包括名称、运行服务的程序以及输入参数。

XML-RPC只能使用有限的数据类型种类和一些简单的数据结构。人们认为这个协议还不够强大,于是就出现了SOAP——其最初的定义是简单对象访问协议。之后,大家逐渐意识到SOAP其实并不简单,而且也不需要必须使用面向对象语言,所以,现在人们只是沿用SOAP这个名称而已。

XML-RPC只有简单的数据类型集,取而代之,SOAP是通过利用XML Schema的不断发展来定义数据类型的。同时,SOAP也能够利用XML 命名空间,这是XML-RPC所不需要的。如此一来,SOAP消息的开头部分就可以是任何类型的XML命名空间声明,其代价是在系统之间增加了更多的复杂性和不兼容性。

随着计算机行业的觉醒,人们发现了基于XML的Web服务的商业潜力,于是,各家公司开始不断地发掘想法、观点、论据以及标准化尝试。W3C曾经设法以“Web服务活动”的名义来组织成果展,其中也包括实际做出SOAP的XML协议工作组(XML Protocol Working Group)。与Web服务有关的标准化成果(从某种程度上说与SOAP相关或者依赖于SOAP)的数量已经倍增了到了令人惊讶的程度。

最初,SOAP是作为XML-RPC的扩展而发展起来的,它主要强调的是,通过从WSDL文件中所获得的方法和变量名来进行远程过程调用。现在,通过不断进步,人们发现了更多的使用SOAP的方式,而不仅仅是采用“文件”方式——基本上是使用一个SOAP信封来传送XML格式化文件。无论如何,要掌握SOAP,了解WSDL所扮演的角色是最根本的

以上就是关于RPC和注册中心的简介全部的内容,包括:RPC和注册中心的简介、分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出,求C语言大神、Windows的RPC服务具体是做什么用的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10088682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存