- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用服务隔离的方法提高系统可用性
使用服务隔离的方法提高系统可用性
摘 要: 在大型网站和软件系统中,由于业务的复杂性,常采用服务组件化的架构策略来达到解耦和可扩展的目的。在服务按业务功能切分后,如何提高整个系统的可用性是一个非常重要的问题。文章在对大型网站服务组件化设计架构研究的基础上,结合服务组件之间强弱依赖关系的特点与典型场景,总结了服务隔离技术的基本思想和维度,提供了服务调用解耦与隔离方法、容器级别服务故障隔离方法、组件服务间接依赖故障隔离方法等来提高系统的可用性。
关键词: 系统高可用性; 强弱依赖; 故障隔离; 服务组件化
中图分类号:TP391.12 文献标志码:A 文章编号:1006-8228(2015)04-21-02
Abstract: Because of the complexity of business, the large web sites and software system use service component architecture to get ultra-scalable and highly decoupling purpose. According to the business service functional segmentation, how to improve availability of the whole system is a very important problem. Based on the research of large web site service component architecture, combined with the characteristics of strong-weak dependence and typical scene, this paper provides the service call decoupling method, the container services fault isolation method and the component services fault isolation method to improve the system availability.
Key words: high availability; strong-weak dependency; fault isolation; service component
0 引言
大型网站及软件系统,其高可用性直接影响客户体验,这是大型网站都需要面对的基础性课题。高可用性涉及到IT基础设施、软硬件架构、开发测试、运维等各个方面。目前,大型网站通常是领域业务多元化,面临高并发、高流量的挑战。为了获得更好的性能和可扩展性,按照服务组件化设计思想,以领域业务为功能单元做垂直切分,各模块之间提供服务接口关联起来,这样可以提高整个系统的可用性。然后随着应用规模的扩大,服务之间的依赖关系更为复杂,如何在系统出现故障或异常时,避免由“点故障”到“面故障”的扩散,避免不同领域业务相互影响,避免非核心影响核心,是开发者在做应用架构设计与物理部署架构设计时必须要考虑的问题。
本文结合日常项目中的实践经验,提出在服务组件化的过程中,如何做服务级故障隔离的原则和方法,提升网站可用性这一需求。
1 服务级隔离基本思想
形式上,系统与系统之间,服务与服务之间(无论是两个服务是否为同一业务组件)存在以下两种依赖关系。
⑴ 强依赖。所谓A系统强依赖于B系统是指,A系统必须依赖B系统的处理结果,才能正常的完成逻辑;简单的来说,如果B不能提供服务,A也无法正常工作。从高可用性设计的角度出发,在这种依赖关系下,A与B系统需要达到如下几点目标:对于B系统,A直接RPC调用,B在承诺的SLA基础上,做好自我保护;B系统宕机时,A尽管不能使用,但要保证机器不挂掉;B系统故障恢复时,A可以自动快速恢复;B故障时,A可以自动检测,自动降低或关闭对B的访问,防止情况恶化。
⑵ 弱依赖。所谓A系统弱依赖于B系统,是指B系统如果发生了故障,A系统可以继续提供正常的服务。弱依赖通常有这些特点:可以不等待B结果的返回(比如发送消息、ajax区域加载);B是非核心功能,结果不返回不影响A的关键流程(合理超时时间的控制),A、B的调用可以是异步(队列、线程的FutureTask、协程akka);对B的服务调用可通过功能开关实现降级。
针对强依赖与弱依赖的不同特点,在架构和设计时,为避免故障或异常时由“点故障”到“面故障”的扩散,我们考虑在区分核心与非核心(服务、组件、产品重要度分级)、按功能组与后台依赖隔离、同一容器内服务
原创力文档


文档评论(0)