微服务架构与SOA的比较

SOA (Service-Oriented Architecture )即面向服务架构,是一种粗粒度、松藕合的面向服务架构设计方法。 SOA 可以看作 BIS 模型、 XML/Web Service 技术之后的自然延伸。

SOA 是一种企业级的架构设计方法,使用企业服务总线 (ESB )的方式,构建一个能够更高效、更可靠、更具重用性的企业信息系统。相比于 C/S BIS 等模式的设计,使用 SOA 架构的系统已经取得了很大的进步,系统可以更加从容地面对业务的急剧变化,所以 SOA 曾经风靡一时,例如 Dubbo Dubbox Mule WS02 CXF 等都是较为优秀的 SOA 开源工具。

微服务架构与 SOA 从表面上看是有一点相似的,以至于早期有人认为微服务就是一个细粒度的 SOA。实际上,它们的区别还是很大的。

区别之一:微服务通信的轻量级设计与 SOA 重量级设计。这也是两种架构的最大区别。微服务的通信设计使用简单的 HT霄,一般基于 REST 协议实现。而 SOA 一般使用复杂的协议,如WebService BPEL (Business Process Execution Language ,业务流程执行语言〉等,还需要使用服务描述性语言来定义标准接口。

区别之二:微服务的自治性与 SOA 的集中式管理。微服务架构使用去中心化的扁平化管理方式,每个服务都是一个独立的应用程序 独立管理、使用独立的数据库、独立部署和独立运行。 SOA 是一种整体式架构,使用集中式的管理方式和统一的数据中心。所以微服务的开发和部署更加灵活和快速,可以更快地响应需求的变化和业务的更新。

区别之三: SOA 与微服务架构的应用的规模不同, SOA 是在企业计算领域中产生的一种架构设计方法,在应用规模上的范围有限。而微服务架构是产生于互联网环境中的一种设计方法,它更能适应无限广阔的环境,以及互联网高流量、高并发的规模扩展。

微服务架构的高可用设计、自由伸缩、负载均衡、故障转移等特性是 SOA 设计不够重视的地方。微服务的高可用设计通过微服务治理,为每个微服务的管理和部署提供了一个可以扩展的无限广阔的空间,它可以表现为一个三维结构,如图 1-3 所示。

在这个三维结构中,如果我们用Y 轴表示微服务应用,用X 轴表示微服务应用副本,用Z轴表示微服务治理,那么它将提供服务路由和负载均衡管理等功能。如果有需要,它还可以提供分区管理的功能。这种三维结构让微服务天生就具备了自由伸缩的条件,以及可以进行无限扩展的能力。

微服务架构的优势

从前面的比较可以看出,整体式架构已经不适合于一个大型项目或者一个互联网应用平台的开发了,而 SOA 架构虽然曾经风靡一时,但是其重量级的设计成为快速开发的障碍,所以这两种架构都将被微服务架构取代。微服务架构轻量级的设计风格,不管是从理论上,还是从技术实现上,已经越来越多地得到人们的肯定和认可,大家对它的未来发展趋势都抱有一种乐观的态度。微服务的优势如下

第一,开发简单。

微服务架构把复杂系统进行拆分之后,让每个微服务应用的开发都变得非常简单。对于开发者来说,因为不用针对很多代码进行分析,所以效率会成倍地提高。

第二,快速响应需求变化。

一般的需求变化都来自局部功能的变更,这种变更将落实到每个微服务上,而每个微服务的功能相对来说都非常简单,更改起来非常容易,所以微服务非常适合使用敏捷开发方法,能快速响应业务需求的变化。

第三,随时随地更新。

一方面,一个微服务的部署和更新并不会影响全局系统的正常运行,另一方面 使用多实例的部署方式可以做到一个服务的重启和更新在不被察觉的情况下进行。所以,每个微服务在任何时候都可以进行部署和更新

第四,系统更加稳定可靠。

微服务运行在一个高可用的分布式环境之中,有配套的监控和调度管理机制,并且还可以提供自由伸缩的管理,充分保障了系统的稳定性和可靠性。

第五,规模可持续扩展。

每个互联网应用都具有巨大的市场潜力,一旦这种潜力被激发,就需要系统能支持大规模的高并发访问。使用微服务架构设计的系统,可以适应业务的快速增长,并且可持续支持规模化的扩展。

为实施微服务架构做好准备

微服务架构 不是 种新技术,它只是一种全新的设计理念,所以,为了能够更好地实施微服务架构设计,我们必须做好前期准备,从思想观念、团队管理和自动化基础设施上进行相应的变革。

思想观念

在进入微服务领域之前,必须从做项目的观念转变成做产品的观念。如果是一个软件项目,在完成了业务需求的设计之后,最终交付使用,其项目开发的生命周期就宣告结束。而做产品则完全不一样,只要产品成型上线,产品有存在的价值,开发就永远没有终结。随着产品的更新换代,其中的应用程序和组件也要跟 不断地进行更新和迭代。

微服务架构的渐进式设计的特 ,就是一种做产品的观念的 实体现。一方面,一个产品的最初成型设计,由于种种原因并不可能把所有功能都考虑得很周到,这需要一定的时间进行慢慢的磨合与创新。另一方面,市场总是处于变化之中,所以产品的业务功能也会随着时间的推移而发生 定的变化。

做产品的观念将贯穿于一个系统平台的整个生命周期之中,并随着平台的发展和演化,最终将产品打造成一个充满活力的生态体系。

团队管理

传统的团队管理,是按技术进行分组的。在一个开发团队中,可能有 设计组、前端开发组、后端开发组、测试组和运维组等。

在微服务架构实施中,开发时是按业务功能进行划分的,所以对团队的管理,最好也以业务进行分组,将产品设计、前端开发、后端开发、测试和运维等人员围绕业务功能分配在同组中,这样不但可以增强团队的凝聚力,还可以避免将大量的时间浪费在不同组别的沟通和工作协调上。

在实际操作中,因为前端开发和运维管理的消耗不是很大,所以对这两部分人员可以进行机动的调整。但这种调整最好是在业务相近的领域中进行的,并保持一定的连贯性,即原来由谁负责的工作,在更新和维护时还是由他来负责。

为了减少资源的浪费和增加每个人员的工作饱和度,一个业务小组往往并不只负责一个微服务,有可能负责两三个微服务的开发,这主要由微服务划分的粗细粒度来定。

自动化基础设施

从整体式架构向微服务架构转变之后,项目数量会增加,迭代的周期会变短,对测试和运维人员也会提出更高的要求,并且其工作量会越来越大,所以单纯依靠人力来完成这两部分的工作是远远不够的,这就要求必须有自动化基础设施的支持,来完成自动集成、自动测试,以及持续交付、持续部署的工作。

一个原来由几个项目支撑起来的应用平台,在使用微服务架构进行拆分之后,可能会变成几十个项目,甚至上百个项目。如果还像原来那样分配测试和运维工作,则势必要增加更多的人员。

在服务器资源的使用上,也会相应的有所增加。因为每个微服务应用所占用的资源并不是很大,所以可以在原来的服务器中使用虚拟机技术扩展服务器群组。对于微服务的部署,我们将主要以 Docker 容器为主导,使用虚拟化技术实施自动化建设,这样可以非常自由地将微服务分散部署在分布式环境之中。而对于中小型企业来说,更好的实施方案是使用云计算服务商提供的资源,这样能更有效地利用服务器的资源。

本文给大家讲解的内容是微服务架构与SpringCloud:微服务架构与SOA 的比较、微服务架构的优势、为实施微服务架构做好准备

  1. 下篇文章给大家讲解的是Spring Cloud 的优势、Spring Cloud 工具套件介绍、Spring Cloud 的版本说明;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

微服务架构与SOA的比较、优势、为实施微服务架构做好准备相关推荐

  1. 为什么要实施微服务架构?

    欢迎关注公众号:java4all ‌微服务架构,是系统架构的一种设计风格,与之相对的是,传统企业系统架构中的单体架构,本文谈谈为什么我们要实施微服务结构. 1.架构演进 这里借助dubbo官网的一张图 ...

  2. 华为实施微服务架构的五大军规

    前言 随着业务的发展,代码量的膨胀和团队成员的增加,传统单体式架构的弊端越来越凸显,严重制约了业务的快速创新和敏捷交付.为了解决传统单体架构面临的挑战,先后演进出了SOA服务化架构.RPC框架.分布式 ...

  3. 华为内部实施微服务架构

    随着业务的发展,代码量的膨胀和团队成员的增加,传统单体式架构的弊端越来越凸显,严重制约了业务的快速创新和敏捷交付.为了解决传统单体架构面临的挑战,先后演进出了SOA服务化架构.RPC框架.分布式服务框 ...

  4. 什么是微服务,是否要实施微服务?

    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注! 作者| 慕课网精英讲师陈于吉吉 随着这几年微服务的火爆,在平时的工作或者技术交流中,我们总能听到哪家公司把自己的项目用微服务重 ...

  5. 实施微服务架构模式所面临的挑战

    实施微服务架构模式所面临的挑战 微服务架构.Docker容器.可编程基础架构.服务器租用cn.bluehost.com云计算和现代持续交付(CD)技术的新兴组合,使得通过软件开发实现业务价值的真正模式 ...

  6. 实施微服务应该具备哪些先决条件?

    作者|Phil Calçado 编辑|薛命灯 2017 年 5 月,Phil Calçado 在布达佩斯 Craft 大会上呈现了有关微服务经济的演讲.他在演讲中简要讨论了一系列实施微服务的先决条件, ...

  7. 微服务框架实施_规划和实施微服务的原则

    微服务框架实施 Planning a microservices-based application - where to start from? This architecture is compo ...

  8. 微信如何实施微服务?

    作者:许家涛,2005 年加入腾讯,见证 QQ 邮箱从百万到数亿用户的整个敏捷开发过程以及架构变迁.2011 年起负责微信后台基础架构,包括分布式存储平台和后台服务框架等,覆盖微信账号 / 消息 / ...

  9. 为什么选择微服务架构? 微服务架构的10个核心优势 总结

    为什么选择微服务架构? 微服务架构的10个核心优势 总结 文章目录 为什么选择微服务架构? 微服务架构的10个核心优势 总结 1. 什么是微服务? 2. 微服务架构有哪些特征? 1)通过服务实现组件化 ...

