而另一方面,微服务推崇执行的标准(例如HTTP)却是人们广泛了解并共同使用的。我们可以通过选择合适的语言或工具来构建某个组件微服务。SOA与微服务还有一个更大的区别:领域模型。在基于微服务的软件中,每个微服务应该在本地存储自身管理的数据,并在领域模型分别隔离到单个服务中。而在面向SOA的软件中,数据往往存储在单个大型的数据库中,服务之间会共享领域模型。

二、面向服务的架构SOA

面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。通信可以是简单的数据传递,也可以是两个或者多个服务彼此协调连接。这些独特的服务之星一些小功能,例如验证付款、创建用户账户或者提供社交登录等。

面向服务的架构不太关心如何应用程序进行模块化构建,更多的是关于如何通过分布式、单独维护和部署的软件组件的集成来组成应用程序。这些通过技术和标准来实现,通过技术和标准使得组件能够更容易地通过网络进行通信和协作。

SOA架构中有两个主要角色:服务提供者(Provider)和服务使用者(Consumer)。而软件代理则可以扮演这两个角色。 该consumer层是用户与SOA交互的点,和provider层则由SOA架构内的所有服务所组成。

SOA首先在90年代中期得名, 当时一家名为Gartner Group的公司认识到了这个软件架构的新趋势,并在全球推广。 通过这样做,他们设法大大加快了这种架构模式的采用和进一步发展。然而,使用分布式服务作为软件体系结构的最早记录可追溯到二十世纪80年代初。

三、微服务架构

微服务架构在某种程度上是面向服务的架构SOA继续发展的产物。基本上,这种架构类型时开发软件,网络和移动应用程序作为独立服务套件(又称微服务)的一种特殊方式。这些服务的创建仅限于一个特定的业务功能,如用户管理、用户角色、电子商务、搜索引擎、社交媒体登录等。此外,他们是完全独立的,也就是说它们可以写入不同的编程语言并使用不同的数据库。集中式服务管理几乎不存在,微服务使用轻量级HTTP、REST或 Thrift API进行通信。乍一看, 微服务架构似乎谈论的是与SOA相同的事情。不过,如果引用微软服务领域的先驱Martin Flower的话,他曾经说过,“我们应该把SOA看作微服务的超集”。

四、SOA VS MicroServices

SOA 微服务架构
应用程序服务的可重用性的最大化 专注于解耦
系统性的改变需要修改整体 系统性的改变是创建一个新的服务
DevOps和持续交付正在变得流行,但还不是主流 强烈关注DevOps和持续交付
专注于业务功能重用 更重视“上下文边界”的概念
通信使用企业服务总线ESB 对于通信而言,使用较少精细和简单的消息系统
支持多种消息协议 使用轻量级协议,例如HTTP,REST或Thrift API
对部署到它的所有服务使用通用平台 应用程序服务器不是真的被使用,通常使用云平台
容器(如Docker)的使用不太受欢迎 容器在微服务方面效果很好
SOA服务共享数据存储 每个微服务可以有一个独立的数据存储
共同的治理和标准 轻松的治理,更加关注团队协作和选择自由

下面进一步解释上面所述的不同之处:

1、开发方面

在这两种体系结构中,可以使用不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。开发可以在多个团队中组织,但是在SOA中,每个团队都需要了解常见的通信机制。另一方面,使用微服务,服务可以独立于其他服务运行和部署。因此,频繁部署新版本的微服务或独立扩展服务会更容易。

2、上下文边界

SOA鼓励组件的共享,而微服务尝试通过上下文边界来最小化共享。上下文边界是指以最小的依赖关系将组件及其数据解耦为单个单元。由于SOA依靠多个服务来完成业务请求,构建在SOA上的系统可能比微服务更慢。

3、通信

在SOA中,ESB可能成为影响整个系统的单一故障点。由于每个服务都通过ESB进行通信,如果其中一个服务变慢,可能会阻塞ESB并请求该服务。另一方面,微服务在容错方面要好得多。例如,如果一个微服务存在内存错误,那么只有该服务会受到影响,其它的为夫将继续顶起处理请求。

4、互操作性

SOA通过消息中间件组件促进了多种异构协议的使用。微服务试图通过减少集成选择的数量来简化架构模式。因此,如果您想要在异构环境中使用不同协议来集成多个系统,需需要考虑SOA。如果您的所有服务都可以通过相同的远程访问协议访问,那么微服务对您来说是一个更好地选择。

5、大小size

Kafka进阶篇知识点

Kafka高级篇知识点

44个Kafka知识点(基础+进阶+高级)解析如下

7XIZV-1628136102707)]

44个Kafka知识点(基础+进阶+高级)解析如下

