SOA架构是第一次被广泛使用过、通过分布式服务来构建信息系统的工程实践。它有完善的理论和工具,可以说,它解决了分布式系统中,几乎所有主要的技术问题

所以本节就系统的讨论一下SOA的设计思想与原则,找找他为什么没有成功的原因?

三种服务拆分架构模式

1.烟囱式架构

​ 前提:假设完全不会跟其他相关的信息系统之间进行协作

​ 互不交互的系统,各自使用独立的数据库、服务器,即可以完成拆分。

​ 问题就在于:不交互的系统(组织)真的存在吗?

2.微内核架构

​ 把一些公共的主数据:人员、组织 、权限等公用的服务、数据、资源,都集中到一块儿,成为被所有业务系统共同依赖的核心系统。

​ 这种模式很适合桌面应用程序的开发,如果想实现一个能够支持二次开发的软件系统,微内核架构也是一种良好的架构模式。

​ 问题在于:各业务系统不直接交互,(比如:支付系统和用户系统是独立的,但彼此会有业务的调用),这时需要找到一个办法,即能拆分出独立的系统,也能让拆分后的子系统之间可以顺畅的互相调用

3.事件驱动架构

为了能让子系统之间相互通讯,事件驱动架构就产生了

它是这样的一张种模式:在子系统之间建立一套事件队列管道,来自系统外部的消息将以事件的形式发送管道中,各子系统可以从管道中获取自己感兴趣、可以处理的事件消息,也可以为事件新增或修改其中的附加信息,甚至还可以自己发布一些新的事件到管道队列中去。

同时SOAP协议的诞生,事件驱动架构+SOAP协议==催生出=>面向服务架构

SOA架构时代的探索

探索1:更具体

SOA本身还是属于一种抽象概念,而不是特指某一种具体的技术,但它比单体架构和烟囱式架构、微内核架构、事件驱动架构,都要更具可操作性,细节也充实了很多。所以,我们已经不能简单地把SOA看作是一种架构风格了,而是可以称之为一套软件架构的基础平台。

探索2:更系统

SOA最根本的目标,就是希望能够总结出一套自上而下的软件研发方法论,让企业只需要跟着它的思路,就能够一揽子解决掉软件开发过程中的全套问题。比如,如何挖掘需求、如何将需求分解为业务能力、如何编排已有服务、如何开发测试部署新的功能,等等

过于严格的规范定义,给架构带来了过度的复杂性,这也是Web Service衰落最本质的原因。

思考题:

你是否使用过SOA的方法论来开发软件系统呢?无论有还是没有,作为一个软件开发者,你是否愿意软件开发向着工业化方向发展,让软件类似工业产品制造那样,可以在规范、理论、工具、技术的支持下,以流水线的方式生产出来?

思考:还真的是使用过某国产的ESB开发一个项目,但是受限于项目的规模只是做了课题性质的研究。虽然配套设施都很齐全,但是用起却不并不那么的流畅,再加上当时思路受制于服务编排的困扰。好不容易把思路给理顺了,同时又被微服务给冲击了。如果软件开发朝着工业化的方向发展,听起来像是很美妙的事情,那样的话,软件的质量应该会有很大的提高。但是自己会不会被淘汰,软件的定制化(灵活性)怎么体现,软件开发的工作会不会朝着工具化的思路去发展,到处去写补丁。还有一个问题,工业化产出的东西都是一样的,就算再扩展一点可以满足可以提供各种参数来配置。那这个基础工具该有多复杂呀。

