APP下载

基于Spring Cloud和Docker的微服务架构设计

2018-05-15王方旭

中国信息化 2018年3期
关键词:镜像组件客户端

王方旭

一、概述

随着互联网、云计算的进步,微服务越来越受到从业者的关注。尤其是以单体架构建设的应用和SOA架构的应用皆无法解决数据、服务呈爆炸式增长带来的冲击,而微服务将业务系统彻底组件化、服务化的思想让系统建设者有了更多选择。

微服务的核心思想是:应用是由相互独立的服务组成,这些服务可分布式部署,运行在独立的进程中,通过轻量级的通信机制交互信息,服务独立擴展,自由伸缩,但有明确的边界,不受开发语言、技术路线、开发团队的制约。

Spring Cloud是实践微服务的框架,有活跃的开源社区支持;Docker使分布式应用脱离底层物理硬件和基础环境的限制,实现应用快速开发和部署而大放异彩的开源项目。因此,使用Spring Cloud框架和Docker构建的微服务系统是实现开发、部署、运维一体化的DevOps模式的最佳解决方案。

二、Spring Cloud

(一) Spring Cloud简介及架构图

Spring boot是由 Pivotal 团队提供的框架,按照约定大于配置的核心思想对Spring框架进行了简化。Spring Cloud是基于Spring Boot推出一系列框架、组件的有序集合,简化了分布式系统基础设施的开发,且封装的框架均是成熟且经过实际检验的,比如面向服务发现治理的EureKa,面向负载均衡的Ribbon等。经过封装,向开发者提供的则是易理解、易部署、易交互的分布式系统开发框架。

下图,展示了Spring Cloud框架完整架构图。

(二) Spring Cloud框架中的组件

1. Eureka在Spring Cloud框架中实现微服务的自动注册与发现。定义服务注册中心是在启动类配置@ EnableEurekaServer;定义服务提供者是在其启动类配置@EnableEurekaClient,该注解声明服务是Eureka客户端,具备服务注册和发现能力。

2. Zuul的作用是动态路由和请求过滤,便于监控和认证。在服务启动类上配置@EnableZuulProxy即可开启Zuul的动态路由作用,而在启动类内部配置继承了ZuulFilter类的过滤器实现类可开启Zuul的请求过滤功能。

3. Ribbon是基于HTTP和TCP的客户端负载均衡器,从Eureka注册中心获取服务列表,采用轮询访问的方式实现负载均衡的作用。在客户端的服务方法上配置@ LoadBalanced即可开启客户端负载均衡。

4. HyStrix是能够提升系统的容错能力的熔断器。该服务在启动类配置@EnableCircuitBreaker或者@ EnableHystrix即可开启熔断器支持。

5. Turbine是为了监控微服务集群而引入的工具,Turbine结合HyStrix可监控系统中所有服务的实时数据。在服务的启动类配置@EnableTurbine可开启Turbine功能。

6. F e i g n整合R i b b o n向客户端提供声明式的H T T P A P I。在基于F e i g n的服务启动类上配置@ EnableFeignClients即可开启Feign功能,在服务接口类上配置@FeignClient绑定服务提供者的服务名和实现方法。

7. Spring Cloud Config为Spring Cloud框架系统提供统一的配置管理,并提供服务器端(Config Server)和客户端(Config Client)的支持,Config Server本质上是一个用于集中管理配置、获取远程配置仓库的配置信息供客户端使用的微服务。在服务器端的启动类上配置@EnableConfigServer开启Config Server功能。

8. Spring Cloud Bus的作用是将各服务节点用轻量的消息代理(如RabbitMQ)连接起来,并广播配置文件的动态信息和服务之间的通讯。

9. Spring Cloud Sleuth集成ZipKin,实现微服务的链路监控分析。基于Zipkin的服务在启动类配置@ EnableZipkinServer开启Zipkin Server功能,服务开启后通过访问Zipkin Server监控页面监控服务的请求细节和分析依赖关系。

三、Docker与微服务

微服务虽是先进的架构,但在系统的复杂性、服务的持续集成方面却有无法回避的弊端,因此,我们引入了Docker技术。Docker 是遵从Apache2.0 协议开源的容器引擎,利用轻量级虚拟化技术实现资源隔离,并将各种环境依赖和应用统一打包,以达到方便应用移植和部署的目的。我们将微服务打包成独立的Docker镜像,之后push到私有镜像库中,每次部署服务时从私有镜像库pull下对应的镜像,按照Docker Compose编排好的微服务调度方式运行镜像。

下图是使用Docker后,微服务部分的框架图。多个业务系统独立部署在Docker容器中,将复杂的应用系统拆分成多个功能单一、业务逻辑简单的服务进行独立部署。每个微服务注册在Eureka Server中,通过声明式的RESTful API相互调用。

四、结束语

通过Spring Cloud和Docker构建的应用平台,充分展现了微服务架构的优势,对服务做到了组件化、服务化的管理,提升了服务的持续集成能力和扩展能力。随着技术的进步,微服务架构的系统会更多的被采用,而基于Spring Cloud和Docker构建微服务系统必会成为让微服务落地的最佳解决方案。当然随着技术的进步,思想、理念的变化,微服务架构的思想仍需要不断的探索与改进。

猜你喜欢

镜像组件客户端
创建Vue组件npm包实战分析
光伏组件热斑对发电性能的影响
智能机械臂
镜像
镜像
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
镜像
浅析IEEE 802.1x及其客户端软件
嵌入式组件技术的研究及应用