在线客服
扫描二维码
下载博学谷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的原因。
9768
2019-05-17 17:19:23
使用集合类各种容器时必须注意的细节
Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再一一个类的形式提供。集合类可以在里面保存多个对象的类,不同的集合类有不同的功能和特点。这里就和大家介绍一下再使用集合类各种容器的时候,必须注意的相关细节。
6473
2019-12-11 18:30:42
如何成为高级Java开发工程师?提升哪些专业技能?
要想成为成为高级Java开发工程师除了专业知识更多的是相关项目经验,成为高级Java工程师对Java要有深入的研究。需要掌握JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程,在大的研发项目中可以提供更多的编程思维。
8332
2020-02-13 16:31:45
Java集合ArrayList教程学习路线分享
Java集合ArrayList教程学习路线分享,我们需要学习:ArrayList集合底层数据结构、ArrayList源码分析、ArrayList继承关系等相关知识,学习ArrayList基本应用,通过底层原理分析让大家更深层次的理解ArrayList,真正做到学以致用。
6733
2020-03-19 15:04:21
Java开发中Netty线程模型原理解析
Netty是Java领域有名的开源网络库,具有高性能和高扩展性的特点,很多流行的框架都是基于它来构建。netty 线程模型不是一成不变的,取决于用户的启动参数配置。通过设置不同的启动参数Netty ,可同时支持 Reactor 单线程模型、多线程模型。
7031
2021-05-13 10:28:26
