Java程序员必经的实践之路:微服务与SOA架构
而另一方面,微服务推崇执行的标准(例如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架构相关推荐
- Java程序员必经的实践之路:docker离线导入镜像
1.1. 操作系统简介 我通过以下四点介绍什么是操作系统: 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石. 操作系统本质上是一个运行在计算机 ...
- Java程序员必经的实践之路:Java中高级核心知识全面解析(11)
ThreadPoolTaskExecutor定义一些策略: ThreadPoolExecutor.AbortPolicy:抛出RejectedExecutionException来拒绝新任务的处理. ...
- Java程序员必经的实践之路:java控制台在哪里打开
前言 作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的.对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来.实际 ...
- Java程序员进阶必读,最全微服务架构技术点详解来啦
前言 微服务作为这个互联网时代最火的技术之一,想必大家即使没有学习过也有所了解,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服 ...
- java程序员的大数据之路(13):Pig入门
Pig简介 Pig为大型数据集的处理提供了更高层次的抽象. Pig包括两部分: 用于描述数据流的语言,称为Pig Latin. 用于运行Pig Latin程序的执行环境.当前有两个环境:单JVM中的本 ...
- java程序员的大数据之路(3):用maven构建Hadoop项目
背景 由于Hadoop项目多数是比较大的项目,因此我们选择使用构建工具来构建Hadoop项目,这里我们使用的是maven.当然也可以使用Gradle等比较流行的构建工具 构建过程 这里总结一下我使用I ...
- 好程序员云计算培训分享云计算中微服务是什么?
好程序员云计算培训分享云计算中微服务是什么?微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务和服务之 ...
- Java程序员的互联网转型之路
08年毕业跑到上海,在经济危机最热闹的一年找到份勉强活下去的java研发工作,从此开始了漫长的通信行业软件开发.几年间身边的同事跳槽到互联网行业,也有新鲜血液补充进来,总体来说人员质量是在不断下降的. ...
- 身为java程序员你需要知道的网站(包含书籍,面试题,架构...)
推荐几本书<高级java程序员值得拥有的10本书>, 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 -首页所有文章资讯Web架构基础技术书籍 ...
最新文章
- 用类模拟C风格的赋值+返回值
- 洛谷P2057 【SHOI2007】善意的投票
- android pc模式 刘祚虎,刘作虎:一加三段式按键安卓手机唯一 5年付出亿级成本...
- ai/ml_您本周应阅读的有趣的AI / ML文章(8月15日)
- python socketio_flask-socketio实现WebSocket的方法
- ROADS POJ - 1724(最短路+邻接表+dfs)
- 用姓名字段统计人数_基于 Wide amp; Deep 网络和 TextCNN 的敏感字段识别
- 区块链100讲:区块链的TPS性能
- 力扣20-有效的括号(C++,附思路)
- 炮灰模型:对女生选择追求者的数学模型的建立-转
- 四轴飞行器——转动惯量
- 郑州调频广播频率表 转载
- 总结:KPCB中国合伙人周炜
- python长度单位转化_所有长度单位的换算
- 计算机平均成绩等级公式,全国高校计算机等级考4.doc
- 5分钟了解什么是OpenXR
- 等额本息和等额本金还款在R中的实现
- 苹果零日漏洞利用市售800万欧元
- 4维俄罗斯方块 java_HTML5边玩边学(九)-俄罗斯方块之数据模型篇
- 计算机学报在线阅读,含指针程序的单子切片方法-计算机学报.pdf