Spring Boot与Docker(一):微服务架构和容器化概述
有关微服务的所有那些喧闹到底是什么?
随着越来越多的产品利用可重用的基于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(翻译:胡震)
Spring Boot与Docker(一):微服务架构和容器化概述相关推荐
- 使用Spring Boot和Kubernetes构建微服务架构
"我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 在本教程 ...
- 想知道spring boot+cloud+docker的微服务体系架构如何使用吗?
本文通过使用Spring Boot,Spring Cloud和Docker构建一个应用程序的示例,为了解常见的微服务架构模式提供了一个起点. 作为这个系统的基础,我选择了一个旧项目,其后端曾经是一个整 ...
- iis7 您无权使用所提供的凭据查看此目录或页面。_使用Spring Cloud和Docker构建微服务架构
原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do作者:Alexander Lukyanc ...
- 手把手教你用Spring Cloud和Docker构建微服务
什么是Spring Cloud? Spring Cloud 是Pivotal提供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接 ...
- 使用spring boot+kubernetes构建完整微服务平台
微服务架构被认为是构建大型复杂系统的最佳理论指导,其采用了分而治之.单一职责.关注点分离等方法论来设计系统架构.微服务的实现方式和思路有很多种,本文简述基于kubernetes的微服务平台建设思路及技 ...
- 学霸君基于Docker的微服务架构设计
以下内容根据演讲PPT以及现场分享整理而成. 今天主要分享的是我们在实践微服务架构或者容器架构过程中踩过的坑,对于致力在容器技术方面进行探索的同学会有很大帮助.本次将站在整体的角度,分享如何去运维整个 ...
- 如何使用消息队列,Spring Boot和Kubernetes扩展微服务
by Daniele Polencic 由Daniele Polencic 如何使用消息队列,Spring Boot和Kubernetes扩展微服务 (How to scale Microservic ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
- 用Spring Cloud和Docker搭建微服务平台
This blog series will introduce you to some of the foundational concepts of building a microservice- ...
最新文章
- 在Debian 7/Ubuntu 13.10 上使用隧道封装SSH连接
- 深圳湾口岸明起开通公交大巴
- 蓝懿IOS学习UICollectionView实战轮播图
- C语言 | C编程练习题(代码版)
- android扫码支付宝ofo,六大共享单车接入支付宝 ofo等免押金扫一扫可骑走
- CloudCompare:汉化
- 元素(Element)
- 2021年电工(初级)考试资料及电工(初级)考试技巧
- arXiv 注册完整过程(图文详解)
- 无人机pid调节顺口溜
- DevOps平台的“精益创业”之路
- MES系统在汽车零部件行业的应用
- 优漫动游平面设计思维思维训练法
- 二叉树广度和深度遍历的全部算法
- RMAN CROSSCHECK命令 说明
- Vue(Vue脚手架)
- 计算机组成原理——输入/输出系统の选择题整理
- 电大计算机科学与技术专业论文,国家开放大学计算机科学与技术专业毕业设计(论文)要求...
- 程序员都有黑客梦,聊聊渗透工程师主要学什么?
- Vue项目SEO优化解决方案
热门文章
- ❤️一分钟学会MySQL数据库的使用❤️
- 一年多少钱_赴英读研一年多少钱?
- 学计算机应用基础学到了什么,2021年学习计算机应用基础心得体会-得范文网
- android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...
- java遍历jsonarray数组_java-JSON-遍历JSONArray
- linux 获取网站预览图,Shell脚本实现获取网页快照并生成缩略图 -电脑资料
- oracle服务器文件有哪些,Oracle服务器参数文件维护的技巧有哪些呢?
- java bundle类_java ResourceBundle介绍
- python em和web_Python web 框架
- python直方图显示图例_python-Matplotlib,图例未出现在直方图中