分布式系统的那些事儿(三) - 系统与系统之间的调用

系统与系统之间的调用通俗来讲,分为本地同一台服务器上的服务相互调用与远程服务调用,这个都可以称之为RPC通信。浅白点讲,客户访问服务器A,此时服务器要完成某个动作必须访问服务器B,服务器A与B互相通信,相互调用,A访问B的时候,A挂起,等待B的响应,B响应返回相应的数据个A,A再返回给用户,这就是一个很简单的栗子。

举个常见栗子,用户上传图片,用户上传图片首先会经过自身的服务器,然后再对图片进行处理,此时图片处理放在图片服务器中进行,那么我们只需要调用图片服务器提供的接口即可,然后等待响应返回的图片地址,此时我们队它进行额外的处理,保存到数据库然后在返回到前端进行显示。

再不明白就说说这次的顺丰和菜鸟数据安全事件,就是你调用我我调用你这样的一些列RPC通信。

其实在多年以前,系统之间的通信通过建立tcp协议来进行交互,非常麻烦,而现如今使用RPC的话那么就简单的多了,很多细节方面的事我们无需关注,比如socket啊,数据的转换啦解析啦等等。

RPC通信在系统之间的主要数据格式会以json为主,当然也有xml的形式,但是不多,不过很多老系统还是都会以xml为主。

在传输过程中,系统和系统之间的通信通过网络,而通信并不会保证每次都会成功,所以各类错误也一定要完善,就像咱们有时候对接第三方接口那样,会提供很多的错误码供我们分析,甚至还有超时请求的响应时间配置等等。对于这一系列的异常以及错误,我们一定要捕获并且处理,不然在顶端的客户不知道系统发生了什么而一直等着,这样是不人性化的。

系统之间通信收到网络的影响很多时候响应会比较慢,此时的用户可能会在客户端多次点击按钮,这样被调用的服务端就会执行多次,那么就要考虑系统的幂等性,这个不多说了,以前的帖子里有讲过。

?(未完待续)

时间: 2024-10-05 07:05:34

分布式系统的那些事儿(三) - 系统与系统之间的调用的相关文章

5.C#WinForm基础登陆失败三次退出系统

目标: 登陆界面,登陆错误三次退出程序.假设用户名密码是admin.888888,不区分大小写,(易错点:局部变量与类变量) 局部变量每次运行完毕变量的值都会被销毁,下次再运行,会重新初始化.       而类字段,只要是一个对象,那么只要对象不销毁,就会一直保持对象的字段值. 退出程序:this.close();或者Application.Exit(); 文本框的集中模式:Mutiline(多行).PasswordChar(密码) string Datatime().ToString()(+3

医疗系统--体温单(三测单)系统

不同区域的体温单格式不尽相同,本文以江苏某地体温单为范例,介绍完整的体温单系统开发. 1.名词解释 体温单:又叫三测单,是护理病历的一部分.体温单主要用于记录患者的生命体征及有关情况,内容包括患者姓名.年龄.性别.科别.床号.入院日期.住院号(或病案号).日期.住院天数.手术后天数.脉搏.呼吸.体温.血压.出入量.大便次数.体重.身高.页码等. 2.体温单功能点 结合病历书写规范以及医生在临床中的习惯,电子体温单的功能点主要包括以下部分: 分类 序号 功能说明   1 表头(XXX医院,体温单)

三得公益系统开发详解

三得公益系统开发(苏念.188.1414.7927)三得公益模式开发 三得公益app开发 三得公益平台开发 三得公益公益模式开发 三得公益商业模式开发,亲,当你打开手机浏览微信朋友圈或微博的时候,是否会时不时地看到一两条公益信息?救助早产儿.帮助失独家庭.关注孤残群体--当下,互联网+公益的热潮正兴,做公益无需再东奔西走,只需动动手指就能搞定. 好事还能这么做! 我国现在约有1731万盲人,而且这一数字每分钟都在递增.一边是对盲人的看护和帮助需求快速攀升,另一边又是看护成本高所带来的看护人员的减

人人公益三得公益系统模式开发是怎样的?

人人公益,三得公益,人人公益平台模式,三得公益系统,app公众号定制开发,人人公益模式,具体了解更多开发找陈洋150*1315*1740(微/电)平台搭建,系统定制.市场上软件鱼龙混杂,很多人认为只要懂软件开发,就能开发一套适合客户使用的软件.这种想法是非常错误的,因为行业金字塔式的运营模式是和其它行业有很大的区别,的复杂度是其它薪酬体系无法比拟的.只有对行业深入了解,才能开发出一套真正适合客户使用的会员管理系统. PHP源码介绍:1.三得公益购物系统角色介绍 (1)公益商家:进驻三得公益商城,

读书笔记-APUE第三版-(6)系统数据文件和信息

常见系统数据文件 下表列出了常见的系统数据文件及其查找函数. 以/etc/passwd文件为例,读取数据的程序基本框架如下: void get_pw_entry() { struct passwd *ptr; setpwent(); while ((ptr = getpwent()) != 0) { -- } endpwent(); return ptr; } 每个数据文件都提供了一个get方法返回文件下一个记录项. set方法充值当前位置到文件开始处. end方法关闭数据文件. 表格中的get

第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)

原文:第三章--使用系统函数.存储过程和DBCC SQLPERF命令来监控SQLServer(3) 本文为这个系列最后一篇.将是如何使用DBCC命令来监控SQLServer日志空间的使用情况. 前言: 每个数据库都必须有事务日志.事务日志记录每个DML操作,并应用于SQLServer的数据库中,如果恢复模式为FULL并经常有DML操作,日志将增长得非常快.几时恢复模式为simple,当数据库处于事务复制或者合并复制时,日志通常会增长.如果日志不是经常备份且日志文件的增长没有受到限制的话,将有可能

linux中CentOS、Ubuntu、Debian三个版本系统 差别

Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本. 商业版本以Redhat为代表,开源社区版本则以debian为代表.这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论.而绝大多数VPS上只提供开源社区维护的发行版本.下面就这些不同的Linux发行版进行简单的分析. Ubuntu Ubuntu近些年的粉丝越来越多,Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,Ubuntu还对大多数

【办公采购系统】系统中遇到的问题汇总(一)

前言 这个系统是为志晟集团所做的,主要是为了对集团的各个部门每个对办公用品的基本信息的管理.从购买办公用品开始,首先是购买的办公用品的信息录入,到中间的各部门领用,到每月的统计工作等. 本系统采用的是纯三层架构,Sql Server 数据库.思路清晰,过程简单,但是还是有很多的问题,需要总结. Problems 1.ASP.NET建立模板页 这个是经常使用的,但是自己好长时间没有接触了,有点忘了,于是自己得总结一下,免得以后用到了,不知道怎么搞: 方法如下: 首先,添加模板页. 找到程序集名称→

[Win8.1系统]双系统

10月18日更新:Win8.1正式发布,其安装方法与此前Win8.Win8预览版完全相同,本文面向Win8.1依旧有效. 以下为IT之家早前撰写的:<Win8 RP版安装方法汇总大全(含双系统教程等)> 千呼万化使出来,Win8 RP版已经到来,镜像下载完毕还不太会安装系统怎么办?虚拟机.双系统又是怎么一回事?初次接触系统安装以及尝鲜Win8难免慌乱,其实不用着急:Win8消费者预览版发布之时,IT之家曾整理过<Win8安装方法大全(双系统教程等)>,现在依旧适用于Win8 RP版