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

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

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

服务化架构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

微服务架构

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

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

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


相关文章
|
7月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
757 8
|
7月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
9月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
1786 0
|
9月前
|
机器学习/深度学习 人工智能 Java
Java 技术支撑下 AI 与 ML 技术融合的架构设计与落地案例分析
摘要: Java与AI/ML技术的融合为智能化应用提供了强大支持。通过选用Deeplearning4j、DJL等框架解决技术适配问题,并结合Spring生态和JVM优化提升性能。在金融风控、智能制造、医疗影像等领域实现了显著效果,如审批效率提升3倍、设备停机减少41%、医疗诊断延迟降低80%。这种技术融合推动了多行业的智能化升级,展现了广阔的应用前景。
667 0
|
9月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
448 7
|
10月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1345 0
|
10月前
|
缓存 Java 数据库
Java 项目分层架构实操指南及长尾关键词优化方案
本指南详解基于Spring Boot与Spring Cloud的Java微服务分层架构,以用户管理系统为例,涵盖技术选型、核心代码实现、服务治理及部署实践,助力掌握现代化Java企业级开发方案。
436 2
|
11月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
312 5
|
7月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
397 1