阿里P7+架构师带你SpringCloud学习 - 浅谈微服务架构

前言

目前越来越多的话题都围绕着微服务,许多公司也在使用微服务架构。笔者也刚刚接触微服务不久,也算是微服务架构的初学者,谨以本文来记录学习过程中对微服务架构的一些理解。好啦,废话不多说,我们往下看。

1.微服务是什么?

微服务,英文名MicroService,他是一种架构风格一种架构设计模式,通常表现为一个庞大而复杂的应用其背后是由数个职责分明的服务组成,这些服务他们各自分工明确,可以独立部署同时也可以根据需求进行扩展,各个服务之间松耦合并且可相互通信。

结合我们生活来说,一个公司内部组织架构也算是一种微服务的表现,公司内部按不同职能划分了许多部门,人事部门、财务部门、开发部门、测试部门、运维部门等等这些部门都是一个个的微服务,各个部门之间相互独立办公同时也相互协同办公。这些所有的部门组成了公司的整体。

微服务的概念出自于马丁·福勒(Martin fowler),他对微服务的定义如下:

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于 HTTP 协议的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,对具体的服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建 。

2.为什么要用微服务?

微服务从最初的无人问津,到现在大红大紫,被大家广泛使用。那么问题来了,为什么要用微服务架构?为什么就不用以前的架构了?我们先来了解一下传统的架构方式。

2.1单体架构

应用程序作为单体进行打包和部署,称之为单体应用,例如基于SpringMVC+Mybatis+Spring开发的许多Java项目最终被打包成一个war格式的文件部署在Tomcat或者Jetty服务器上。而这种单体应用的架构理论就称之为单体架构。

2.1.1单体应用的局限性

一个单体应用他可能内部也区分了业务逻辑模块,但最终都打包为一个单体,随着时间的推移,单体式应用的不足就暴露出来了。

复杂度高难以理解

随着时间推移,业务需求的升级,代码量越来越大,项目内部逻辑变得越来越复杂,各个模块之间区别模糊,逻辑混乱,开发人员对于代码的理解难度加大。

代码维护难度升级

时间线拉长后,一个项目可能会有许多程序员接手,代码复杂度增大之后,前人留下的坑后人来填,刚上手的程序员可能会面对一个又一个问题。

部署速度之间变慢

单体架构的应用内部业务模块众多,每次功能的变更都需要重新部署整个应用,项目的启动时间可能从最初的一分钟演变为最终的十分钟,这种情况乱其实很多

可靠性稳定性直线下降

由于整个项目是部署在一个实例中,一个小小的bug可能就会导致整个应用的崩溃。

技术创新难以实现

受项目本身限制,团队成员必须使用一种框架和语言,模块无法明确清晰的拆分,升级框架和使用新技术的风险和成本很高。

资源需求冲突难以解决

不同的业务对物理资源的需求是不同,比如处理图片音乐视频的模块是CPU密集型的模块,而像订单、日志等是属于IO密集型模块,当需要提升IO密集模块性能时,但由于我们的应用是单体架构,所有模块都在一个架构下,所以我们想要对某一模块进行升级扩展不得不考虑其他模块。随着需求进一步变更,资源需求冲突会成为整个应用最大的痛点。

单体应用在面对这写日益严峻的问题时,微服务架构则从根本上杜绝了这些隐患的产生。

3.微服务能用在哪?

微服务架构往往用于解决复杂问题,他适合将复杂庞大的问题拆分为相互独立又相互联系的小个体。相比于单体架构,微服务架构是构建业务复杂度高,规模大,需要长期持续迭代这一类应用时更好的选择。

现在已经有很多公司采用微服务架构来解决单体式架构可能会造成的隐患,笔者所在的团队就选用了基于SpringBoot的SpringCloud,如此一来能够大大提高开发效率的同时降低项目的维护难度,将项目分解为多个微服务组件,各个相对独立的同时又相互协作。不用再构建并且维护一个臃肿又令人头疼的单体应用。

3.1主流的微服务框架介绍

Spring Boot

Spring Cloud

Dubbo

Dropwizard

Akka

Vert.x、Lagom、ReactiveX、Spring 5

4.微服务的优点

说了那么多,那在使用微服务之后到底有哪些优势呢?

1.应用复杂度降低,代码可读性高,易于开发。

服务单个模块就相当于一个项目,开发这个模块我们就只需关心这个模块的逻辑即可,代码量和逻辑复杂度都会降低,从而易于开发和维护。

2.容错率更高

由于各服务相互独立,当某一模块出现bug,只是针对与某一个服务组件出现故障而已,不会影响其他模块的使用,同时开发人员可以快速的解决问题。

3.技术选型不受影响

各个服务独立,完全可以使用不同的语言来实现其内部业务。

4.资源冲突问题顺利解决

在单体应用中存在的资源冲突问题,在微服务中,我们完全可以根据服务本身的特性对性能进行升级。

5.微服务的缺点

任何架构都是在实际开发中慢慢演化出来的,是为更好地适应开发者们的需求。所以微服务也存在着自身的不足之处。

1.对开发者要求更高

各个服务根据不同业务,使用到的语言、数据库、技术都存在差异,这对开发者本身就是一个挑战。

2.运维难度提升

微服务架构有许多服务组件,而部署一个微服务应用也是十分复杂的过程,单体架构中只需要维护一个应用的正常运行,但是在微服务中,但是一种服务可就就有很多实例,可能需要维护数十个服务,所以自动化部署也是应用成功运行的基础。

3.微服务自身的复杂性

为服务应用本身就是一个分布式系统,从整体上来说它也十分复杂。

6.总结

没有哪一个好的架构是被设计出来的,也没有哪一个架构可以解决所有的问题,每一个好的架构都是在不断适应业务需求的过程中不断被演化出来的。所以每种架构方式都有各自的优势和缺陷,没有最好,只有最合适!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容