您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

SOA 和微服务有何区别?

时间:2023-01-10 14:05:47  来源:今日头条  作者:Java技术栈

玩过 Dubbo 的小伙伴应该都有听说过一个概念叫做 SOA,每当我们说起微服务的时候,很多人就会去纠结这和 SOA 有啥关系呀?感觉换汤不换药呀。

今天松哥来稍微和小伙伴们讨论下这个话题,我们一起来看看 SOA 和微服务到底有何异同。

1. SOA

SOA,英文全称是 Service-Oriented Architecture (SOA) governance,单纯从字面来看,是面向服务的架构治理。但是小伙伴们在网上应该很难看到比较权威的关于 SOA 通俗易懂的解释。我这里还是以 TienChin 项目为例,来和大家捋一捋 SOA。

假设 TienChin 中有一个用户注册的功能,现在前端的注册有三个端:

 

  1. 网页
  2. 手机 App
  3. 小程序

 


 

如果采用传统的 JAVAWeb 开发方式,那么我可能得写三遍注册功能,为三个 Client 各自提供一个接口,然而小伙伴们稍微思考一下就会发现,注册逻辑其实都差不多,区别可能仅仅是接口返回的数据格式有差异而已。因此,我们可以将注册功能抽取出来,写成一个单独的服务,然后通过远程服务调用如 HTTP 或者 socket 等,去调用这个注册的功能模块。这就是一个简单的 SOA 架构设计

然而看了这个很多小伙伴都懵了,这不就是微服务吗?

接下来我们就来说说 SOA 和微服务到底哪里不一样。

2. SOA PK 微服务2.1 服务间通信

首先第一点,就是服务之间的通信方式不同。

玩过 Dubbo 的小伙伴都知道,Dubbo 中常用的通信协议就是 Dubbo 协议,Dubbo 协议本质上其实就是 socket 通信。在 SOA 中,服务之间的通信往往都是采用的重量级协议如 SOAP 等。

而我们常用的微服务框架 Spring Cloud,小伙伴们知道,这里的通信基本上都是 REST 这种轻量级协议,有时候我们甚至是基于消息来驱动微服务,无论哪一种,微服务中服务之间的通信协议都更加轻量级。

2.2 数据库设计

在 SOA 中,一般来说不太会进行分库设计,也就是说整个系统还是使用的一个库,系统可能会分为不同的服务,但是不同的服务操作的都是同一个库。

微服务则不同,昨天的文章中,松哥画的下面这张图,基本上是每一个服务都有一个自己的库,每个服务都是操作自己的库,合同管理中需要调用用户管理的数据,不能直接调用库,得通过用户管理提供的 REST 接口去调用。


 

2.3 服务规模

第三点就是服务的规模不同了。

SOA 中的每一个服务,整体上来说还是一个比较大的单体项目,因为 SOA 一般不会分的很细。而微服务则不同,在微服务中,我们会将服务都划分的很细,每一个服务基本上都是只负责一个很小的功能模块。

以前我们玩 SOA 的时候,基本上都还是传统的 SSM 项目,小伙伴们知道,搭建一个 SSM 项目就已经很费事了,所以能少搭建就少搭建。但是后来有了 Spring Boot 就不一样了,利用 Spring Boot,我们可以非常方便快捷的创建一个项目,那么此时我们就有足够的条件把服务划分的比较细致了。

所以呢,整体上看,SOA 往往是几个比较大型的服务组合在一起,而微服务则往往是几十甚至上百个服务组成。

好啦,临近放假,今天就聊点简单的不烧脑的哈哈~