周志明架构课--03.SOA时代:成功理论与失败实践相关推荐

  1. 周志明架构课--01.原始分布式时代

    UNIX设计哲学: 保持接口与实现的简单性,比系统的任何其他属性,包括准确性.一致性和完整性都来得更加重要. 在这个阶段提出的分布式架构的目标:使用多个独立的分布式服务来共同构建出一个更大型的系统.而 ...

  2. 周志明论架构之道:从SOA时代到微服务时代

    SOA 架构(Service-Oriented Architecture) 面向服务的架构是一次具体地.系统性地成功解决分布式服务主要问题的架构模式. 为了对大型的单体系统进行拆分,让每一个子系统都能 ...

  3. 豆瓣9.8分,周志明的《凤凰架构》,高屋建瓴,推荐(送书)

    导读:周志明老师的<深入理解Java虚拟机>想必大家都不陌生,这本书凭借着生动易懂的文风.系统实用的知识点.成为原创计算机图书经典中的经典.周老师凭借一己之力拉高了 Java 开发者内功水 ...

  4. 【第64期】豆瓣9.8分,周志明的《凤凰架构》

    导读:周志明老师的<深入理解Java虚拟机>想必大家都不陌生,这本书凭借着生动易懂的文风.系统实用的知识点.成为原创计算机图书经典中的经典.周老师凭借一己之力拉高了 Java 开发者内功水 ...

  5. 《周志明的软件架构课》学习笔记 Day11

    1.主动学习 TCC事务 TCC(Try-Confirm-Cancel) TCC 方案,它天生适合用于需要强隔离性的分布式事务中,它是一种业务侵入性较强的事务方案,要求业务处理过程必须拆分为" ...

  6. 《周志明的软件架构课》学习笔记 Day1

    1.主动学习 每个开发者都需要学习「如何构建一个可靠的分布式系统」 工作这么多年,发现架构设计,还是需要从业务中来迭代,「作为一名架构师,在软件研发的过程中,最难的事儿,其实并不是如何解决具体某个缺陷 ...

  7. 周志明:《凤凰架构:构建可靠的大型分布式系统》

    架构模式的每一次演进都是凤凰涅槃 系统架构的每一次迭代都是浴火重生 构成系统的每一个部件都是一只不死鸟 构成大规模系统的每一个部件都可以是不可靠的,会出错,会老朽,甚至是消亡,如何让不可靠部件构成的系 ...

  8. 【读书笔记《凤凰架构》- 构架可靠的大型分布式系统.周志明】(一)

    1. 前言 整部书分为5部分,除了第一章讲分布式架构的历史,其他四章都偏技术. 书本的作者提也到,再看书前最好先理解本书的排版的逻辑(尽管每一章都被设计为可以单独阅读) 但除第1部分, 剩下的4个部分 ...

  9. 《周志明的软件架构课》学习笔记 Day5

    1.主动学习 远程服务调用(Remote Procedure Call,RPC) RPC 是我们构建分布式系统的最基本前置条件. 这篇文章我们来了解周志明老师笔下的 RPC. RPC 出现的最初目的, ...

最新文章

  1. java arraylist 源代码_Java中ArrayList源码浅析
  2. jsp的<a>标签中怎么传递参数
  3. java 调用.net webservice axis2_java利用axis2调用.net写的webservice,传递自定义的实体类参数...
  4. PyTorch教程(九):损失函数与Loss的梯度
  5. 五笔常用字、难拆字 拆解图文版
  6. Springboot集成ES启动报错
  7. C++的new和delete
  8. AppList.json文件为空,主界面清缓存后加载后还正常显示
  9. C# EPPlus导出EXCEL,并生成Chart表
  10. python在linux编程_python要在linux下编程吗
  11. Java8 lambda 的使用
  12. 爬取豆瓣电影top250
  13. iOS申请邓白氏总结
  14. Exercise_1
  15. 电脑视频加水印软件哪个好?这些软件值得收藏
  16. PS纳米纤维膜 聚苯乙烯 纤维直径500-2000nm
  17. md500代码,异步电机,基于28379D,带无速度传感器控制,参数辨识,同步调制等功能
  18. 小智直播配置安装-配置录播,回放
  19. C++--名字空间的定义
  20. python package什么意思_Python模块、包(Package)概念与用法分析

热门文章

  1. golang fmt包中的占位符
  2. python3 setup.py install_安装Twisted执行python3 setup.py install报错
  3. HTML+CSS+JS的基础知识笔记
  4. 关于死亡最温暖的解答
  5. 七月的风,八月的雨,卑微的我喜欢遥远的你。
  6. 计算机应用基础006在线作业2,东师《计算机应用基础》20春在线作业2答案00648
  7. 北邮研究生《计算机网络原理》课程期末通过经验
  8. 堆——神奇的优先队列 大根堆小根堆详解,附小根堆C++代码实现与STL相关
  9. 手机上怎么打开md格式的文件_一键就能将PDF转换为各种格式文件,无奈知道的人实在太少了...
  10. python实现Excel多行多列的转换