架构设计之「 微服务入门 」

2019-06-13  本文已影响0人  不止思考

微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行为所带来的危害,比如很多中小团队对微服务的基础知识只是做了很浅显的了解就开始盲目的推动微服务的实施,最后导致了项目的失败。

微服务要想做好是一个非常复杂的架构,今天就先只聊一聊微服务的一些基础架构,算是入门篇。

一、什么是「 微服务 」?

「 微服务 」由 Martin Fowler 提出,它是指一种软件架构风格。一个大型的系统可以由多个微服务组成,每个微服务是被独立部署,独立完成自己的任务单元,微服务之间是通过API方式进行通信调用,是松耦合的。

这个模式听着是不是很熟悉的感觉?

因为在提出「 微服务 」概念之前,很多互联网公司的中大型项目早就是按照将业务拆分成独立单元的形式在部署和架构的,这与微服务的思路是一脉相通的,只不过实现方式没有现在这么规范与体系。

那「 微服务 」到底是怎么演变过来的呢?

在做一个新项目的时候,一开始项目大多数都很小,都是「 单体应用 」,这是很常见的做法。在项目规模小的时候,这种方式开发效率和运维效率都最高,符合互联网公司快速响应的要求。

但是随着业务量越来越大,项目也越来越复杂,开发团队人员也越来越多。这个时候还采用单体应用,问题就会很明显了。下面挑选两个最为常见的问题来举例:

为了解决这些问题,大家就开始考虑将「 单体应用 」进行拆分,进行服务化部署。然后又随着 Martin Fowler对「 微服务 」概念的提出,加上 DevOps 的流行,进一步促进了微服务的火热发展。

「 微服务 」的理念提倡每个服务都是单一职责,且每一个服务都能实现自治,因此可以带来一些明显好处:

二、「 微服务 」的架构是什么样?

我们先来看一下「 微服务 」的架构图:

(图片来源网络,粉丝太少就懒得画图了,大家发挥一下想象力将就的看看,哈哈)

看起来挺复杂对不对,事实上也确实很复杂。

所以微服务并不是适用于所有项目、所有团队的。在应用之前一定要搞清楚是否适合自己。

要保证这么一套微服务架构能成功运行起来,我们起码需要以下这些 微服务的基础组件

当然,上述只是一个微服务架构最为核心的基础组件,一旦微服务体系过大,例如有几十上百个微服务节点,那么开发、维护、测试的成本就会非常大。因此一般还会引入 自动化部署 和 自动化测试 来提高协同效率。

三、「 微服务 」入门如何避免踩坑?

你以为微服务架构都是下面这样的吗?

事实上,更能是下面这样的,哈哈。

(图片来源网络)

大家都在宣扬「 微服务 」多么多么的好,例如:易扩展、松耦合、服务简单、独立开发、易维护、轻量级等等。虽然这些优势也是事实,但是「 微服务 」带来的问题也很多,尤其是对于刚入门的团队而言,应用微服务后,趟坑真的可以趟到你崩溃。下面就普及一些常见的问题来给大家打个预防针:

以上,就是对架构设计中「 微服务基础 」的一些思考。

码字不易啊,喜欢的话不妨转发朋友,或点击文章右下角的“在看”吧。😊

本文原创发布于微信公众号「 不止思考 」,欢迎关注。涉及 思维认知、个人成长、架构、大数据、Web技术 等。 

上一篇 下一篇

猜你喜欢

热点阅读