SOA、ESB、NServiceBus、云计算 总结

SOA


SOA
是通过功能组件化、服务化,来实现系统集成、解决信息孤岛,这是其主要目标。而更进一步则是实现更快响应业务的变化、更快推出新的应用系统。与此同时,SOA
还实现了整合资源,资源复用。

SOA 服务的设计标准是粗粒度、高重用、灵活、标准。性能则并非首要考虑因素。

SOA 的两大功能是集成、服务编排(BPEL、BPM)。WF 在 SOA 架构中,扮演服务编排的功能。

参考架构:

相关资源:

SOA
设计十大原则

再谈SOA集成平台建设必要性

谈基于SOA的应用系统设计和开发

谈基于SOA的消费发布订阅

再谈服务设计

ESB


ESB 是 SOA 的重要实现手段。ESB 实现 SOA 时,它作为中心、媒介,集成的系统将只与它进行交互。而 ESB
实现与各种系统间的协议转换、数据转换、透明的动态路由功能(基于内容)。

在设计 ESB 时,集中的分发模块会影响性能、可伸缩性、容错能力,所以 ESB 要有良好的可伸缩性,支持集群。

IBM 总结了 ESB 的功能,较完整的功能如下:
































通信

服务交互


  • 路由

  • 寻址

  • 通信技术、协议和标准(例如 IBM? WebSphere? MQ、HTTP 和 HTTPS)

  • 发布/订阅

  • 响应/请求

  • Fire-and-Forget,事件

  • 同步和异步消息传递

  • 服务接口定义(例如,Web
    服务描述语言(Web Services Description Language,WSDL))

  • 支持替代服务实现

  • 通信和集成所需的服务消息传递模型(例如 SOAP
    或企业应用程序集成 (EAI) 中间件模型)

  • 服务目录和发现

集成

