在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
微服务是近些年流行起来的热门概念,与传统的的IT架构相比,它有许多的优势。那么到底什么是微服务呢?本文将对微服务优缺点进行分析,让大家全面的了解微服务。

一、什么是微服务
在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务" 。微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
二、微服务的优点:
1.每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
2.微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
3.微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
4.微服务能使用不同的语言开发。
5.微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
6.微服务允许你利用融合最新技术。
7.微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合。
三、微服务架构的缺点
1.运维要求较高。对于单体架构来讲,我们只需要维护好这一个项目就可以了,但是对于微服务架构来讲,由于项目是由多个微服务构成的,每个模块出现问题都会造成整个项目运行出现异常,想要知道是哪个模块造成的问题往往是不容易的,因为我们无法一步一步通过debug的方式来跟踪,这就对运维人员提出了很高的要求。
2.分布式的复杂性。对于单体架构来讲,我们可以不使用分布式,但是对于微服务架构来说,分布式几乎是必会用的技术,由于分布式本身的复杂性,导致微服务架构也变得复杂起来。
3.接口调整成本高。比如,用户微服务是要被订单微服务和电影微服务所调用的,一旦用户微服务的接口发生大的变动,那么所有依赖它的微服务都要做相应的调整,由于微服务可能非常多,那么调整接口所造成的成本将会明显提高。
4.重复劳动对于单体架构来讲,如果某段业务被多个模块所共同使用,我们便可以抽象成一个工具类,被所有模块直接调用,但是微服务却无法这样做,因为这个微服务的工具类是不能被其它微服务所直接调用的,从而我们便不得不在每个微服务上都建这么一个工具类,从而导致代码的重复。
以上就是微服务的优缺点分析。看到这里,相信大家已经初步了解“什么是微服务”。还想进一步学习微服务的小伙伴,可以在博学谷官网上观看在线学习视频。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
JavaEE学习基础:如何学习spring
Spring是Java开发中常用的一个框架,不仅仅可以用于服务器端的开发。从简单性、可测试性以及松耦合性角度而言,绝大部分的Java应用都可以从spring中收益。这也是为什么Java开发程序员都比较喜欢使用spring的原因。
8722
2019-05-17 17:19:23
Java基础 Jvm如何加载类?如何分配空间?
Java基础 Jvm如何加载类?如何分配空间?指的是将 class 文件的二进制数据读入到运行时数据区(JVM在内存中划分的)中,并在方法区内创建一个 class 对象JVM 运行起来时就给内存划分空间,这块空间就称为运行时数据区。
8703
2019-06-03 15:41:22
Java入门基础语法笔记之数组
对于刚刚入门Java的小白来讲,Java基础语法知识是学习的第一步,也是十分重要的一步。因此建议大家在学习初期就构建一套系统的学习大纲,并且边学边总结归纳,这样学下来就不至于好像什么都懂了,又好像什么都不懂。本文将为大家分享关于数组的Java入门基础语法笔记,希望大家把基础语法都像这样整理出来,方便日后的复习和梳理。下面让我们一起看看吧!
5790
2019-12-02 12:40:35
Java方法重载学习总结
Java中存在着一种多态——重载,即一个类中可以有多个方法具有相同的名字。本文要来和大家梳理的正是关于Java方法重载的学习总结,下面让我们一起来好好认识一下Java方法重载,再做一做相关练习题吧~
5631
2020-05-27 10:49:39
Java原子操作之CAS原子指令学习
Java原子操作之CAS,CAS(Compare and Swap),即比较并替换,是用于实现多线程同步的原子指令。
3070
2022-07-01 13:57:43
