当前位置:网站首页>面试官:SOA 和微服务的区别?这回终于搞清楚了!
面试官:SOA 和微服务的区别?这回终于搞清楚了!
2022-08-03 11:21:00 【androidstarjack】
点击关注公众号,架构好文及时送达
场景

一个电商系统,比如淘宝,我们在首页会展示很多数据信息,例如:首页信息、商品信息、个人信息、推送信息等等很多。如果首页展示的数据来自100个不同的应用/系统,那么通过如上架构,我们在后端便会出现几百个乃至上千个通信的交互,那么后端的结构就会变得非常的庞大和复杂。所以在这样的架构下,我们需要对上面结构作出一些调整 ,所以我们就引入了SOA架构。
图示区别

什么是SOA架构
SOA(全称:Service Oriented Architecture),中文意思为 “面向服务的架构”,你可以将它理解为一个架构模型或者一种设计方法,而并不是服务解决方案。其中包含多个服务, 服务之间通过相互依赖或者通过通信机制,来完成相互通信的,最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用 。
跟 SOA 相提并论的还有一个 ESB(企业服务总线),简单来说ESB就是一根管道,用来连接各个服务节点。为了集成不同系统,不同协议的服务,ESB 可以简单理解为:它做了消息的转化解释和路由工作,让不同的服务互联互通;
我们将各个应用之间彼此的通信全部去掉,在中间引入一个ESB企业总线,各个服务之间,只需要和ESB进行通信,这个时候,各个应用之间的交互就会变得更加的清晰,业务架构/逻辑等,也会变得很清楚。原本杂乱没有规划的系统,梳理成了一个有规划可治理的系统,在这个过程中,最大的变化,就是引入了ESB企业总线。
点击关注公众号,架构好文及时送达

SOA 所解决的核心问题
1.系统集成:站在系统的角度,解决企业系统间的通信问 题,把原先散乱、无规划的系统间的网状结构,梳理成规整、可治理的系统间星形结构,这一步往往需要引入 一些产品,比如 ESB、以及技术规范、服务管理规范;这一步解决的核心问题是【有序】
2.系统的服务化:站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,通过服务的编排实现业务的快速再生。目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用;这一步解决的核心问题是【复用】
3.业务的服务化:站在企业的角度,把企业职能抽象成可复用、可组装的服务;把原先职能化的企业架构转变为服务化的企业架构,进一步提升企业的对外服务能力;前面两步都是从技术层面来解决系统调用、系统功能复用的问题。第三步,则是以业务驱动把一个 业务单元封装成一项服务。这一步解决的核心问题是 【高效】
微服务架构
微服务的特征
SOA 和微服务架构的差别
1.微服务去中心化,去掉ESB企业总线。微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化
2.Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Node或者Spring Boot等技术跑在自己的进程中。
3.SOA注重的是系统集成方面,而微服务关注的是完全分离
作者:扛麻袋的少年
来源:blog.csdn.net/lzb348110175/article/details/96738781
今日好文推荐
GET 和 POST请求的本质区别是什么?看完觉得自己太无知了...
MyBatis批量插入数据你还在用foreach?你们的服务器没崩?
点个在看少个 bug
边栏推荐
猜你喜欢
随机推荐
This article takes you to understand the principle of CDN technology
MySQL数据库实战(1)
How to make self-introduction
【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
Win10/11 删除文件资源管理器左侧栏目文件夹
【一起学Rust】Rust的Hello Rust详细解析
基于PHP7.2+MySQL5.7的回收租凭系统
谷歌研究员被群嘲:研究员爆料AI有意识,被勒令休假
[LeetCode—Question 2 Sum of Two Numbers Detailed Code Explanation ] The source code is attached, which can be copied directly
使用.NET简单实现一个Redis的高性能克隆版(一)
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
The effects of the background and the Activiti
程序员架构修炼之道:软件架构基本概念和思维
【TypeScript】Why choose TypeScript?
机器比人更需要通证
ABAB-740新语法
嵌入式软件组件经典架构与存储器分类
[错题]电路维修
【一起学Rust】Rust包管理工具Cargo初步了解
【无标题】函数,对象,方法的区别