服务质量


  • 数据库

  • 服务聚合

  • 遗留系统和应用程序适配器

  • EAI
    中间件的连接性

  • 服务映射

  • 协议转换

  • 应用程序服务器环境(例如 J2EE
    和 .NET)

  • 服务调用的语言接口(例如 Java
    和 C/C++/C#)

  • 事务(原子事务、补偿、Web
    服务事务(WS-Transaction))

  • 各种确定的传递范例(例如 Web
    服务可靠消息传递(WS-ReliableMessaging)或对 EAI 中间件的支持)

安全性

服务级别


  • 身份验证

  • 授权

  • 不可抵赖性

  • 机密性

  • 安全标准(例如 Kerberos 和
    Web 服务安全性(WS-Security))

  • 性能

  • 吞吐量

  • 可用性

  • 其他可以构成契约或协定的持久评估方法

消息处理

管理和自治


  • 编码的逻辑

  • 基于内容的逻辑

  • 消息和数据转换

  • 有效性

  • 中介

  • 对象标识映射

  • 数据压缩

  • 服务预置和注册

  • 记录、测量和监控

  • 发现

  • 系统管理和管理工具的集成

  • 自监控和自管理

建模

基础架构智能


  • 对象建模

  • 通用业务对象建模

  • 数据格式库

  • B2B
    集成的公共与私有模型

  • 开发和部署工具

  • 业务规则

  • 策略驱动的行为,特别是对于服务级别、服务功能的安全和质量(例如
    Web 服务策略(WS-Policy))

  • 模式识别

而最低要求的 ESB 需要具有的功能:
















通信

集成


  • 提供位置透明性的路由和寻址服务

  • 控制服务寻址和命名的管理功能

  • 至少一种形式的消息传递范型(例如,请求/响应、发布/订阅等等)

  • 支持至少一种可以广泛使用的传输协议

  • 支持服务提供的多种集成方式,比如
    Java 2 连接器、Web 服务、异步通信、适配器等等

服务交互



  • 一个开放且与实现无关的服务消息传递与接口模型,它应该将应用程序代码从路由服务和传输协议中分离出来,并允许替代服务的实现。


相关资源:

面向服务架构(SOA)和企业服务总线(ESB)

C#ESB设计说明书

几种 ESB

ESB企业服务总线

ESB项目需求分析和方案设计浅谈

ESB同步,异步选择,从项目实际出发(电信)

NServiceBus


NServiceBus 是 .NET 平台上最受欢迎的一个开源 ESB 框架。有较完善的文档及示例代码。

目前,.NET 平台上开源的 ESB 框架,大多基于消息队列来实现。NServiceBus 同样也使用消息队列机制来实现消息的传递,例如可以使用
MSMQ。由于消息队列天生就是异步传输的,所以 NSB 也同样只支持异步消息,是一种‘发送即忘却’的模式。(As a general purpose
communications technology, WCF does not enforce the queued messaging paradigm.
NServiceBus does, and the architectural implications are profound.)。

NServiceBus 相对于 WCF 的优势在于:事件驱动的架构(发布、订阅)、更好地支持长时间运行的工作流。

缺点一:只支持异步的消息机制的问题是,无法进行传统的的数据查询。(To allow clients to perform queries, it is
best not to use NServiceBus. Messaging is designed for non-blocking operations,
and queries are (for the most part) operations for which the user wishes to
wait.)

如果一定要使用 NSB 来实现数据查询,那么只能通过 CQRS 来进行系统的设计:

缺点二:NSB 的服务可以轻易集成到 WCF 中使用 MSMQ 实现,但是反之则不行。也就是说,已经使用 WCF 开发的服务,是无法使用 NSB
来完成简单的迁移的。(原因也主要是因为 NSB 的异步机制。)

相关资源:

infoq 官方采访介绍:NServiceBus——让创建企业级.NET系统更加容易

NServiceBus---最流行的开源企业服务总线 for .Net

NServiceBus
开源通讯框架(几种通信模式)

NServiceBus
安装与调试

NServiceBus Overview

NServiceBus
And WCF

简单DEMO

三篇笔记:12
错误处理
3

云计算,及与 SOA 的关系


云计算是一种部署体系结构,而 SOA 则是企业 IT 的体系结构。

SOA与云整合既带来应用和业务流程灵活的虚拟化和节省的费用(云),又带来原有应用的集成应用及业务流程的敏捷重构(SOA)。

上层基于 SOA 进行应用服务的开发,底层基于云计算进行资源整合,包括存储,网络,数据库,服务器等。

目前业界比较多的观点赞同:SOA 与云计算将整合发展。

它们的关系:

  1. 从产生的背景和原因看,SOA产生的原因是为解决企业存在的信息孤岛和遗留系统这两大问题。云计算产生的原因是企业的信息系统数据量的高速增长与数据处理能力的相对不足,还有计算资源的利用率处于不平衡的状态。

  2. 从关键的技术和属性看,通过产生背景和原因的分析,SOA和云计算是不同的概念,但是它们却互相联系,又有一定的相似性。从服务角度来看,SOA实现了可以从多个服务提供商得到多个服务(一个服务便是一个功能模块),并通过不同的组合机制形成自己所需的一个服务;云计算实现了所有的资源都是服务,可以从云计算提供商购买硬件服务、平台服务、软件服务等,把购买的资源作为云计算提供商提供的一种服务。

  3. 从关键技术来看,SOA需要实现业务组件的可重用性、敏捷性、适应改变、松耦合、基于标准;云计算则需要虚拟化技术、按需动态扩展、资源即服务的支撑。

  4. 从应用场景来看,当企业的业务需求经常改变的时候可以考虑使用SOA;当企业对IT设施的需求经常改变或者无法提前预知的时候可以考虑使用云计算,当有大量的批处理计算的时候也可以考虑使用云计算。

  5. 从应用的侧重点来看,SOA侧重于采用服务的架构进行系统的设计,关注如何处理服务;云计算侧重于服务的提供和使用,关注如何提供服务。

  6. 从商业模式来看,SOA可能会降低软件的开发及维护的成本,商业模式是间接的,需要落地;云计算根据使用的时间(硬件)或流量(带宽)进行收费,具有明确的商业模式。

下面列出最近看的与本文相关的一些 pdf 书籍,东西太多,不上传了,列下书名:

《中国SOA最佳应用及云计算融合实践》、《SOA in the Real World》、《SOA应用案例分析及设计》、《A Developer’s
Guide to the Microsoft .NET Service Bus》、《IBM
ESB概要设计说明书@CBOD》、《Mule+ESB+Studio+v3.3安装使用手册》、《软通动力
兰州ESB平台项目详细设计说明书》、《SOA实践者指南》、《基于.NET+Framework+WCF的面向服务SOA中间件设计》、《基于WCF的SOA框架设计》、《IBM-ESB
在 SOA 内的工作角色》、《WSSF(服务工厂)架构剖析》、《开源SOA快速入门指南》、《Composite Software
Construction》、《Enterprise Integration Patterns - Designing Building and
Deploying Messaging Solutions》、《Enterprise SOA Adoption
Strategies》、《Prentice.Hall.SOA.with.NET.and.Windows.Azure.May.2010》。

SOA、ESB、NServiceBus、云计算 总结,布布扣,bubuko.com

时间: 2024-12-13 18:51:25

SOA、ESB、NServiceBus、云计算 总结的相关文章

SOA,ESB和EAI之间的联系和区别

今天和大家聊聊有关企业EAI,ESB和SOA这三者之间的关系.当然因为全凭个人工作经验对着三者的理解如果有什不对的还请各位通路中人一块探讨. 首先说实话个人感觉这三个概念(貌似说概念也不是特别准确)还是蛮高大上的,都是针对现在企业信息化过程中遇到的瓶颈中的一种解决方案,都是特别实用的,特别是针对大中型制造生产企业. 现在分开来说一下,就先按照EAI-àESB--àSOA这个顺序来说. EAI: 现在我觉得大多数IT工作者对企业EAI并不陌生,什么是EAI???,其实EAI就是解决各个应用软件之间

SOA系统架构

一.SOA原理与应用 1.SOA原理 SOA(Service-oriented architecture,面向服务架构). SOA的价值在于跨越了不同应用系统.不同技术的整合,这种整合改变现有的商业模型. SOA是在计算环境下设计.开发.应用.管理分散的逻辑(服务)单元的一种规范.这个定义决定了SOA的广泛性.SOA要求开发者从服务集成的角度来设计应用软件,即使这么做的利益不会马上显现.SOA要求开发者超越应用软件来思考,并考虑复用现有的服务,或者检查如何让服务被重复利用.SOA鼓励使用可替代的

朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)

