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

简介: 本文讲的是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月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
7月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
620 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1514 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
10月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
544 12
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3500 36
微服务架构解析:跨越传统架构的技术革命
|
12月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
622 1