|
|
51CTO旗下网站
|
|
移动端

2.1.1 微服务

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍微服务。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-12 16:30

2.1.1 微服务

微服务架构风格是将一个应用程序分解为众多能够独立运行的轻量级服务,每个服务都能够使用轻量级的通信方式相互访问,例如http Rest API。这些服务是按照业务规则进行划分的,并且每个服务都能够借助自动化部署工具进行独立部署。尽可能去除中心化服务管理模式。每个服务都可以使用不同的语言实现,也可以使用不同的数据存储技术。

——Martin Fowler

Martin Fowler 是国际著名的OXO 专家,也是敏捷开发的创始人之一,以上是MartinFowler 提出的对微服务的定义,很简洁、很抽象,但也很精准地定义了微服务的几大标准。

(1) 分布式服务组成的系统。

(2) 服务是按照业务规则进行划分。

(3) 服务轻量化,能够独立部署运行。

(4) 去中心化,服务间使用轻量级的通信方式。

(5) 自动化运维。

这些标准就是构建一个微服务平台的一些准则,当然每个人对微服务都可以有自己的理解,在这些标准的基础之上,还可以扩展出很多微服务的标准。例如:既然是分布式的服务,则必然要保证服务的高可用性和容错性,考虑服务的分区和可扩展性。

在深入理解这些之前,需要先要了解传统应用程序的架构模式。在以前的开发设计过程中,一个应用程序通常是一个整体,按照技术规则将应用程序划分层次,每个层次之间通过接口进行交互。例如,在Java 中,开发一个Web 应用程序,通常会分成三个层次,数据库操作层,业务处理层,Web 控制层以及前端展现。更复杂的应用程序则层次会更加复杂,如图2.1.1-2 所示,是一个简单的三层架构的应用程序。

传统的应用程序是将所有的服务都放置在一起的,在部署的时候是将整个应用程序打包并部署,应用程序内的所有的服务都是用一个进程来运行。这种方式开发起来较为简单,并且也易于管理,因为应用程序所有的内容都在一起。但也有很大的弊端,例如,不能快速地发布新的版本。传统方式下发布一个应用程序的新版本时,需要所有服务都准备好之后才能够发布。并且有时只需修改一个服务的问题,也需要将整个应用重新发布,这种方式下很难做到快速响应变化。传统方式在实现高可用和可扩展时,也比较困难,并且成本也较高,风险也较大,尤其是复杂的应用项目。

之后,人们就开始探索改变的道路,像ECB,SOA 等。但这种中心化服务管理的模式使其自身变得异常复杂,微服务与ECB,SOA 相比还是不同的,微服务推崇的是分布式,去中心化,并且每个服务都是在独立的进程或者容器中运行的。

微服务架构几乎完美地解决了传统应用的缺点,微服务主张将应用程序按照业务拆分成轻量级的服务,每个服务都可以独立部署和运行,如图2.1.1-3 所示。例如,应用中有两个模块,一个是订单模块,一个是用户管理,就可以将订单和用户划分为两组独立的服务,两者通过轻量级的http 方式来通信。这两个模块可以独立部署和运行,更新时,只需要修改和发布更新过的服务即可。不必更新整个应用。

另外,在做高可用时,不再是针对应用程序层级,而是对服务做高可用,只需要保证一个服务在多个节点中都有副本运行;在扩展时,也可以实现服务级别的缩放。在之前的例子中,如果订单服务访问量较大,可以将该服务的运行的负载节点数增加。而不像传统应用那样,需要对整个应用做扩展。微服务以容器或者独立进程的方式运行,可以最大化地使用物理节点或者虚拟机的资源,以节省成本。

当容器(Docker)服务出现时,容器提供的快速启动,标准化的程序包,以及独立运行的环境,使得微服务更加易于实现,并且更加敏捷和高效。从此Docker 容器加上自动化运维工具就基本成了实现微服务架构的标配,如图2.1.1-4 所示。使用容器来做微服务的框架有Docker Swarmer 和GoogleKubernetes 等。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

嬴在用户:Web人物角色创建和应用实践指南

您如何保证您的网站确实给予用户他们所需要的,并对您产生商业成果?您需要了解谁是您的用户,您的用户的目标、行为和观点是什么,还要把他...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