Spring Boot与Docker(一):微服务架构和容器化概述

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是Spring Boot与Docker(一):微服务架构和容器化概述,【编者的话】本篇是《使用Spring Boot和Docker构建微服务架构》系列四部曲的第一篇,本篇将会对我们谈及的微服务架构以及容器化概念作一个概述。
本文讲的是Spring Boot与Docker(一):微服务架构和容器化概述 【编者的话】本篇是《使用Spring Boot和Docker构建微服务架构》系列四部曲的第一篇,本篇将会对我们谈及的微服务架构以及容器化概念作一个概述。原文作者为3Pillar环球旗下美国Adbanced技术集团的总监Dan Greene,Dan有十八年的软件设计和开发经验,包括在电子商务、B2B集成、空间分析、SOA架构、大数据以及云计算等领域的软件产品架构经验,他是AWS认证解决方案架构师,在3Pillar之前先后就职于Oracle、ChoicePoint和Booz Allen Hamilton。Dan毕业于乔治·华盛顿大学,他也是一个父亲、业余木工爱好者,还参加过包括国际障碍大赛这样的障碍赛跑。

有关微服务的所有那些喧闹到底是什么?

随着越来越多的产品利用可重用的基于Rest的服务构建,人们很快发现把业务功能拆分成为可重用的服务是非常有效的,但同时也带来了一个风险。每次更新服务,您必须重新测试与它一起部署的每一个服务,即使您有信心认为代码更改不会影响其他服务,您永远无法真正确保这一点,因为这些服务会不可避免地共享代码、数据和其他组件。

随着容器化的兴起,你可以在一个完全隔离的环境中非常高效地运行代码,把它们两个组合在一起将会允许在细粒度可扩展性和版本控制方面的产品架构优化,不过付出的代价是增加了复杂性和一些重复的代码。

容器化是不是仅仅只是新的虚拟化?

答案是不完全是。容器和虚拟机具有一些相似性,它们都是通过一个控制进程管理的隔离环境(分别是容器管理器和虚拟机监控程序),但两者之间的主要区别是,对于每一个虚拟机,运行的是一个完整的组件堆栈——从操作系统到应用服务器,以及仿真的虚拟硬件包括网络组件、CPU和内存。

对于容器来讲,它们运行在更为完全隔离的沙盒中,出现在每个容器里的仅仅是操作系统的最小内核,共享了底层系统的资源。容器化的最大优势在于对于相同的硬件占用空间更小,可以比虚拟机运行更多的实例。容器也有一些关键的限制:最大的一个是容器只能运行在基于Linux的操作系统上面(内核隔离是Linux的特定技术)。

与这一限制相关的就是Docker——目前最流行的容器服务提供系统——不能直接运行在Mac或者Windows系统上,因为它们不是Linux,替代方案就是为了运行Docker,你需要使用VirtualBox启动一个Linux虚拟机,接着在虚拟机里运行Docker。幸运的是,它绝大多数是由Docker ToolBox来管理的(原名Boot2Docker)。

Docker已经获得了众多的支持,以至于容器镜像的公共Repository——Docker Hub,拥有超过了136,000个公共镜像。其中许多是由个人创建的,一些扩展自“官方”镜像然后按照他们自己的需求做了定制,但是其它的都是从“基础”镜像做了完整的平台配置定制化。我们将利用这些“基础”和“官方”镜像开始我们的研究之旅。

所以我们已经谈论了微服务和容器化,但是Spring Boot在哪个部分起作用呢?

我选择使用Java来构建我自己的微服务,具体地说就是Spring Boot框架。选择它主要是因为我熟悉Spring、易于开发的Rest服务Controller、业务服务以及数据存储,还可以很容易地引入Scala的Akka/Play编程模型。微服务架构的其中一个最为人称道的优势就是服务的完全独立,所以不需要也不应该关心每一个服务采用什么语言或平台构建。

就我个人而言,我认为多语言的维护成本要比获得的弹性收益更大,但也有适用的用例,比如在一个大组织内的一个部门已经选择了不同的技术栈为“标准”的情况下。另外一个可能的场景就是如果你决定从一个语言/平台转换到另外一个——你可以每次迁移一个微服务,提供相同的终端Web服务接口。我们努力的目标如下:
  • 一个从开始设置微服务和Docker到如何结束的指南。
  • 了解围绕微服务架构的诸多组件的作出的不同决定的利弊——从源代码控制到服务版本化,以及其中的一切。
  • 分析“纯粹”的微服务信仰,并且看它们如何应用到一个“现实世界”的场景。
  • 看Docker是如何面对喧嚣,以及为专业开发运行Docker什么是必需的。
  • 利用一系列的微服务构建一个完整的解决方案,每一个微服务都有它自己的容器,一个在自身容器托管的持久化层,还有容器集群。
  • 其它有价值的内容。

我将模拟的业务场景是一家软件开发公司的员工任务分配和识别系统,包含了以下任务:
  • 员工登录进系统
  • 员工看到要求的任务列表,比如写一篇关于新兴技术的博文、参加一个会议、举行一次Code Review
  • 员工向他们的经理提交这些任务的完成批准
  • 员工获得完成任务的“打分”
  • 员工依据“打分”可以获得奖励,比如公司礼物、与CEO一对一的免费午餐等等。