Tags:微服务   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
玩过 Dubbo 的小伙伴应该都有听说过一个概念叫做 SOA,每当我们说起微服务的时候,很多人就会去纠结这和 SOA 有啥关系呀?感觉换汤不换药呀。今天松哥来稍微和小伙伴们讨论下这个...【详细内容】
2023-01-10  Tags: 微服务  点击:(0)  评论:(0)  加入收藏
背景部门中维护了一个老系统,功能都耦合在一个单体应用中(300+接口),表也放在同一个库中(200+表),导致系统存在很多风险和缺陷。经常出现问题:如数据库的单点、性能问题,应用的扩...【详细内容】
2022-12-17  Tags: 微服务  点击:(13)  评论:(0)  加入收藏
背景单体应用在向微服务化架构演进时,需要考虑如何解决服务认证授权的问题。如果处理不好,会引发架构的混乱,带来安全、性能、难以维护的问题。 以最典型的包含WEB页面的具备登...【详细内容】
2022-12-03  Tags: 微服务  点击:(25)  评论:(0)  加入收藏
作者 | 褚杏娟近日,GitHub 前 CTO Jason Warner 在推特上表示,“我确信过去十年中,最大的架构错误之一就是全面使用微服务。”从单体应用到微服务的规划顺序,Warner 的建议是:单...【详细内容】
2022-11-18  Tags: 微服务  点击:(58)  评论:(0)  加入收藏
本地装聊mysql数据库,真吃内存啊,微服务一起来,idea 开发工具就疯狂吃内存,前端一启动,node.js 就狂吃,网页再吃点,16g内存一会儿就崩了,如果再玩一下微信开发工具,估计都一点跑不起...【详细内容】
2022-10-23  Tags: 微服务  点击:(41)  评论:(0)  加入收藏
数据一致性前面总结了微服务的9个痛点,有些痛点没有好的解决方案,而有些痛点是有对策的,从本章开始,就来讲解某些痛点对应的解决方案。这一章先解决数据一致性的问题,先来看一个...【详细内容】
2022-10-23  Tags: 微服务  点击:(44)  评论:(0)  加入收藏
导读:微服务遵循领域驱动设计(DDD),与开发平台无关。Python 微服务也不例外。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易。本文字数:12786,阅读时长大约: 15...【详细内容】
2022-10-20  Tags: 微服务  点击:(70)  评论:(0)  加入收藏
微服务的痛点在产品研发过程中,引入一种技术来解决一个业务问题并不难,难的是能否合理评估技术风险,这个观点对微服务同样适用。因此,本节将专门讨论微服务会带来哪些问题,这部分...【详细内容】
2022-10-17  Tags: 微服务  点击:(47)  评论:(0)  加入收藏
本期推荐的优质项目是基于 Java开发的微服务聚合网关,是拥有自主知识产权的应用网关国产化替代方案,能够实现热服务编排聚合、自动授权选择、线上服务脚本编码、在线测试、高...【详细内容】
2022-10-06  Tags: 微服务  点击:(112)  评论:(0)  加入收藏
" Type="normal"SectionTitle="他们中的许多人在微服务和 API 之间存在混淆。在本文中,您将对两者都有一个清晰的了解。" Type="normal"@@ 如果您正在阅读此博客,则意味着您已...【详细内容】
2022-09-24  Tags: 微服务  点击:(64)  评论:(0)  加入收藏
▌简易百科推荐
玩过 Dubbo 的小伙伴应该都有听说过一个概念叫做 SOA,每当我们说起微服务的时候,很多人就会去纠结这和 SOA 有啥关系呀?感觉换汤不换药呀。今天松哥来稍微和小伙伴们讨论下这个...【详细内容】
2023-01-10  Java技术栈  今日头条  Tags:微服务   点击:(0)  评论:(0)  加入收藏
环境:Springboot2.5.13概述jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步...【详细内容】
2023-01-09  Spring全家桶实战案例  今日头条  Tags:Springboot   点击:(0)  评论:(0)  加入收藏
更新和更专业的软件框架不断涌现。 虽然开发人员经常难以跟踪这么多不同的选项,但每个选项都针对特定的受众,并且需要非常具体的技能组合。 这就是为什么市场上充斥着如此多...【详细内容】
2023-01-09  启辰8  今日头条  Tags:框架   点击:(1)  评论:(0)  加入收藏
《开源精选》是我们分享Github、gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个入门简单、跨平台、企业级桌面软件开发框架。 ...【详细内容】
2023-01-09  GitHub精选    Tags:框架   点击:(5)  评论:(0)  加入收藏
环境:Springboot2.5.13概述Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步...【详细内容】
2023-01-09  Spring全家桶实战案例    Tags:Springboot   点击:(5)  评论:(0)  加入收藏
大家好,我是不才陈某~最近读者朋友针对Spring Security oauth2.0 想要陈某补充一些知识,如下: 今天这篇文章就来回答其中一个问题:如何自定义token的返回格式?问题描述Spring Se...【详细内容】
2023-01-07  Java架构嘻嘻嘻  今日头条  Tags:Spring   点击:(4)  评论:(0)  加入收藏
在一些场景下,您的kubernetes集群已经搭建完成了,但是还需要修改一些核心组件的参数,如etcd、kube-apiserver、kube-scheduler、kube-controller-manager等。通过kubectl get p...【详细内容】
2023-01-04  shoothzj  今日头条  Tags:kubernetes   点击:(14)  评论:(0)  加入收藏
Pod 资源配置 实际上上面几个步骤就是影响一个 Pod 生命周期的大的部分,但是还有一些细节也会在 Pod 的启动过程进行设置,比如在容器启动之前还会为当前的容器设置分配的 CPU...【详细内容】
2022-12-26  kamactor  今日头条  Tags:K8S   点击:(16)  评论:(0)  加入收藏
本篇文章我们首先解析 SqlSessionFactory 的创建过程。1、实例代码在实例代码中,我们在测试类中写了一个 init() 方法,里面包括了 SqlSessionFactory 的构建,分为两步。第一步:...【详细内容】
2022-12-26  二哥学Java  今日头条  Tags:Mybatis   点击:(23)  评论:(0)  加入收藏
大家好,很高兴又见面了,我是"web 前端分享",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!女士们先生们,Qwik 作为新的 JS 框...【详细内容】
2022-12-25  web 前端分享  今日头条  Tags:JS 框架   点击:(37)  评论:(0)  加入收藏
站内最新
站内热门
站内头条