十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别.最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器编排的地位确定之后大家又开始实践起以K8S为核心的云原生思想和微服务的结合如何去落地,2018年又多出一个ServiceMesh服务网格的概念,大家又在思考如何引入落地ServiceMesh,ServiceMesh和K8S以及Spring Cloud的关系如何等等. 确实有点乱了,这一波又一波的热潮

Java学习路线,及各方面知识点

一:入门阶段   学习目标:Java程序员     1:  熟悉jdk,jvm,eclipse,安装于配置jdk     2:熟悉并掌握java的基础语法,类,抽象类,接口,内部类等概念     3: java核心编程,如输入输出流,多线程,集合,XML,正则表达式等    4:java图形化编程,如awt,swing    5:java网络编程,Applet,Socket,TCP/IP,NIO等    6:java高级特性,如反射,泛型,自动装箱与拆箱等二:提高阶段   学习目标:java初级

一 课程大纲

课程目标 掌握 J2EE 技术,熟悉各种开发工具和框架,进行企业级软件的开发. 具体内容 J2EE 的核心技术:Servlet/JSP.Javabean/EJB.XML和Web服务.应用服务器安装管理和应用程序部署发布等. 主流开发工具:Eclipse.JBuilder.WSAD,及应用服务器,如Websphere.Weblogic.Jboss等. 主流框架:MVC.SOA.ESB和云计算等.

Javaweb开发学习路线及Java三大框架

Java web开发是什么? Java web开发,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等.Java技术对Web领域的发展注入了强大的动力. Java web 开发 Java web开发学习路线 一:入门阶段 学习目标:Java程序员 1: 熟悉jdk,jvm,eclipse,安装于配置jdk

Java web开发路线--Java学习资料汇总

Java web开发是什么? 先来说说java体系,包含:javaSE.javaEE.javaME,其实目前关注主要是javaEE,但学些javaEE必须先学习javaSE(因为这个是java基础).Java web开发其实是应用javaEE实现web应用的开发,是用Java技术来解决相关web互联网领域的技术总和. web开发主要包括前端开发和后端开发,前端主要是HTML.CSS.JS等相关技术,后端技术主要有JavaEE技术.数据库技术.文件存储技术等.java体系比较庞大,也是很多人比较迷

别让自己“墙”了自己(转自耗子叔)

原帖地址: https://coolshell.cn/articles/20276.html 这一两周与几个朋友聊天,有年轻的90后,也有大叔级的70后,这些人在我看来都是很有能力的人,但是一些喜好过于强烈,让我不经意地回顾了我工作20年来身边的人,有发展得好的,也有发展的不好的,有些人是很可惜的,因为限制他们的不是其它人,也不是环境,而是自己,所以,很想写下这篇文章.(注:这篇文章可能会是一篇说教的文章,所以,可能会让你看着犯困,所以,我会尽量地短一些,而且尽可能多讲故事,少道理,这里的故事,

奇葩的项目进度滞后

1.前言 最近几年,我所带的三个项目,项目风险都较高,尤其这次所带的项目风险更高,目前项目风险已经转化为时间进度严重滞后的问题. 项目始于2013年年末的布局,我是在2014年上半年帮助客户做的规划和方案.那时,我所带的团队,专业技术人员超过10人.但是,直到2014年最后一个季度,上级才批复客户的规划.按照规划和实施方案,计划开发周期为5个月,开始时间点为2015年1月份,预估开发工作量为100~120人月,项目进度甘特图简图如下图所示: 先描述下项目初期系统建设方案设计时的场景,可以用设计汽