浅析微服务架构和Spring Cloud,向微服务开发进军

前言

近几年,大家都在谈论微服务,微服务是一个非常火爆的关键词,在百度中搜索微服务,随便就有几千万条结果。那么,什么是微服务呢,微服务的概念又是怎么产生的呢?

相信大家对微服务也不陌生,或者正在做着相关的开发,现在,我们先来了解一下微服务架构的来龙去脉,为什么要使用微服务架构微服务架构能给我们带来什么好处,微务架构与Spring Cloud又是一种什么关系。

浅析微服务架构和Spring Cloud,向微服务开发进军

下面请跟随笔者来一探究竟吧~~~

微服务概念的由来

据说,早在2011 年5月,在威尼斯附近的一个软件架构师研讨会上,就有人提出了微服务架构设计的概念,用它来描述与会者所看得见的一种通 用的架构设计风格。时隔一年之后,在同一个研讨会上,大家决定将这种架构设计风格用微服务架构来表示。

起初,对微服务的概念,也没有一个明确的定义,大家只能从各自的角度说出了对微服务的理解和看法。

有人把微服务理解为- -种细粒 度的SOA ( Service Oriented Architecture, 面向服务架构),一种轻量的组件化的小型SOA。

有人把微服务看作一种使用HTTP通信的自包含的轻量进程。

……

在这些看法中,比较统一的一点就是,大家都认为微服务是一种小型的应用程序,并且使用轻量级的设计方法和轻量级的HTTP通信。

简而言之,微服务架构风格是将单个应用程序作为一组小型服务开发的方法,每个服务程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机器独立部署。这些服务可以用不同的编程语言编写,使用不同的数据存储技术,并尽量不用集中式方式进行管理。

从这个描述中可以看出,微服务可以是一个小型的服务组件,它使用轻量的HTTP协议进行通信。微服务也可以是一个独立的应用程序,它可以具有独立的数据库、独立部署和独立运行。理想的想法是,微服务可以使用不同的语言来编写,并且完全独立自治。

微服务设计架构特点

基于上面微服务的定义,我们可以总结出微服务架构设计的几个显著特点,具体如下。

浅析微服务架构和Spring Cloud,向微服务开发进军

1.小型化

微服务架构设计的突出之处就是进行服务组件化设计,组件化的结果最显著的特点就是应用程序变小了。使用组件化方式来构建的应用程序,每个组件将只负责完成一定范围的业务功能,更加专一地做好一件事情。因为小型化的特点,会让问题变得更加简单,也使开发变得更加容易。

2.自治化

使用去中心化的扁平化设计,将使每个服务都能够进行独立自治,这是对复杂功能的一种解耦设计。这种设计的特点也给每个微服务提供了更加自由的管理空间。

每个微服务都是一个独立的应用, 独立使用数据库独立部署,独立运行,这种独立性符合高内聚松耦合的设计原则。在微服务开发和维护中,每个微服务都是独立的,一个服务的更新和迭代将不存在对其他任何服务的依赖,同时也不会给其他服务造成影响,或者将这种影响减少到最小限度。

3.扁平化

独立自治的微服务,可以更加自由地发挥每一个服务的优势和长处。但是这种自由并不是指随意的混搭和组合,而是使用了扁平化的服务治理,让更多的微服务在发挥个性优势的同时,处在一种杂而不乱的有序可控的状态之中。虽然从整体上微服务已经没有集中管理的概念了,但是微服务在整体上能够发挥更佳的性能优势。

4.轻量级设计

微服务的组件化特点,也是- -种轻量级设计方法的体现,这种轻量级的设计同样体现在微服务的通信设计之中。

微服务的通信设计通常用到两种方式,即使用API的同步通信和使用消息通道的异步通信,不管使用哪种通信方式,都没有像SOA的ESB ( Enterprise Service Bus,企业服务总线)那样的重量级设计,而是分别使用简单的REST协议和轻量的消息总线来实现。

5.渐进式设计

一个产品从成型到成熟总是要经历- -个过程,这个过程就是渐进式设计的特点。由于微服务小型而独立的特点,微服务设计可以使用业务驱动的方式进行,使用快速迭代进行不断地修正和调整,以使产品趋于成熟。

微服务架构和整体式架构的区别

如果是一个小型项目,使用整体式架构来设计,其好处是明显的,因为它的设计、开发、测试和部署,都在-一个项目上就可以完成。

如果一个业务复杂的大型项目,也使用整体式架构来设计,就将存在很多问题。可能刚开始的阶段,还感觉不到什么,但是随着时间的推移,加入的功能越来越多,一个项目就变成了一块巨大的石头,十分笨重。

面对一个如此巨:大的项目,开发人员要弄清楚它的代码逻辑,必须要花费很多的时间。而针对某一项功能的更改,极有可能动一线而牵全身, 这会让实施的人员变得很难应对。所以这种项目将会变得越来越难以维护,越来越不便更新。

整体式架构的稳定性也不能得到有效的保障,如果其中的-一个模块出现问题,将会影响到整个系统的正常运行,甚至造成整个系统的崩溃。而要进行问题的跟踪,因为系统庞大,往往难上加难。

