如何构建可伸缩的Web服务

时间:2016-06-01 04:35:02

标签: web-services

创建Web服务时要考虑的各种参数是什么,这些Web服务会将糟糕的Web服务转变为可以扩展的Web服务?我认为更大的服务器和调优应该是可行的。但我不知道应该考虑哪些调整因素。

2 个答案:

答案 0 :(得分:0)

1:不要寻找官方的“REST标准”

REST Web服务是一个概念,而不是标准。您的REST Web服务不需要以任何特定方式工作。同时,虽然......

2:无论如何都要遵守标准

...您的REST Web服务应该至少遵守一些标准!例如,OAuth用于身份验证,JSON和XML用于数据,HTTP用于传输和控制本身,以及URI标准。如果你想要一个更完整的包,OData可以作为一个更大的项目。仅仅因为没有人说“REST必须遵守这些标准”并不意味着你应该自己制作。

3:确保您的文档完美无缺

使用SOAP,有一个Web服务定义语言(WSDL)系统,如果您有一个基于WSDL自动生成代码的工具,它可以很容易地使用服务。但是使用REST,服务的定义不太严格,而且它们依赖于被正确调用以正常工作。这意味着服务文档至关重要。确保在创建REST Web服务时,文档是100%正确的。

4:提供JSON输出

JSON标准在Web上迅速变得重要。起初,它很方便,因为它允许JavaScript轻松地使用Web服务输出,只需要最少的编码。现在有很多库允许服务器端和本机客户端代码也使用JSON。

5:不要忘记XML

说到输出,XML输出仍然像往常一样重要。为什么同时支持XML和JSON?因为并非每个系统都可以使用JSON,但是如果系统可以进行Web服务调用,则它将提供XML处理。例如,有大量遗留系统可以使用XML而不是JSON,并非所有开发人员都希望开始混合和匹配JSON和XML。确保您的服务支持这两种格式。 HTTP请求中的“接受”标头是一种很好的方法,而不是使用参数或不同的服务URL。

6:理解动词

REST Web服务的一个关键概念是功能在很大程度上由HTTP协议定义。其中最基本的部分是HTTP动作动词,例如GET和POST。虽然REST中已经很好地理解了基本功能,但是一些想法,比如使用PATCH来仅更新实体的特定属性而不是整个实体,仍然在出现。

7:了解URI路由的重要性

RESTful Web服务在很大程度上取决于URI来决定做什么。例如,在“GET”请求中,URI路径通常包含要检索的实体的主键值(或一些其他标识符)。例如,“http://www.example.com/service/entityname/76”将检索名称为“entityname”且主键值为76的实体。使用REST Web服务,URI不仅仅是访问服务的一种方式,而是一种方式控制它并表明你的需求。

8:如果不对服务进行版本控制,请勿进行更改

在进行更改时,只维护一个版本的服务很有诱惑力。不要这样做!每次发布更改时,请确保维护单独的版本。最简单,最常见的方法是将版本号作为服务URI的一部分,通常是路径的一部分。人们需要的最后一件事就是在没有警告的情况下更改服务的功能。

9:与您的用户保持联系

由于缺乏自动发现功能,与您的用户和消费者保持联系更为重要。例如,当您发布新版本的服务时,您应该向用户发送电子邮件,让他们了解该服务,并提供弃用旧版服务的信息。

10:提供示例代码

您可以做的最好的事情之一是为开发人员提供示例代码。确保为所有主要语言或运行时提供代码:Java,.NET,JavaScript,Ruby和Python。如果必须,请雇用一名顾问来整理这些代码,因为这对于采用您的服务至关重要。确保您以允许客户使用它的方式许可您的示例代码,而不会产生任何影响,例如MIT或BSD许可证。

答案 1 :(得分:0)

您可能希望查看微服务。

https://www.nginx.com/blog/introduction-to-microservices/是关于微服务的一系列文章。

您可以通过分发服务实例或通过提升特定服务实例的h / w来扩展微服务。