【Java】什么是SOA架构?与微服务有什么关系?

简介: 【Java】什么是SOA架构?与微服务有什么关系?

我的一个微服务项目,有兴趣可以一起做

服务化架构

我们知道,早期的项目,我们都是把前后端的代码放在同一个项目中,然后直接打包运行这个项目,这种项目我们称之为单体项目,比如早期的JSP项目,我就会把前端页面和后端代码放在一起,然后一起进行编写,然后使用tomcat去运行,这就是一个很典型的单体项目。

而单体项目,我们知道,他的好处就在于部署很方便,上线很快,毕竟所有代码都在你手上,你直接运行起来是很方便的。因此,单体项目是中小型企业的首选,因为它交付快,上线快,开发也快,这也是单体项目的好处。

当然,单体架构的缺点也很明显。

由于这个服务直接运行在单台服务器上,那么只要这台服务器出问题,服务就直接出了问题,没有高可用性这么一说。并且由于所有的请求都由单台机器承担,因此他的查询压力很大,因此查询的效率也比较受影响。

而单体项目的改进方式也就是我们所说的集群,也就是集群架构模式,它强调可用性

我们部署的所有服务都以集群的方式进行部署,虽然增加了硬件成本,并且部署更加复杂,但是好处就是,由于每一台机器上都是全量数据,因此即使某一台机器奔溃了,还有其他的机器顶住,不会出现直接服务不可用的情况。

当然,虽然可用性提高了,但是很明显,项目的复杂程度也大大提高。

因为每一台机器上都是全量数据,那么意味着,如果需要修改某一台机器上的代码或者数据,就需要同时修改其他各个节点上的代码和数据,因此耦合性极大,开发复杂度大大提高。并且这就导致,项目的开发变为了以技术为核心,而非业务为核心,要求在技术上实现各类集群。

所以改进方法你也知道了,也就是把每一个业务,都拆分为一个又一个的小服务,然后由这些服务互相配合工作组成一个完整的业务。

因此,服务化架构也就出现了。

它是将一个业务进行拆分,它将不同的业务以独立的进程进行运行部署,服务化架构强调的就是将业务进行垂直拆分后,形成的多个的模块独立部署,独立维护,同时逻辑上,虽然还是分层的结构,不过他从逻辑上单独剥离出来了一个服务层,而这个服务层会有专门的组来负责。

服务化架构是以业务为核心,那么技术如何进行选型,就不确定了。

早期使用的是ESB企业服务总线。

设想一下,早期是没有面向服务架构的规范的,那么意味着各种服务可能会有不同的开发方式,比如有些暴露的接口是RestFul的,有些是webserver的,由于格式不统一,那么项目就会更加复杂,而随着项目服务的增加,项目的复杂程度越来越大,我们所谓的shishan也就出现了。

所以IBM就提出了ESB企业服务总线,其中最核心的就是格式转化,他能帮助我们为不同的业务进行转化,从而避免了上面所述的问题。ESB就提供了一个中心化的注册中心,因此ESB是非常重量级的,他很重要,因为毕竟各类服务需要进行互相转化就需要依赖ESB,而ESB成本超级高,没有好用的开源,并且它属于重量级唱片,部署规划异常笨重。

因此,SOA的问题就在于各个子系统之间没有采用统一的通信标准,导致系统通信与数据交互间变得异常复杂。

所以,为了解决SOA的问题,就出现了微服务架构模式。

微服务架构

微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并且以轻量级机制(通常是HTTP REST API)通信。这些服务是围绕业务能力建立的,并且可以由完全自动化的部署机构独立部署。这些服务的集中管理只有最低限度,可以用不同的编程语言编写并使用不同的数据存储技术。

目前比较主流的微服务架构就是SpringCloud和SpringCloudAlibaba了

在上面我写出的项目就是使用SpringCloudAlibaba,有兴趣的可以联系我一起开发哦


相关文章
|
2月前
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
19天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
174 37
|
17天前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
42 18
|
13天前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
30 5
|
24天前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
54 10
|
9天前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
15天前
|
架构师 Java 程序员
Java架构师的工作年龄是什么?
Java架构师的工作年龄是什么?
20 0
|
2月前
|
消息中间件 Java 数据库
解密 Java 后台架构设计之道
解密 Java 后台架构设计之道
49 2
|
2月前
|
Java Docker 微服务
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
64 1
|
2月前
|
消息中间件 缓存 Java
如何优化大型Java后端系统的性能:从代码到架构
当面对大型Java后端系统时,性能优化不仅仅是简单地提高代码效率或硬件资源的投入,而是涉及到多层次的技术策略。本篇文章将从代码层面的优化到系统架构的调整,详细探讨如何通过多种方式来提升Java后端系统的性能。通过对常见问题的深入分析和实际案例的分享,我们将探索有效的性能优化策略,帮助开发者构建更高效、更可靠的后端系统。

热门文章

最新文章

下一篇
无影云桌面