另外,一个巨大的应用项目,也不方便进行持续开发,它不能适应需求的变更,不能适应快速迭代的敏捷开发方法,所以这样的项目最终就变成了业务发展的绊脚石。

相比之下,大型项目使用微服务架构就具有明显的优势。

微服务架构设计,就是将复杂事情进行简单化处理的方法,它将一-个复杂的系统, 拆分成一些小型的应用来开发,起到了一种“大事化小,小事化无”的效果。因为简单,代码的逻辑会变得更加清晰,这无疑减轻了程序员繁重的劳动;因为简单,所以能够专注,

能够将每一件事情做好, 做到极致。

微服务中独立的小型应用,也非常适合使用敏捷开发方法,能够快速响应需求的变化,进行快速更新,快速迭代,甚至将一个应 用推倒重来也是很容易做到的。

因为每个微服务都是独立自治的,一个服务的故障也不会影响到全局系统的正常运行,或者说可以将这种影响降到最低限度。况且,微服务架构的容错设计可以避免这种情况发生。

微服务架构高可用的特点是系统稳定性的最好保障,而且微服务能够支持高并发的调用,支持高流量的访问,能够持续保证平台规模化发展的要求,这是整体式架构所不能做到的。

浅析微服务架构和Spring Cloud,向微服务开发进军

如果我们使用一个六边形结构来表示整体式架构的话,将可以绘制出如图1-1 所示的结构图。这个六边形的核心是整体式架构的领域业务模型,它通过系统接口使用各种适配器,例如数据库适配器、文件适配器等,与外部管理系统进行连接。然后通过接口使用

诸如RestAPI适配器、WebUI适配器等对外部App和终端用户提供接口调用和Web访问等服务。

从图1-1中可以看出,整体式架构是一个大而全的系统。在微服务架构设计中,我们可以使用一个小六角形来表示每个微服务,它相当于将整体式架构进行拆分之后得到的结果,如图1-2所示。

浅析微服务架构和Spring Cloud,向微服务开发进军

小六角形的微服务同样使用接口,通过各种适配器来连接外部管理系统,而微服务之间也可以通过接口,使用Rest API适配器进行通信,而对于App和终端用户,将分别由不同的微服务提供相应的适配器及其服务。

为什么要使用微服务架构

微服务架构轻量级的设计风格,不管从理论上还是从技术实现.上,已经越来越多地得到更多人们的肯定和认可,大家对它的未来发展趋势都抱有一种乐观的态度。 使用微服务的好处如下。

1.开发简单

微服务架构将复杂系统进行拆分之后,让每个微服务应用开发都变得非常简单,没有太多的累赘。对于每一个开发 者来说,这无疑是一种解脱, 因为再也不用进行繁重的劳动了,每天都在一种轻松愉快的氛围中工作,其效率将会成倍地提高。

2.快速响应需求变化

一般的需求变化都来自于局部功能的变更,这种变更将落实到每个微服务上,而每个微服务的功能相对来说都非常简单,更改起来非常容易,所以微服务非常适合敏捷开发方法,能快速响应业务需求的变化。

3.随时随地更新

一方面,一个微服务的部署和更新并不会影响到全局系统的正常运行;另一方面,使用多实例的部署方法,可以做到一个服务的重启和更新在不易被察觉的情况下进行。所以每个微服务任何时候都可以进行更新部署。

4.系统更加稳定可靠

微服务运行在一个高可用的分布式环境之中,有配套的监控和调度管理机制,并且还可以提供自由伸缩的管理,充分保障了系统的稳定可靠性。

5.规模可持续扩展

每个互联网应用都具有巨大的市场潜力,一且这种潜力被激发,就需要系统能支持大规模的高并发访问机制,使用微服务架构设计的系统,将能适应业务的快速增长,并可持续支持规模化的扩展。

为什么要使用Spring Cloud

浅析微服务架构和Spring Cloud,向微服务开发进军

微服务架构的实施和使用已经经历了一-定的历程,在这一过程中, 亚马逊、Nettlix在使用微服务架构设计中成功的经验及其取得的成绩,是一个令人振奋的结果。特别是Netlix oss开源组件的推出,更掀起了一番微服务的热潮。

Spring团队在Netlix OSS的基础,上,推出了Spring Cloud微服务开发工具套件,极大地降低了微服务开发的门槛。使用Spring Cloud工具套件,可以让一个Java开发者,非常容易地开发微服务应用。

Spring Cloud专注于为典型用例和可扩展机制提供良好的开箱即用体验,涵盖了如下各个方面的功能。

分布式/版本化配置。服务注册和发现。路由。服务之间调用。负载均衡。断路器。全局锁。主机选举和集群状态。有了Spring Cloud,开发微服务应用就变得非常简单了。使用Spring Cloud,你可以在任何环境中进行开发和调试,包括自己的笔记本电脑、公司的局域网环境以及CloudFoundry等托管平台。

以上就是小编整理的微服务架构简介,怎么样,大家是不是对微服务架构和spring cloud又有了新的认识。

感觉小编整理的还不错的话,请给小编一个关注,你们的支持就是小编最大的动力!!!

欢迎大家多多留言交流哦~

猜你喜欢

转载自blog.csdn.net/python6_quanzhan/article/details/106532622
今日推荐