聊聊微服务(一)

2020-08-25  本文已影响0人  hzhlove
炜娓道来程序人生

​最近看到一些小伙伴在聊微服务相关的话题,每个人对于微服务都有自己的理解。甚至很多小伙伴觉得微服务就是架构界的“白富美”,人人都很向往拥有它,其实不尽然。任何事物脱离场景的表述都是苍白的。那么微服务到底是什么呢?我们在什么时候需要它呢?在此我想拿出两年前在团队内部做过的一次分享,跟大家一起聊聊微服务。

说起微服务,我们不得不从它是如何诞生的说起,当我们理解了它诞生的原因后,自然就会知道微服务是为何而生,生而为何。话不多说,我们这就开始吧!

1.架构的演变

架构的演变

以互联网应用为例,绝大部分的应用都是从单体应用架构开始,随着业务的拓展及业务量的提升,逐步向分布式应用架构发展。而在早期的分布式应用架构中,以SOA架构为主,随着技术、理念的发展及更新,逐渐衍生出了微服务架构

应用架构的发展日新月异,从来没有停止过它的脚步。微服务架构同SOA架构一样,同为阶段性的产物(近些年,*Serverless架构 *也逐渐进入大家的视野,开启了应用架构向“无服务器架构”模式的转变,使开发人员能够更加聚焦在业务本身的开发。)。世界上唯一不变的就是变化本身 。

2.单体应用架构

单体应用架构

单体应用架构大都是以分层架构(layered-base)为基础构建的。所谓的单体应用架构,就是将应用所有功能打包成一个独立的单元向外提供服务。单体应用架构有其自身的优越性,非常适合初创型团队进行快速业务试错。

单体应用架构的优点:

随着业务的不断拓展及业务量的提升,单体应用架构的问题也逐渐显现出来。

单体应用架构的缺点:

为了解决上述的问题,分布式架构应运而生。

3.分布式应用架构

分布式应用架构

分布式应用架构为提升应用的扩展性、容量及可用性等问题提供了解决方案。所谓的分布式应用架构就是将应用系统拆分为多个独立的子系统,并由各个子系统协同处理,共同向外提供服务。对于分布式应用架构我们按时间将其分为了两个阶段,before 2010after 2010

▐ SOA before 2010

SOA(Service-Oriented Architecture)又叫面向服务的架构。它是一个组件模型,它将应用程序按不同功能单元(称为服务)进行拆分,并通过定义良好的接口和协议将服务联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各类系统中的服务可以以一种统一和通用的方式进行交互

关于SOA架构我们可以追溯到2000年前后。那时的互联网企业都在高速扩张,很多大型的企业都面临着业务不断拓展带来的应用复杂性及容量不足等问题的挑战,正是在这种环境下,SOA架构出现了。

SOA通过对业务垂直切分,将平台的业务拆分成若干个子服务。通过这样的拆分,可以有效的解决单体应用架构所面临的问题。

SOA的优点:

随着时间推移,被拆分的服务越来越多,随之带来问题的复杂度也呈指数上升。SOA架构的缺点逐步暴露出来。

SOA的缺点

从量变到质变,SOA的这些问题给团队带来了新的挑战。随着技术、理念的发展,逐渐孕育出了微服务架构。

▐ Microservices 2010 later

微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与小型功能区块 (Small Building Blocks) 为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互通讯。

微服务本质上是SOA架构的升级版,使用了一些新的理念及技术实现,以解决SOA架构暴露出的问题。

引用自:Microservices vs SOA: What's the Difference?[4]

2010年后,随着领域驱动设计持续集成持续部署(CI/CD)虚拟化技术云计算基础设施自动化以及多年来分布式架构实践过程中产生出的一些解决方案(服务注册发现分布式配置服务监控服务跟踪...),使得分布式架构得到了长足的发展。问题、难点一个个被攻克,微服务架构正式在此基础上诞生了。

微服务的优点:

微服务的缺点:

4.总结

通过对应用架构发展脉络的梳理,我想你对微服务是什么应该有所了解了。微服务其实正是在SOA的基础上,结合了最新的理念、成熟的解决方案逐步发展而来的一个大型应用平台解决方案。

透过问题看本质,明白了他们核心解决的问题,我想你也应该知道该如何取舍和选择了吧!所有技术架构核心是保障一个应用平台能够更稳定、高效的运转,从而达成应用平台最大化价值的目标。为了实现目标,应用架构也只是其中的一个维度,商业的目标、市场的定位、运营的策略、组织架构...,所有这些问题及环节都需要统筹规划,协同发展才可以实现最终的目标。

微服务的话题仅凭借一篇文章很难说完,本文为了便于大家的理解,我们尽量保持在架构发展趋势这一维度跟大家进行了讲解,没有对细节深入展开,后续文章会逐渐深入讲解。最后,感谢大家的耐心阅读,谢谢!

引用

[1]. https://martinfowler.com/articles/serverless.html
[2]. 《谁动了我的奶酪?》是美国作家斯宾塞·约翰逊
[3]. 《分布式系统原理与范型》
[4]. https://dzone.com/articles/microservices-vs-soa-whats-the-difference
[5]. 《领域驱动设计》

上一篇下一篇

猜你喜欢

热点阅读