自JAVA9诞生以来,经常会听到"模块化开发"这一词语。是的,模块化与组件化开发将会是未来开发的主要潮流,无论是作为开发人员还是架构师都必须掌握的一种开发方式。spring cloud微服务正是在这种条件下诞生的,简单的说微服务不是一种编码技术或者是设计模式,它是一种系统架构上的设计风格。它存在的主要意义就是将一个独立的系统拆分成多个小型服务,这些服务运行在自己独立的进程中,互补干扰。这相比于传统的系统架构好处是,单一模块发生的故障并不会影响到整个系统的运行,同时可以有效地支持高并发。
各种小型服务之间基于HTTP的RESTful API进行数据通信与协作。这些不同的服务分别维护着自身的数据存储、业务开发、自动化测试以及独立部署。由于采用了采用了轻量级的通信协作基础,所以微服务可以通过不同的语言来编写并且相互调用。同时随着移动端设备的进步,前端模块的展示已经不再局限于Web形式,后端需要向前端提供更多的接口模块,如果不采用微服务的话,单体应用系统将会变得越来越臃肿,这是架构师在架构设计的时候不得不面对的问题。那么,开始学习微服务究竟需要学习那些重要知识呢?下面的内容将会带你初步接触到微服务。
1、Spring Boot
Spring Boot是Spring Cloud的重要基础,他自身拥有着很多的优点,比如自动化配置、快速开发、敏捷部署等等。非常适合作为微服务的构建框架。它解决了各种棘手复杂的开发配置,让开发变得非常容易简单。应用的启动不再需要通过热部署,只要通过一个简单地命令就可以启动应用。
2、服务治理 Eureka
服务治理是微服务架构中最为核心和基础的模块,它主要提供实现各个微服务实例的自动化注册与发现。服务通常首先将自己提供的服务注册到注册中心,以便客户端进行服务发现。当客户端将服务注册到注册中心的时候就可以进行服务的调用了,这里可以同时实现服务端与客户端的集群。
3、客服端负载均衡 Ribbon
Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的。它不像服务注册中心、配置中心、API网关那样独立部署,但是它几乎存在于每个微服务的基础设施中。包括前面的提供的声明式服务调用也是基于该Ribbon实现的。理解Ribbon对于我们使用Spring Cloud来讲非常的重要,因为负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。
4、熔断器 hystrix
在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。官方解释:hystrix通过服务隔离、熔断(也可以称为断路)、降级等手段控制依赖服务的延迟与失败。 通过上述讲解我们可以得知,hystrix可以在依赖服务延迟或失败时,提供服务保护机制。
5、分布式配置中心 config
Spring Cloud Config是一个配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。用Spring Cloud开发者能快速的建立支持实现这些模式的服务和应用程序。他们将适用于任何分布式环境,无论是开发者的个人电脑还是生产环境,还是云平台。
当然了,以上只是spring cloud提供的最基本的服务,它还有一些更为高级的服务提供,例如消息总线、消息驱动、分布式服务追踪等等。JAVA后时代,微服务的兴起,架构师不得不了解的模块化架构体系
网友评论