博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Build self-healing distributed systems with Spring
阅读量:6222 次
发布时间:2019-06-21

本文共 1471 字,大约阅读时间需要 4 分钟。

  hot3.png

原文链接:

这篇文章介绍了如何 Spring Cloud 是如何帮助构建一个高可用的分布式系统的。在同类文章算是介绍的很不错的,感觉比 Spring Blog 里面的文章还要更全面易懂。

文章开始先介绍了构建分布式系统时会遇到的各种需要解决的问题,然后分别由这些问题引出 Spring Cloud 中的各种技术。

Spring Cloud Config Server

以 Git、SVN 等 VCS 系统存储 properties、yml 等格式的配置文件,构建了一个可横向伸缩的配置服务器。且不说使用效果怎么样,这个思想还是很有启发性的。配置文件通常是文本文件,用 VCS 存储是顺理成章的,同时还具备了版本控制功能,使得配置的变化被记录了下来。再在这个基础之上,加上横向伸缩的能力,便成为了一个很不错的配置服务器。

Spring Cloud Bus

Spring Cloud Bus 为 Spring 应用提供了 Message Broker 的功能。目前的唯一实现是基于 AMQP 的(用 RabbitMQ 为消息中间件)。目前,Cloud Bus 的一个应用是通过消息中间件,将配置改变的事件通知给业务组件。被 @RefreshScope 表示的 Bean 便具有了感知配置变化的能力。

Spring Cloud Netflix

Spring Cloud Netflix 是 Spring Cloud 中被介绍最多的部分。基于 Netflix 一套经过实战的解决方案,Spring Cloud Netflix 为分布式系统提供了很多易用又强大的功能。

Hystrix

对于 Eureka 和 Ribbon,我不多介绍,因为这两个是被提到比较多的技术。多介绍一下 Hystrix。Hystrix 会对提高分布式系统在远程调用方面的可用性和鲁棒性非常有帮助的一个组件。它提供了熔断器等模式(服务降级)。同时,它还提供了一个很不错的远程调用监控的功能(如原文图6所示的 Hystrix Dashboard)。Spring Cloud Netflix 使得 Hystrix 提供的这些功能(当然也包括 Eureka 和 Ribbon 所提供的功能)可以很透明地、非侵入式地被 Spring 应用所使用。

目前常见的应用监控解决方案,如国内厂商比较广泛使用的大众点评的 CAT,其使用方式还是一种侵入是的。这种方式是业务代码和监控系统相耦合,同时也使代码的可读性降低。所以最好的方式是非侵入式的监控(某些场合实现起来很困难,比如异步 API)。在这方面,Spring Cloud Netflix 在 REST API 调用方面给我们提供了一个不错的可选择的方案。

Zuul

Zuul 是 Netflix 所用的反向代理模块。不同于 Nginx 和 HAProxy,Zuul 使用的是动态加载 Groovy 缩写的 Filter 的方式来定义路由规则。因为采用了编程的方式,所以其自定义能力大大强于 Nginx 和 HAProxy(此处是凭经验推断)。

Spring Cloud Netflix 进一步地在 Zuul 的基础上提供了 OAuth2 SSO 的能力。

总结

大致读了一下这篇文章,发现了 Spring Cloud 更多的亮点和可以为项目之所用的地方。我相信深入了解 Spring Cloud 以及其设计思想会给我们的分布式系统带来质的提高。

转载于:https://my.oschina.net/lifany/blog/614687

你可能感兴趣的文章
iOS开发如何在一个透明视图上添加不透明的子控件
查看>>
加解密
查看>>
Cortex-A9 UART
查看>>
envoy 功能介绍
查看>>
百度地图api ak值
查看>>
macOS High Sierra Terminal巨卡问题的解决
查看>>
【SSH项目实战】脚本密钥的批量分发与执行【转】
查看>>
[LeetCode] Largest Palindrome Product 最大回文串乘积
查看>>
JAVA生成问答式验证码图片,支持加减算法
查看>>
『TensotFlow』转置卷积
查看>>
windows 7系统搭建PHP网站环境
查看>>
MySQL系统变量 sql_mode 详解
查看>>
css样式表中的样式覆盖顺序
查看>>
MYSQL中group_concat有长度限制!默认1024(转载)
查看>>
boostrap
查看>>
游乌镇
查看>>
使用socket.io client 开发时兼容IE低版本的办法
查看>>
rsync远程同步
查看>>
AdaBoostClassifier实战
查看>>
Android如何配置init.rc中的开机启动进程(service)【转】
查看>>