云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式数据库_dnf连接不上服务器_试用

小七 141 0

域名注册_dns服务器配置_限量秒杀

RESTful架构风格利用HTTP协议提供轻量级web服务实现,而SOAP更像是在HTTP上运行的RPC。区别的指标之一是HTTP方法的使用情况。

RESTful服务考虑通过URI链接定位的资源。因此,通常服务端点是一个名词,代表一个特定的资源,例如/customer/01、/item/02、/image/03等,HTTP方法可以分别应用,个人用云服务器,GET for read、POST for create、PUT for change/create、DELETE for deletion。还有更多,但我们只关注这些

通常在UI中,用户在第一次显示之前不会更改任何内容,手机网站建站,因此,在触发PUT请求时,提供资源的整个属性集相对容易,这样就可以进行更改。PUT方法需要提交一整套属性,即使只有一个属性发生了真正的更改。

现在,什么是幂等性?

这意味着多次提交都会产生相同的预期/副作用:对资源的预期更改。

好吧,第一次提交PUT实际上改变了资源状态,但是所有的尝试,包括第一次都会产生相同的效果。如果我们将其与GET进行比较,我们将看到for GET方法,不仅所有的尝试都具有相同的效果,第一次尝试也不会更改资源状态。或者换句话说,根本没有副作用。为此,有一个名字叫做nullipotent。很明显,无主也是幂等的。就像nullipotent=(幂等不变)。

还有一个名字叫"safe method",意思是不管调用多少次,方法的执行都不会导致属性的丢失。到目前为止,我还没有发现无效方法和安全方法的区别。这更像是一个在谈论行为,另一个在谈论效果,不同的角度但是相同的事情。POST和PUT都可以创建一个资源,区别在于PUT首先要确保请求的URI不存在,否则只需更新,而POST只需在请求的URI下创建一个资源。因此,多个POST请求将创建多个资源,而多个PUT请求将返回相同的资源。这使得POST不是幂等的,而是放幂等的。

现在,公众号返利,为什么幂等和安全方法(nullipotent)很重要?

从HTTP RFC文件中我们可以看到,安全的方法是防止蜘蛛或其他自动化设备的伤害。抛开身份验证和授权不谈,如果GET方法用于不安全的服务(如更改属性),spider将导致意外的结果。幂等性是防止重试失败的尝试所造成的伤害。HTTP协议在Internet环境中使用,在这种环境中,网络不是一直都是可靠的。会有失败或延迟的尝试。如果发生重试,可能会触发两次或两次以上的尝试,这不会对资源造成意外的结果。

这意味着幂等性在分布式事务管理中有其重要性。在分布式计算中,传统的数据库事务是不可能的,因为数据存储是分布式的,例如使用MSA。在这里,分布式事务可以看作是确保多个资源之间状态一致。如果每个资源上的每个操作都是幂等的,那么实现它就容易多了。PUT和DELETE是幂等的。POST两者都不是

好吧,准确地说,如果POST用于资源创建,就像HTTP/1.1rfc建议的那样,它不是幂等的。但在现实中,POST通常被用来更新资源,甚至删除资源。不完全正确的用法,但在这些实现中可能会发现幂等情形

为了使局部更改更容易,引入了补丁方法。这意味着服务消费不再仅仅来自UI。如果不是GET和PUT在一对中,那么发送完整的属性集将变得很困难。PATCH允许发送更改的描述,快速自助建站,而不是完整的属性集。

这使得PATCH特别,它取决于更改操作,特定的PATCH请求是否是幂等的。不能只凭方法的名称来判断。e、 g.使用操作"add"类似于PUT,使用"replace"是update,这些都是幂等的,但是使用"move"就不是幂等的了

现在,"same effect"是什么?

让我们考虑一些案例,比如获取服务器时间、给定用户的最新博客。它是"获取资源的最新状态",而状态会随着时间的推移而改变。如果有这样的restfulapi并且使用了GET方法,那么它是安全的还是幂等的?它并不是每次都返回相同的结果。

让我们考虑另一种情况。一个restfulapi返回当前用户名,一个GET请求得到Tom。然后一个PUT请求把名字改成了Jerry。第二次得到肯定会让杰瑞得到回报。这会改变幂等性吗?

没有,因为第一个GET不能对变更负责。两个GET请求具有相同的效果:返回当前用户名。因此,如果没有其他东西改变资源,它们将返回相同的结果。

让我们回到前面的情况,我们可以应用相同的规则:如果没有其他东西改变资源,多个请求将返回相同的结果。服务器时间的另一件事是什么?时钟。如果时钟静止不动,GET请求将返回相同的结果。对于最新的blog案例,如果没有新的post,GET请求将返回相同的结果。

由于幂等性是为了防止失败或延迟的尝试造成伤害而发明的,因此我们也可以使用这种方法来判断它是否是幂等的:如果有失败的尝试,返利购,是否要自动重试?自动重试是否会导致资源的意外结果?注意,由于网络情况,可能会有多次重试。

到目前为止,我们可能会看到幂等性实际上并不局限于RESTful或HTTP,而是分布式计算中的一个重要概念,以确保多个相同的请求不会出错。