在这儿结束本篇非常不错——我们已经开始了理解微服务、容器化以及接下来用来讨论的业务场景,当我们步入第二篇时,我们将会设置相关的工具,深入如何使用Docker工作,然后搭建我们的第一个容器。

原文链接:BUILDING A MICROSERVICE ARCHITECTURE WITH SPRING BOOT AND DOCKER, PART I(翻译:胡震)

原文发布时间为:2015-12-07
本文作者:国会山上的猫TuxHu
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:Spring Boot与Docker(一):微服务架构和容器化概述
目录
相关文章
|
4天前
|
负载均衡 测试技术 持续交付
高效后端开发实践:构建可扩展的微服务架构
在当今快速发展的互联网时代,后端开发扮演着至关重要的角色。本文将重点探讨如何构建可扩展的微服务架构,以及在后端开发中提高效率的一些实践方法。通过合理的架构设计和技术选型,我们可以更好地应对日益复杂的业务需求,实现高效可靠的后端系统。
|
4天前
|
监控 持续交付 API
构建高效可扩展的微服务架构
在当今快速迭代和竞争激烈的软件市场中,构建一个高效、可扩展且易于维护的后端系统变得尤为重要。微服务架构作为一种流行的分布式系统设计方式,允许开发者将应用程序划分为一系列小型、自治的服务,每个服务负责执行特定的业务功能。本文将探讨如何利用现代技术栈搭建一个符合这些要求的微服务架构,并讨论其潜在的挑战与解决方案。我们将涵盖服务划分策略、容器化、服务发现、API网关、持续集成/持续部署(CI/CD)以及监控和日志管理等关键主题,以帮助读者构建出既可靠又灵活的后端系统。
|
5天前
|
消息中间件 敏捷开发 运维
构建高效可靠的微服务架构:策略与实践
随着现代软件开发的复杂性增加,微服务架构逐渐成为企业解决大型应用系统分解、敏捷开发和持续部署问题的有效手段。本文深入探讨了构建一个高效且可靠的微服务架构的关键策略,包括服务的合理划分、通信机制的选择、数据一致性保障以及容错处理。通过分析这些策略在具体案例中的应用,我们旨在为开发者提供一套可行的微服务设计及实施指南。
115 6
|
5天前
|
监控 数据管理 API
构建高效微服务架构:后端开发的新趋势
在现代软件开发领域,随着业务需求的不断复杂化以及敏捷迭代的加速,传统的单体应用架构逐渐暴露出其局限性。微服务架构作为一种新的解决方案,以其高度模块化、独立部署和可扩展性,正成为后端开发领域的新趋势。本文将探讨微服务架构的核心概念,分析其优势与面临的挑战,并提供实施高效微服务的策略和最佳实践,帮助读者理解如何利用这一架构模式提升系统的可靠性、灵活性和可维护性。
126 5
|
5天前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新范式
在数字化转型和技术迭代的浪潮中,微服务架构以其灵活性、可扩展性和独立性成为现代后端开发的重要趋势。本文深入探讨了构建高效微服务架构的关键要素,包括服务划分策略、容器化部署、API网关设计以及持续集成与持续部署(CI/CD)的实践。通过分析这些组件和流程,我们旨在为后端开发者提供一套实用的指南,帮助他们构建和维护一个高性能、可靠的微服务系统。
20 5
|
5天前
|
消息中间件 缓存 API
微服务架构下的API网关性能优化实践
在现代的软件开发中,微服务架构因其灵活性和可扩展性被广泛采用。随着服务的细分与增多,API网关作为微服务架构中的关键组件,承担着请求路由、负载均衡、权限校验等重要职责。然而,随着流量的增长和业务复杂度的提升,API网关很容易成为性能瓶颈。本文将深入探讨API网关在微服务环境中的性能优化策略,包括缓存机制、连接池管理、异步处理等方面的具体实现,旨在为开发者提供实用的性能提升指导。
|
6天前
|
Prometheus 监控 API
构建高效微服务架构:后端开发的新趋势
随着现代软件开发的复杂性增加,传统的单体应用已难以满足快速迭代与灵活部署的需求。微服务架构作为解决这一问题的有效手段,其设计理念和实践方法已成为后端开发领域的热门话题。本文将探讨如何构建一个高效的微服务架构,涵盖设计原则、技术选型、以及实践中可能遇到的挑战,为后端开发者提供一套可行的参考方案。
13 2
|
1月前
|
缓存 Java Maven
Spring Boot自动配置原理
Spring Boot自动配置原理
40 0
|
2月前
|
安全 Java Maven
Spring Boot常见企业开发场景应用、自动配置原理结构分析(三)
Spring Boot常见企业开发场景应用、自动配置原理结构分析
|
2月前
|
Java 数据库连接 Spring
Spring Boot常见企业开发场景应用、自动配置原理结构分析(二)
Spring Boot常见企业开发场景应用、自动配置原理结构分析

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版