|
|
|
|
移动端

1.8 为什么是云和微服务

《Spring微服务实战》第1章欢迎迈入云世界,Spring,本书主要介绍微服务架构,以及为什么应该考虑采用微服务架构来构建应用。本节为大家介绍为什么是云和微服务。

作者:陈文辉 译来源:人民邮电出版社|2018-05-23 14:06

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

1.8 为什么是云和微服务

微服务架构的核心概念之一就是每个服务都被打包和部署为离散的独立制品。服务实例应该迅速启动,服务的每一个实例都是完全相同的。

作为编写微服务的开发人员,我们迟早要决定是否将服务部署到下列某个环境之中。

物理服务器——虽然可以构建和部署微服务到物理机器,但由于物理服务器的局限性,很少有组织会这样做。开发人员不能快速提高物理服务器的容量,并且在多个物理服务器之间水平伸缩微服务可能会变得成本非常高。

虚拟机镜像——微服务的主要优点之一是能够快速启动和关闭微服务实例,以响应可伸缩性和服务故障事件。虚拟机是主要云供应商的心脏和灵魂。微服务可以打包在虚拟机镜像中,然后开发人员可以在IaaS私有或公有云中快速部署和启动服务的多个实例。

虚拟容器——虚拟容器是在虚拟机镜像上部署微服务的自然延伸。许多开发人员不是将服务部署到完整的虚拟机,而是将Docker容器(或等效的容器技术)部署到云端。虚拟容器在虚拟机内运行。使用虚拟容器,可以将单个虚拟机隔离成共享相同虚拟机镜像的一系列独立进程。

基于云的微服务的优势是以弹性的概念为中心。云服务供应商允许开发人员在几分钟内快速启动新的虚拟机和容器。如果服务容量需求下降,开发人员可以关闭虚拟服务器,而不会产生任何额外的费用。使用云供应商部署微服务可以显著地提高应用程序的水平可伸缩性(添加更多的服务器和服务实例)。服务器弹性也意味着应用程序可以更具弹性。如果其中一台微服务遇到问题并且处理能力正在不断地下降,那么启动新的服务实例可以让应用程序保持足够长的存活时间,让开发团队能够从容而优雅地解决问题。

本书会使用Docker容器将所有的微服务和相应的服务基础设施部署到基于IaaS的云供应商。下面列出的是用于微服务的常见部署拓扑结构。

简化的基础设施管理——IaaS云计算供应商可以让开发人员最有效地控制他们的服务。开发人员可以通过简单的API调用来启动和停止新服务。使用IaaS云解决方案,只需支付使用基础设施的费用。

大规模的水平可伸缩性——IaaS云服务供应商允许开发人员快速简便地启动服务的一个或多个实例。这种功能意味着可以快速扩大服务以及绕过表现不佳或出现故障的服务器。

通过地理分布实现高冗余——IaaS供应商必然拥有多个数据中心。通过使用IaaS云供应商部署微服务,可以比使用数据中心里的集群拥有更高级别的冗余。

为什么不是基于PaaS的微服务

本章前面讨论了3种云平台(基础设施即服务、平台即服务和软件即服务)。对于本书,我选择专注于使用基于IaaS的方法构建微服务。虽然某些云供应商可以让开发人员抽象出微服务的部署基础设施,但我选择保持独立于供应商并部署应用程序的所有部分(包括服务器)。

例如,亚马逊、Cloud Foundry和Heroku可以让开发人员无需知道底层应用程序容器即可部署服务。它们提供了一个Web接口和API,以允许将应用程序部署为WAR或JAR文件。设置和调优应用程序服务器和相应的Java容器被抽象了出来。虽然这很方便,但每个云供应商的平台与其各自的PaaS解决方案有着不同的特点。

IaaS方案虽然需要更多的工作,但可跨多个云供应商进行移植,并允许开发人员通过产品覆盖更广泛的受众。就个人而言,我发现基于PaaS的云解决方案可以快速启动开发工作,但一旦应用程序拥有足够多的微服务,开发人员就会开始需要云服务商提供的IaaS风格的灵活性。

本章前面提到过新的云计算平台,如函数即服务(FaaS)和容器即服务(CaaS)。如果不小心,基于FaaS的平台就会将代码锁定到一个云供应商平台上,因为代码会被部署到供应商特定的运行时引擎上。使用基于FaaS的模型,开发人员可能会使用通用的编程语言(Java、Python、JavaScript等)编写服务,但开发人员仍然会将自己严格束缚在底层供应商的API和部署函数的运行时引擎上。

本书中构建的服务都会打包为Docker容器。本书选择Docker的原因之一是,作为容器技术,Docker可以部署到所有主要的云供应商之中。稍后在第10章中,本书将演示如何使用Docker打包微服务,然后将这些容器部署到亚马逊云平台。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网络工程师教程(第2版)

本书是全国计算机技术与软件专业技术资格(水平)考试的指定用书。按照新的网络工程师考试大纲的规定,本书包含了数据通信基础知识、网络体...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