在传统的单体应用系统架构中,通常分为三个部分,即数据库端、服务应用端和前端展示端,如图所示:
在业务发展初期,因为全部的业务逻辑在一个应用中,开发、测试、部署都比较容易。可是,随着业务的发展,系统为了应对不一样的业务需求会不断为单体应用增长不一样的业务模块。长此以往,不断扩充的业务需求致使单体应用的系统愈来愈庞大臃肿。此时,单体应用的问题也逐渐显现出来,因为单体应用是一个“总体”,每每修改一个小的功能,为了部署上线就会影响到其余功能的运行。前端
对于业务而言,每每不一样模块对系统资源的要求不也尽相同,而单体应用各个功能模块由于没法分割,也就没法细化对系统资源的需求。因此,单体应用在初期是比较方便快捷,可是随着业务的发展,维护成本会愈来愈大,且难以控制。数据库
云原生的概念最先开始于2010年,主要用于描述一种和云同样的系统行为应用的编写,好比分布式的、松散的、自服务的、持续部署与测试的。当时提出“云原生”是为了能构建一种符合云计算特性的标准来指导云计算应用的编写。架构
致使了“云原生”概念的诞生的因素,主要有几个方面:
云平台具备很好的可扩展性,为了利用这一点,云原生应用由多个小而独立的模块组成,如图所示:分布式
基于这些独立模块构建的服务架构,就叫作微服务。微服务
微服务架构(MSA)的基础是将单个应用程序开发为一组小型独立服务,这些独立服务在本身的进程中运行,独立开发和部署。学习
这些服务使用轻量级 API 经过明肯定义的接口进行通讯。这些服务是围绕业务功能构建的,每项服务执行一项功能。因为它们是独立运行的,所以能够针对各项服务进行更新、部署和扩展,以知足对应用程序特定功能的需求。测试
微服务是分布式系统中的一种流行的架构模型,它并非银弹,因此,也不要寄但愿于微服务构架可以解决全部的问题。微服务架构主要解决的是如何快速地开发和部署咱们的服务,这对于一个可以适应快速开发和成长的公司是很是必要的。同时,微服务设计中有不少很不错的想法和理念,经过学习微服务架构咱们能够更快的迈向卓越。云计算
能够对微服务架构中的每一个组件服务进行开发、部署、运营和扩展,而不影响其余服务的功能。这些服务不须要与其余服务共享任何代码或实施。各个组件之间的任何通讯都是经过明肯定义的 API 进行的。spa
每项服务都是针对一组功能而设计的,并专一于解决特定的问题。若是开发人员逐渐将更多代码增长到一项服务中而且这项服务变得复杂,那么能够将其拆分红多项更小的服务。设计
微服务促进若干小型独立团队造成一个组织,这些团队负责本身的服务。各团队在小型且易于理解的环境中行事,而且能够更独立、更快速地工做。这缩短了开发周期时间。您能够从组织的总吞吐量中显著获益。
经过微服务,您能够独立扩展各项服务以知足其支持的应用程序功能的需求。这使团队可以适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。
微服务支持持续集成和持续交付,能够轻松尝试新想法,并能够在没法正常运行时回滚。因为故障成本较低,所以能够大胆试验,更轻松地更新代码,并缩短新功能的上市时间。
将软件划分为小型且明肯定义的模块,让团队能够将功能用于多种目的。专为某项功能编写的服务能够用做另外一项功能的构建块。这样应用程序就能够自行引导,由于开发人员能够建立新功能,而无需从头开始编写代码。
服务独立性增长了应用程序应对故障的弹性。在总体式架构中,若是一个组件出现故障,可能致使整个应用程序没法运行。经过微服务,应用程序能够经过下降功能而不致使整个应用程序崩溃来处理整体服务故障。
在本章节中,讲述了微服务诞生的背景,传统单体架构的劣势,同时,基于云原生技术的的发展,微服务架构诞生。基于微服务架构,能够更好的,灵活的处理客户端的请求并提升系统的可靠性,可扩展性。