[外链图片转存中…(img-yEsL2UWT-1628136102709)]

由于篇幅有限,小编已将上面介绍的**《Kafka源码解析与实战》、Kafka面试专题解析、复习学习必备44个Kafka知识点(基础+进阶+高级)都整理成册,全部都是PDF文档**,有需求的朋友可以戳这里免费下载

Java程序员必经的实践之路:微服务与SOA架构相关推荐

  1. Java程序员必经的实践之路:docker离线导入镜像

    1.1. 操作系统简介 我通过以下四点介绍什么是操作系统: 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石. 操作系统本质上是一个运行在计算机 ...

  2. Java程序员必经的实践之路:Java中高级核心知识全面解析(11)

    ThreadPoolTaskExecutor定义一些策略: ThreadPoolExecutor.AbortPolicy:抛出RejectedExecutionException来拒绝新任务的处理. ...

  3. Java程序员必经的实践之路:java控制台在哪里打开

    前言 作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的.对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来.实际 ...

  4. Java程序员进阶必读,最全微服务架构技术点详解来啦

    前言 微服务作为这个互联网时代最火的技术之一,想必大家即使没有学习过也有所了解,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服 ...

  5. java程序员的大数据之路(13):Pig入门

    Pig简介 Pig为大型数据集的处理提供了更高层次的抽象. Pig包括两部分: 用于描述数据流的语言,称为Pig Latin. 用于运行Pig Latin程序的执行环境.当前有两个环境:单JVM中的本 ...

  6. java程序员的大数据之路(3):用maven构建Hadoop项目

    背景 由于Hadoop项目多数是比较大的项目,因此我们选择使用构建工具来构建Hadoop项目,这里我们使用的是maven.当然也可以使用Gradle等比较流行的构建工具 构建过程 这里总结一下我使用I ...

  7. 好程序员云计算培训分享云计算中微服务是什么?

    好程序员云计算培训分享云计算中微服务是什么?微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务和服务之 ...

  8. Java程序员的互联网转型之路

    08年毕业跑到上海,在经济危机最热闹的一年找到份勉强活下去的java研发工作,从此开始了漫长的通信行业软件开发.几年间身边的同事跳槽到互联网行业,也有新鲜血液补充进来,总体来说人员质量是在不断下降的. ...

  9. 身为java程序员你需要知道的网站(包含书籍,面试题,架构...)

    推荐几本书<高级java程序员值得拥有的10本书>, 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 -首页所有文章资讯Web架构基础技术书籍 ...

最新文章

  1. 用类模拟C风格的赋值+返回值
  2. 洛谷P2057 【SHOI2007】善意的投票
  3. android pc模式 刘祚虎,刘作虎:一加三段式按键安卓手机唯一 5年付出亿级成本...
  4. ai/ml_您本周应阅读的有趣的AI / ML文章(8月15日)
  5. python socketio_flask-socketio实现WebSocket的方法
  6. ROADS POJ - 1724(最短路+邻接表+dfs)
  7. 用姓名字段统计人数_基于 Wide amp; Deep 网络和 TextCNN 的敏感字段识别
  8. 区块链100讲:区块链的TPS性能
  9. 力扣20-有效的括号(C++,附思路)
  10. 炮灰模型:对女生选择追求者的数学模型的建立-转
  11. 四轴飞行器——转动惯量
  12. 郑州调频广播频率表 转载
  13. 总结:KPCB中国合伙人周炜
  14. python长度单位转化_所有长度单位的换算
  15. 计算机平均成绩等级公式,全国高校计算机等级考4.doc
  16. 5分钟了解什么是OpenXR
  17. 等额本息和等额本金还款在R中的实现
  18. 苹果零日漏洞利用市售800万欧元
  19. 4维俄罗斯方块 java_HTML5边玩边学(九)-俄罗斯方块之数据模型篇
  20. 计算机学报在线阅读,含指针程序的单子切片方法-计算机学报.pdf

热门文章

  1. 前端 如何将页脚固定在页面底部
  2. 何时运行 A/B 测试,亚马逊、微软、谷歌等大厂是怎么做的?
  3. 编程人的「对象」长啥样?
  4. 360数科张家兴:金融科技的本质是线上化和自动化
  5. 开发者注意!盘一盘 iOS 14 中 Swift 和 SwiftUI 的使用情况
  6. 假如有一门叫做 Ctrump 的编程语言...
  7. 中国开源激荡 20 年:IT 江湖,谁主沉浮?
  8. 苹果阻止上架的这款软件,到底有多可恶?
  9. 畅销款黑莓应用是怎样构建的?
  10. 国际认可不断增加,国产数据库发展与应用前景如何?