Java中微服务架构与传统架构的区别

Java中微服务架构与传统架构的区别

在聊微服务之前,先来看看传统架构的优缺点。

传统的 MVC 架构,所有的子系统都集成在一个很繁杂的 JVM 进程中。

优点:

这种单体架构的优点在于方便管理,所有代码在同一项目中,但是当需求越来越多,项目规模越来越大,其坏处也很明显。

缺点:

1、项目过于臃肿,部署效率低下

当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以维护。单体应用的代码越来越多,依赖的资源越来越多时,应用编译打包、部署测试一次非常耗时。系统高可用性差,资源无法隔离,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。

2、开发成本高

早期在团队开发人员只有两三个人的时候,协作修改代码,打包部署,更新发布这完全可以控制。但是团队一旦扩张,还是按照早期的方法去开发,那如果测试阶段只要有一块功能有问题,就得重新编译打包部署。所有的开发人员又都得参与其中,效率低下,开发成本极高。

3、无法灵活拓展

当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群:但是这种扩展并非灵活的扩展,因此,急需一种方法将应用的不同模块进行解耦,从而降低开发和部署成本。

要解决上面单体应用的问题,就必须引入服务化的概念。

什么是服务化?

用通俗的语言来说,服务化就是把传统单体应用中通过 JAR 包依赖产生的本地方法调用,改造成 RPC 接口产生的远程方法调用。这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。

什么是微服务?

微服务架构是一种架构风格和架构思想,它倡导我们在传统软件应用架构的基础上,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以独立承担对外服务的职责,通过此种思想方式所开发的软件服务实体就是“微服务”,而围绕着微服务思想构建的一系列结,我们可以将它称之为“微服务架构

微服务有什么样的具体特点呢?

1、服务拆分粒度更细

微服务可以说是更细维度的服务化,小到一个子模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为一个微服务。

2、服务独立部署

传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件为单位进行部署。

3、服务独立维护,分工明确

每个微服务都可以交由一个小团队进行开发,测试维护部署,并对整个生命周期负责,当我们将每个微服务都隔离为独立的运行单元之后,任何一个或者多个微服务的失败都将只影响自己或者少量其他微服务,而不会大面积地波及整个服务运行体系。

微服务它是由单体应用进化到服务化拆分部署,后期随着移动互联网规模的不断扩大,敏捷开发、DevOps 理论的发展和实践。随着微服务架构的越来越完善和发展,更多的企业已经使用这种架构方法。

更多最新java技术,资料和知识点,可以私信或评论联系我领取!

原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12146608.html

时间: 2024-10-12 18:30:06

Java中微服务架构与传统架构的区别的相关文章

DDD CQRS架构和传统架构的优缺点比较

明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概念.我个人也写了一个ENode框架,专门用来实现这个架构.CQRS架构本身的思想其实非常简单,就是读写分离.是一个很好理解的思想.就像我们用MySQL数据库的主备,数据写到主,然后查询从备来查,主备数据的同步由MySQL数据库自己负责,这是一种数据库层面的读写分离.关于CQRS架构的介绍其实已经非常

JAVA Cloud微服务项目实战 SpringBoot 2.x +SpringCloud

课程目录第1章 课程介绍课程导学和学习建议 1-1 SpringCloud导学1-2 获取源码说明1-3 提问建议1-4 点餐项目演示说明第2章 微服务介绍什么是微服务, 单体架构优缺点, 常见的几种架构模式. 2-1 微服务和其他常见架构2-2 从一个极简的微服务架构开始第3章 服务注册与发现介绍微服务中的服务注册与发现机制,Spring Cloud Eureka组件的使用以及如何保证高可用 3-1 Spring Cloud Eureka3-2 Eureka Server3-3 Eureka

JAVA springboot微服务b2b2c电子商务系统-springboot集成swagger2,构建优雅的Restful API(十一)

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

微服务框架Dubbo与Springcloud的区别

微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界. 每个服务开发者只专注服务本身,通过使用缓存.DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明. 2.可独立部署 由于微服务具备独立的运行进程,所以每个微服务可以独立部署.当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风

微服务与SOA:有什么区别?

在优锐课的java架构分享学习中,讨论了关于微服务是新的SOA吗? 人们还在谈论SOA吗? 让我们研究一下整体结构与这两种更新的体系结构之间的区别. 在"什么是微服务"中,了解到具有分布式架构的SOA和微服务比单片架构具有明显的优势. 在本博客中,我将解释基于分层的架构,并告诉你微服务和SOA架构之间的区别. 在深入研究微服务和SOA之间的差异之前,让我告诉你单片式架构,SOA和微服务之间的基本差异: 用外行的术语来说,一个整体类似于一个大容器,其中应用程序的所有软件组件都组装在一起并

关于Java中this和super的用法介绍和区别

1.this&super 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的.要注意的是this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this.his也可作为构造函数来使用.在后面可以看到 而什么是super,可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类.super的作用同样是可

java中,return和return null有什么区别吗?

java中,return和return null有什么区别吗? 最大的区别:return;方法的返回值必须是void!return null;方法的返回值必须不是 原始数据类型(封装类除过)和void! return 就是跳出方法...return null也是跳出方法并返回null.. 也就是说return null必须用在返回值不是void的方法里面..return可以用在任何方法里面 不要认为null就是没有值..null就是值..真正的没有值是..比如你String s;这个时候s是没有

Java中集合List,Map和Set的区别

Java中集合List,Map和Set的区别 1.List和Set的父接口是Collection,而Map不是 2.List中的元素是有序的,可以重复的 3.Map是Key-Value映射关系,且Key不能重复 4.Set中的元素是无序的,不可重复的

Java中PhantomReference、WeakReference、SoftReference有什么区别?

Java中有多种引用类型,按照从强到弱的顺序分别如下: 强引用:就是最常见的引用,通过等号赋值就是强引用. 软引用:当内存不足时自动释放引用.一般应用于需要大量内存的缓存程序中. 弱引用:不阻止垃圾回收,当强引用或者软引用都消失时,即使存在弱引用内存也会被释放. 幽灵引用:只引用一个对象的"灵魂",幽灵引用是不能直接访问的,所以get方法永远返回null.这种引用能阻止JVM释放对象的内存,但是被引用的对象可以finalize.这东西有什么用呢?按照文档中的说法就是用于调整对象之间fi