看都不懂的三层架构,到底要怎么理解?( 二 )


2. 轻量级通信
服务之间通过轻量级的通信机制实现互通互联,而所谓的轻量级,通常指语言无关、平台无关的交互方式 。

看都不懂的三层架构,到底要怎么理解?

文章插图
 
对于轻量级通信的格式而言,我们熟悉的 XML 和 JSON,它们是语言无关、平台无关的;对于通信的协议而言,通常基于 HTTP,能让服务间的通信变得标准化、无状态化 。目前大家熟悉的 REST(Representational State Transfer)是实现服务间互相协作的轻量级通信机制之一 。使用轻量级通信机制,可以让团队选择更适合的语言、工具或者平台来开发服务本身 。
3. 独立性
每个服务在应用交付过程中,独立地开发、测试和部署 。
在单块架构中所有功能都在同一个代码库,功能的开发不具有独立性;当不同小组完成多个功能后,需要经过集成和回归测试,测试过程也不具有独立性;当测试完成后,应用被构建成一个包,如果某个功能存在 bug,将导致整个部署失败或者回滚 。
看都不懂的三层架构,到底要怎么理解?

文章插图
 
在微服务架构中,每个服务都是独立的业务单元,与其他服务高度解耦,只需要改变当前服务本身,就可以完成独立的开发、测试和部署 。
看都不懂的三层架构,到底要怎么理解?

文章插图
 
4. 进程隔离
单块架构中,整个系统运行在同一个进程中,当应用进行部署时,必须停掉当前正在运行的应用,部署完成后再重启进程,无法做到独立部署 。
有时候我们会将重复的代码抽取出来封装成组件,在单块架构中,组件通常的形态叫做共享库(如 jar 包或者 DLL),但是当程序运行时,所有组件最终也会被加载到同一进程中运行 。
看都不懂的三层架构,到底要怎么理解?

文章插图
 
在微服务架构中,应用程序由多个服务组成,每个服务都是高度自治的独立业务实体,可以运行在独立的进程中,不同的服务能非常容易地部署到不同的主机上 。
理论上所有服务可以部署在同一个服务器节点,但是并不推荐这么做,因为微服务架构的主旨就是高度自治和高度隔离 。
“王哥你真厉害,您这么一说我的思维清晰了很多!”成小胖激动的几乎要叫起来 。
“我之前了解过 SOA,好像跟微服务架构的思想很像啊,您能帮我区分一下吗?”成小胖追问到 。
老王嘿嘿一笑,拿起成小胖手上的A4纸,翻到另外一面画了个表格:
看都不懂的三层架构,到底要怎么理解?

文章插图
 
接着老王又画了一张图:
看都不懂的三层架构,到底要怎么理解?

文章插图
 
成小胖看了之后说:“您这么一画我倒是大概明白了,但是 DevOps 这个概念我不懂诶……”
“这个 DevOps 就说来话长了,有时间你自己先去查查资料了解下吧 。”
“好的 。现在我对微服务架构的概念有了了解,您能再深入剖析下它的本质吗?”
“好,你可仔细听好了哈!”
1. 服务作为组件
微服务也可以被认为是一种组件,但是跟传统组件的区别在于它可以独立部署,因此它的一个显著的优势 。另外一个优点是,它在组件与组件之间定义了清晰的、语言无关、平台无关的规范接口,耦合度低,灵活性非常高 。但它的不足之处是,分布式调用严重依赖于网络的可靠性和稳定性 。
2. 围绕业务组织团队
在单块架构中,企业一般会根据技能划分团队,在这种组织架构下,即便是简单的需求变更都有可能需要跨团队协作,沟通成本很高 。而在微服务架构中,它提倡以业务为核心,按照业务能力来组织团队,团队中的成员具有多样性的技能 。
3. 关注产品而非项目
在单块架构中,应用基本上是基于“项目模式”构建的,即项目启动时从不同技能资源池中抽取相关资源组成团队,项目结束后释放所有资源 。这种情况下团队成员缺乏主人翁意识和产品成就感 。
看都不懂的三层架构,到底要怎么理解?

文章插图
 
在微服务架构中,提倡采用“产品模式”构建,即更倾向于让团队负责整个服务的生命周期,以便提供更优质的服务 。
看都不懂的三层架构,到底要怎么理解?

文章插图
 


推荐阅读