稳定模式在RESTful架构中的应用Java开发Java经验技巧.docVIP

稳定模式在RESTful架构中的应用Java开发Java经验技巧.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
稳定模式在RESTful架构中的应用Java开发Java经验技巧.doc

稳疋模式在RESTful架构中的应用-编程开发技术 稳定模式在RESTful架构中的应用 木文由ImportNew?乔永琪翻译自javaworldo欢迎加入翻译小组。转载请见文末要求。 分布式系统中保持网络稳定的五种方式 重试模式 超时模式 断路器模式 握手模式 隔离壁模式 倘若分布式系统的可靠性由一个极弱的控件决定,那么一个很小的内部功能都可 能导致整个系统不稳定。了解稳定模式如何预知分布式网络热点,进而了解应用 于Jersey和RESTEasy RESTFUL事务中的五种模式。 要实现高可用、高可靠分布式系统,需要预测一些可不预测的状况。假设你运行 规模更大的软件系统,产品发布Z后迟早会面临的各种突发状况,一般你会发现 两个重要的漏洞。第一个和功能相关,比如计算错误、或者处理和解释数据的错 误。这类漏洞很容易产牛,通常产品上线前这些bug都会被检测到并得到处理。 第二类漏洞更具挑战性,只有在特定的底层框架下这些漏洞才会显现。因此这些 漏洞很难检测和重现,通常情况下不易在测试中发现。相反的,在产品上线运行 时几乎总会遇到这些漏洞。更好的测试以及软件质量控制可以提高漏洞移除的机 率,然而这并不能确保你的代码没有漏洞。 最坏的情况下,代码中的漏洞会触发系统级联错误,进而导致系统致命的失败。 特别是在分布式系统屮,其服务位于其它服务与客户端之间。 稳定分布式操作系统的网络行为 系统致命失败热点首要是网络通信。不幸的是,分布式系统的架构师和设计者常 常以错误的方式假设网络行为。二十年前,L. Peter Deutsch和其他Sim公司 同事就撰文分布式错误,一直到今天依然普遍存在。 网络是可靠的 零延迟 无限宽带 网络是安全 不变的拓扑结构 只有一个管理员 传输成木为零 同质化的网络 今天的多数开发人员依赖RESTFUL系统解决分布式系统网络通信带来的诸多挑 战。REST最重要的特点是,它不会隐藏存在高层的RPC桩(Stub)后面的网络 通信限制。但RESTful接口和终端不能单独确保系统内在的稳定性,述需要做一 些额外的工作。 本文介绍了四种稳定模式来解决分布式系统中常见的失败。本文关注REStful 终端,不过这些模式也能应用于其他通信终端。木文应用的模式来自Michael Nygeird 的书,http://www. importnew. com/Release Tt! Design and Deploy Production-Ready Softwareo 示例代码和 demo 是口 己的。 卜载本文源代码,Gregor Roth在2014年10月JavaWorld大会上关于稳定模式 在RESTful架构中的应用的源代码。 应用稳定模式 稳定模式(Stability Pattern)用来提升分布式系统的弹性,利用我们熟知的 网络行为热点去保护系统免遭失败。本文所引用的模式用来保护分布式系统在网 络通信中常见的失败,网络通信中的集成点比如Socket、远程方法调用、数据 库调用(数据库驱动隐藏了远程调用)是第一个系统稳定风险。用这些模式能避 免一个分布式系统仅仅因为系统的一部分失败而宕机。 网店demo 在线电子支付系统通常没有新的客户数据。相反,这些系统常常基于新用户住址 信息为外部在线信用评分检查。基于用户信用得分,网店demo应用决定采用哪 种支付手段(信用卡、PayPal账户、预付款或者发票)。 这个dem。解决了一个关键场景:如果信用检测失败会发生什么?订单应该被拒 绝么?多数情况卜,支付系统回退接收一个更加可靠的支付方式。处理这种外部 控件失败即是一种技术也是一种业务决策,它需要在失去订单和一个爽约支付可 能之间做出权衡。 图1显示了网店系统蓝图 图1电了支付系统流程图 网店应用采用内部支付服务决定选用何种支付方式,即支付服务提供针对某个用 户支付信息以及采用何种支付方式。本例中服务采用RESTful方式实现,意味着 诸如GET或者POST的HTTP方法会被显示调用,进而由URI对服务资源进行处理。 此方法在JAX-RS 2.0特殊注解所在代码样品屮同样冇体现。JAX-RS 2. 0文档实 现了 REST与Java的绑定,并作为Java企业版本平台。 列表1、采用何种支付手段 @Singleton @Path(/〃) public class PaymentService { 〃… private final PaymenlDao paymentDao; private final URI creditScoreURI; privatc final static Function〈Scorc, ImmutablcSct〈PaymcntMcthod SCORE_TO_PAYMENTMETHOD = score - {

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档