权威招聘网站显示,超过五成的高薪岗位,都要求掌握微服务架构,如果还不会,你可能连初试机会都没有!想高薪?Microservice你必须懂!
微服务(Microservice)这个概念是2012年出现的,2014年开始受到各方的关注;经过数年发展到现在,越来越多的论坛、社区、blog以及互联网行业巨头开始对微服务进行讨论、实践。2020年了,再不了解微服务就out了!快来跟着小编一探究竟吧!【文末有彩蛋】
一 微服务的出现
微服务架构(Microservice Architecture)是一种架构概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
微服务的流行,Martin Fowler功不可没。这老头是个奇人,特别擅长抽象归纳和制造概念。微服务这个名词就是典型:一解释就懂,一问就不知,一讨论就打架。
二 传统开发模式和微服务的区别
下面我们来通过对比一下两种方式,比较容易理解什么是微服务架构。这种传统Web开发方式一般被称为Monolithic(单体式开发)。
图一 单体结构
如上图,所有的功能打包在一个程序里,基本没有外部依赖(除了容器),部署在一个网站进程里,包含了 DAL,Service,UI等所有逻辑。
图二 微服务架构
如上图,微服务有效的拆分应用,实现敏捷开发和部署。它由一系列的独立的服务共同组成系统;单独部署,跑在自己的进程中,分布式管理,具有非常强调隔离性。这样一来,系统的架构可按照业务,而不是技术来划分组织,具有高度容错性,并实现了快速演化和迭代。
三 微服务的多种实现模式
1 聚合器微服务设计模式这是一种最常见也最简单的设计模式:
聚合器调用多个服务实现应用程序所需的功能。它可以是一个客户端将数据进行处理展示,也可以是更高层次的组合微服务,对数据增加业务逻辑后进一步发布成一个新的微服务。一般来说,每个服务都有自己的缓存和数据库。
2、代理微服务设计模式
这是聚合模式的一个变种:
在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作。
3、链式微服务设计模式
这种模式在接收到请求后会产生一个经过合并的响应:
在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。
4、分支微服务设计模式
这种模式是聚合器模式的扩展,允许同时调用两个微服务链:
5、数据共享微服务设计模式
自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用”时,SQL数据库反规范化可能会出些问题。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式:
6、异步消息传递微服务设计模式
虽然REST设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替REST请求/响应:
福利预警
从理论上,解读了微服务架构的方方面面,但微服务架构的实操落地,却不是那么简单!涉及到对整个系统方方面面的规划设计和重构......
如何能快速拥有微服务架构实操落地经验呢?
小编要发福利了!
高薪必修 一学就会
纸上得来终觉浅,如果想拿高薪,就得马上行动起来!
微服务架构难学吗?其实一点都不难!
朝夕教育推出微服务架构速成专题课!
并由资深架构师,腾讯金牌讲师——Eleven,亲自授课!
全套课程388元,限时免费送啦!
仅限前200名
赶紧扫码领取 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
本文分享自微信公众号 - dotNET知音(AAshiyou)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。