最新文章

  1. 一个三非渣本的Java校招秋招之路,搞懂这些直接来阿里入职
  2. c 链表之 快慢指针 查找循环节点(转)
  3. go read text file into string array
  4. VC++设计简易计算器笔记(一)
  5. string 常用函数
  6. Javascript、jQuery 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)(转)...
  7. 【优化算法】搜索引擎优化算法(BES)【含Matlab源码 1426期】
  8. python贪心算法几个经典例子_贪心算法经典例子
  9. 数字电路逻辑设计笔记(1):基础知识
  10. CHERRY樱桃机械键盘按键
  11. 百度网络质量监控实战:猎鹰一战成名(下)
  12. Storyboard故事板
  13. linux不能删除文件命令,无法删除文件的解决办法(rm命令的使用)
  14. linux点亮硬盘locat,Linux中常用的查询指令(which、whereis、find、locatae)
  15. python下载酷狗音乐上的歌曲
  16. word文档添加批注
  17. Loadrunner11安装及globa-10000配置
  18. ~1 ccf 2022-06-2 寻宝!大冒险!
  19. Win10新加内存条后可用内存没增加解决方案
  20. 计算机应用基础终极性,计算机应用基础z终结性考核(8页)-原创力文档

热门文章

  1. 公用一个由器被别人用psp终结者限速了怎么
  2. element UI 出现错误提示:[Element Migrating][ElDialog][Attribute]: size is removed.
  3. 2021高考成绩什么时候可以查询日照,成绩提前公布!2021省考成绩查询时间出了!最早4月15日!...
  4. B - Flipping Game
  5. 对象深浅拷贝的四种方法
  6. 店商+电商 BC一体化赋能传统品牌商数字化转型升级
  7. 【实用工具】文件扫描
  8. 谁在抢占「低代码」高地?
  9. 无线网络技术测试试题(二)
  10. 如何写好宣传软文?软文推广对企业有什么帮助?