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

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

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

服务化架构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

微服务架构

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

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

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


相关文章
|
6天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
31 6
|
6天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
18 1
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
5天前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
23 7
|
1天前
|
架构师 中间件 API
微服务和 SOA 的 6 大核心区别,你都知道吗?
本文详解SOA与微服务的六大区别,帮助更好地理解和应用这两种架构,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务和 SOA 的 6 大核心区别,你都知道吗?
|
9天前
|
微服务
微服务与SOA区别
微服务与SOA区别
11 0
微服务与SOA区别
|
18天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
50 10
|
1月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
50 8
|
1月前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。