Spring Cloud 微服务实战——Java开发人员必须掌握的技术

原创 2017年11月08日 11:06:56


Spring Cloud简介


Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。


Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。


微服务架构


“微服务架构”在这几年非常的火热,以至于关于微服务架构相关的产品社区也变得越来越活跃(比如:netflix、dubbo),Spring Cloud也因Spring社区的强大知名度和影响力也被广大架构师与开发者备受关注。


那么什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。


对于“微服务架构”,大家在互联网可以搜索到很多相关的介绍和研究文章来进行学习和了解。也可以阅读始祖Martin Fowler的《Microservices》,本文不做更多的介绍和描述。


服务注册与发现


在简单介绍了Spring Cloud和微服务架构之后,下面回归本文的主旨内容,如何使用Spring Cloud搭建服务注册与发现模块。


这里我们会用到Spring Cloud Netflix,该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路有(Zuul),客户端负载均衡(Ribbon)等。


所以,我们这里的核心内容就是服务发现模块:Eureka。

负载均衡

在Spring Cloud框架中,负载均衡服务本身也要作为一个发现客户端注册到Eureka服务器上。客户发起一个请求时,需要在Eureke服务器上发现负载均衡服务,负载均衡服务通过RestTemplate调用微服务的接口时,会通过Ribbon进行负载均衡。这样,不同的服务请求会由负载均衡机制分别调用微服务的不同实例。

服务网关

在整个Spring Cloud微服务框架里,Zuul扮演着”智能网关“的角色。一方面,Zuul是接入网关,起到反向代理的作用,是外部消费者请求内部服务的唯一入口。另一方面,Zuul也具备过滤功能,通过在运行时注入过滤规则可实现用户鉴权、动态路由、灰度发布、A/B测试、负载限流等功能。


Zuul的大部分功能都是通过过滤功能来完成的,Zuul可以提供四种标准类型的过滤。


内部调用

在微服务的开发中,我们还会碰到很多微服务之间内部相互调用的情况,特别是对数据服务的调用。在Spring Cloud中,有两种方式可以,一种是使用RestTemplate,另一种是使用Feign框架。


RestTemplate调用另一个微服务的接口我们在系列五负载均衡的文章中已经讲过具体的实现,本章不再累述。


Feign是声明式Web服务客户端,所谓声明式,指的是在代码中,将要调用的其它内部微服务提供的Restful API声明为自己的接口,该接口使用FeignClient注解。声明后,在本微服务中就可以通过接口注入的方式消费其它微服务的提供的Restful API了。


Feign也内置有负载均衡Ribbon,会采用轮训式的负载均衡方式。


熔断机制

熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。


在Spring Cloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。熔断机制的注解是@HystrixCommand,Hystrix会找有这个注解的方法,并将这类方法关联到和熔断器连在一起的代理上。当前,@HystrixCommand仅当类的注解为@Service或@Component时才会发挥作用。


上一节中,我们提到,微服务之间的调用可以通过两种方式,一个是RestTemplate,另一个是Feign。相对应,在这两种调用方式下,都有Hystrix调用方法。


下面,我们将为大家介绍一门Spring Cloud微服务实战的课程,手把手教您从搭建框架到服务应用,快速掌握Spring Cloud微服务必备实践知识:



<<<<<<<<<<<<<<<<<<<<<在线系列课>>>>>>>>>>>>>>>>>>>>

Spring Cloud 微服务实战

讲师介绍:

王浩彬老师,开发组长/高级工程师/技术专家
曾任中科院云计算Java工程师、某公司架构咨询师等职位。参与开发多个大型项目,设计主导公司核心技术平台,参与广州君晟信息科技公司、天安金交所等公司项目和架构咨询。 热爱开源,深入了解Spring Cloud,多个项目开源在Github与Git@OSC上,并获得开源中国的推荐,著有Spring Cloud相关的AG开源系列作品。

课程介绍:

学习了本课程您能掌握以下知识点:1、了解Spring Cloud核心模块构成概要,实操通过模版空代码搭建自有框架,了解Spring Cloud核心模块拉通细节; 2、实操搭建服务脚手架,快速构建服务增删改查基础模块,考虑利用模版代码来加速解决; 3、服务调用实例讲解,了解Feign、Hystrix熔断机制;扩展服务鉴权; 4、统一Api网关中心搭建,实操完成用户身份认证,无状态服务开发设计,前后端交互认证标准等。

课程特色:专属答疑+课件资料提供+视频无限时回放+VIP交流群

开课时间:随到随学,自由支配


相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

作为一个Java开发人员,有些常用的Linux命令必须掌握

作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服...

十大最急需IT技术人才榜:Java开发人员领跑

北京时间7月13日消息,根据Dice网站最新的调查显示,本月“最急需的十大IT技术”Java开发人员排到首位,紧随其后的是移动应用程序开发人员和NET开发人员。 该数据显示,软件开发人员名列第四。不...

Java开发人员必须重视HTML5的5点理由

过去,Java开发人员都是依赖Web浏览器作为应用程序的前端。但过程往往令人沮丧:HTML笨拙,JavaScript缓慢而难用,缺乏调试工具,想让应用程序兼容所有的浏览器是一个非常艰苦的过程。但现在你...

Java开发人员必须知道和了解的案头网站

语言:英语 简介:HTML,CSS,XPATH,XSL,JAVASCRIPT等API的查询网站。 http://www.w3schools.com/ 语言:英语 简介:W3C制定的标准...

初级java开发人员应该掌握的知识

【1】:你应该熟悉HTML的绝大部标签的使用,可以使用DIV+CSS制作简单的网站           能够熟练书写表单,掌握所有的表单标签!           【2】:java基础:   ...

如何有效快速提高Java服务端开发人员的技术水平?

我相信很多工作了3-5年的开发人员都会经常问自己几个问题: 1.为什么总是感觉技术没有质的提高? 2.如何能够有效和快速的提高自身的技术水平? 3.如何进入到一个牛逼的大公司,认识牛...

10个适合于高级Java开发人员的外国网站

下面这些是我收藏的适合高级Java程序员去的网站,这些网站的内容包括了IT新闻、问题解答和职业面试等信息。好网站的核心在于其高质量的内容。在我看来,这些都属于最优秀的网站。我在介绍这些网站的同时也会分...

JAVA开发人员在编写SQL时最容易犯的10个错误

原文网址: 10 More Common Mistakes Java Developers Make when Writing SQL  或 http://blog.jooq.org/2013/08/...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring Cloud 微服务实战——Java开发人员必须掌握的技术
举报原因:
原因补充:

(最多只允许输入30个字)