如何构建可扩展的web服务



在创建将糟糕的web服务转化为可以扩展的web服务时,需要考虑哪些参数?我认为更大的服务器和调优应该是可行的。但我不知道应该考虑哪些调整因素。

1:不要寻找官方的"REST标准">

RESTWeb服务是一个概念,而不是一个标准。RESTWeb服务不需要以任何特定的方式工作。但与此同时。。。

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

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

3:确保您的文档无瑕疵

有了SOAP,就有了Web服务定义语言(WSDL)系统,如果您有一个基于WSDL自动生成代码的工具,那么使用服务就相当容易了。但使用REST,服务的定义就不那么严格了,它们依赖于被正确调用才能正常工作。这意味着服务文档是至关重要的。如果您正在创建RESTWeb服务,请确保文档是100%正确的。

4:提供JSON输出

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

5:不要忘记XML

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

6:理解动词

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

7:了解URI路由的重要性

RESTful Web服务在很大程度上取决于URI来决定要做什么。例如,在"GET"请求中,URI路径通常包含要检索的实体的主键值(或其他标识符)。例如,"http://www.example.com/service/entityname/76将检索名称为"entityname"、主键值为76的实体。对于RESTWeb服务,URI不仅仅是访问服务的一种方式,也是控制服务和发出需求信号的一种方法。

8:在未对服务进行版本控制的情况下,请勿进行更改

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

9:与您的用户保持联系

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

10:提供样本代码

您能做的最好的事情之一是提供示例代码供开发人员使用。确保您的代码至少适用于所有主要语言或运行时:Java、.NET、JavaScript、Ruby和Python。如果必须的话,请聘请一位顾问来编写此代码,因为它对您的服务的采用至关重要。确保您以允许您的客户在没有任何影响的情况下使用示例代码的方式对其进行许可,例如MIT或BSD许可。

您可能想要了解微服务。

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

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

最新更新