|
|
|
|
移动端

1.1 什么是微服务

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

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

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


第1章 欢迎迈入云世界,Spring

本章主要内容

了解微服务以及很多公司使用微服务的原因

使用Spring、Spring Boot和Spring Cloud来搭建微服务

了解云和微服务为什么与基于微服务的应用程序有关

构建微服务涉及的不只是构建服务代码

了解基于云的开发的各个组成部分

在微服务开发中使用Spring Boot和Spring Cloud

作为软件开发者,我们一直处于一片混乱和不断变化的海洋之中,这已是软件开发领域中的一个常态。新技术与新方案的突然涌现会让我们受到强烈的冲击,使我们不得不重新评估应该如何为客户搭建和交付解决方案。使用微服务开发软件被许多组织迅速采纳就是应对这种冲击的一个例子。微服务是松耦合的分布式软件服务,这些服务执行少量的定义明确的任务。

本书主要介绍微服务架构,以及为什么应该考虑采用微服务架构来构建应用。我们将看到如何利用Java以及Spring Boot和Spring Cloud这两个Spring框架项目来构建微服务。Spring Boot和Spring Cloud为Java开发者提供了一条从开发传统的单体的Spring应用到开发可以部署在云端的微服务应用的迁移路径。

1.1 什么是微服务

在微服务的概念逐步形成之前,绝大部分基于Web的应用都是使用单体架构的风格来进行构建的。在单体架构中,应用程序作为单个可部署的软件制品交付,所有的UI(用户接口)、业务、数据库访问逻辑都被打包在一个应用程序制品中并且部署在一个应用程序服务器上。

虽然应用程序可能是作为单个工作单元部署的,但大多数情况下,会有多个开发团队开发这个应用程序。每个开发团队负责应用程序的不同部分,并且他们经常用自己的功能部件来服务特定的客户。例如,我在一家大型的金融服务公司工作时,我们公司有一个内部定制的客户关系管理(CRM)应用,它涉及多个团队之间的合作,包括UI团队、客户主团队、数据仓库团队以及共同基金团队。图1-1阐示了这个应用程序的基本架构。

图1-1 单体应用程序强迫开发团队人工同步他们的交付,因为他们的代码需要被作为一个整体单元进行构建、测试和部署

这里的问题在于,随着单体的CRM应用的规模和复杂度的增长,在该应用程序上进行开发的各个团队的沟通与合作成本没有减少。每当各个团队需要修改代码时,整个应用程序都需要重新构建、重新测试和重新部署。

微服务的概念最初是在2014年前后悄悄蔓延到软件开发社区的意识中,它是对在技术上和组织上扩大大型单体应用程序所面临的诸多挑战的直接回应。记住,微服务是一个小的、松耦合的分布式服务。微服务允许将一个大型的应用分解为具有严格职责定义的便于管理的组件。微服务通过将大型代码分解为小型的精确定义的部分,帮助解决大型代码库中传统的复杂问题。在思考微服务时,一个需要信奉的重要概念就是:分解和分离应用程序的功能,使它们完全彼此独立。如果以图1-1所示的CRM应用程序为例,将其分解为微服务,那么它看起来可能像图1-2所示的样子。

由图1-2可以发现,每个功能团队完全拥有自己的服务代码和服务基础设施。他们可以彼此独立地去构建、部署和测试,因为他们的代码、源码控制仓库和基础设施(应用服务器和数据库)现在是完全独立于应用的其他部分的。

微服务架构具有以下特征。

应用程序逻辑分解为具有明确定义了职责范围的细粒度组件,这些组件互相协调提供解决方案。

每个组件都有一个小的职责领域,并且完全独立部署。微服务应该对业务领域的单个部分负责。此外,一个微服务应该可以跨多个应用程序复用。

微服务通信基于一些基本的原则(注意,我说的是原则而不是标准),并采用HTTP和JSON(JavaScript Object Notation)这样的轻量级通信协议,在服务消费者和服务提供者之间进行数据交换。

服务的底层采用什么技术实现并没有什么影响,因为应用程序始终使用技术中立的协议(JSON是最常见的)进行通信。这意味着构建在微服务之上的应用程序能够使用多种编程语言和技术进行构建。

微服务利用其小、独立和分布式的性质,使组织拥有明确责任领域的小型开发团队。这些团队可能为同一个目标工作,如交付一个应用程序,但是每个团队只负责他们在做的服务。

我经常和同事开玩笑,说微服务是构建云应用程序的“诱人上瘾的毒药”。你开始构建微服务是因为它们能够为你的开发团队提供高度的灵活性和自治权,但你和你的团队很快就会发现,微服务的小而独立的特性使它们可以轻松地部署到云上。一旦服务运行在云中,它们小型化的特点使启动大量相同服务的实例变得很容易,应用程序瞬间变得更具可伸缩性,并且显而易见也会更有弹性。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

解密SEO:搜索引擎优化与网站成功战略

本书是作者根据十年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。本书帮助读者建立搜索营销的概念,分析搜索营...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