本篇文章是基于不断的接触GXPT之后,对其技术开始不断的积累学习^^^,有很多问题带给我了思考,对于如何的处理各个部分的流程?这个如何处理?太多的问题促使着我一步一步的学习,在师哥们的指导下,逐步的清晰,现在武装补充知识能量.

什么是SOA?

SOA:面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。

什么是ESB?

企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service Oriented Architecture, SOA)发展而来的。SOA描述了一种IT基础设施的应用集成模型;其中的软构件集是以一种定义清晰的层次化结构相互耦合。一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。

在企业计算领域,企业服务总线是指由中间件基础设施产品技术实现的、 通过事件驱动和基于XML消息引擎,为更复杂的面向服务的架构提供的软件架构的构造物。企业服务总线通常在企业消息系统上提供一个抽象层,使得集成架构师能够不用编码而是利用消息的价值完成集成工作。

企业服务总线提供可靠消息传输,服务接入,协议转换,数据格式转换,基于内容的路由等功能,屏蔽了服务的物理位置,协议和数据格式.

ESB在SOA中扮演着重要的角色

在技术层解决了SOA的整合问题,耦合了应用与应用之间的集成逻辑,使得SOA更灵活,更易于扩展,更敏捷。有了ESB,新建的服务消费者应用程序不需要关心服务的提供者在哪里,使用何种通讯协议,与其交互的数据是怎样的……,它只需向ESB发出请求,使用开放的、标准的通讯协议。

结合到GXPT上来,可以简单的理解为,现有这么系统间的服务的交互\通信\数据的传递等等,都是需要来整合的,一开始来说在一定程度上解耦合,是不同系统之间通过WebService来各自发布自己的服务,其他需要的再调用即可,但是如果服务过多(颗粒多的话),这种A直接依赖B的这种形式,就显得很臃肿了,交互太多,维护管理起来代价它的,

各个应用系统之间的调用形成了一张网,没有逻辑,随着业务的增加,维护简直就是一场恶梦。

想要处理这样的关系,学习过设计模式,很容易联系到外观模式的作用,如果有一个可以整合系统间的这样的多线路的调用的就太好了,通过外观代理的方式,来处理,下图示:

各个应用的逻辑很清晰,每个应用都只需要关心如何暴露自己的服务,而调用的应用只需要知道如何调用服务,至于怎么做,去找谁,则完全交给ESB来完成。

所有的ESB产品都应该可以构建和部署服务。包括对遗留系统的整理、消息的路由、消息格式的转换、执行协议的调解等。

首先我们要看ESB是否具有以下特性:

  • 互通性
  • 抽象化
  • 资源位置的虚拟化
  • 扩展能力和管理服务
  • 是否具有平台无关性,即跨平台
  • 松耦合

上面列出的往往很评估,但是ESB本身具有的特性往往更容易识别和评估。

ESB所必须具备的功能:

  • 路由
  • 协议桥接
  • 消息转换
  • 服务代理托管

扩展的功能有:

  • 资源适配器
  • 可靠的消息传递
  • 事件处理
  • 交易的完整性管理
  • 消息格式调解
  • 负载均衡
  • 消息验证
  • 能力调解

等。

个人理解:ESB的原理和现在机房的大的交换机有着同工异曲之妙

实战练手

1:打开开发环境,熟悉使用Eclipse的我们来说,这个太简单了(熟悉熟悉还是熟悉)



 这个.MFLOW文件存储流信息供可视化编辑器编辑。当你的新项目第一次打开,Mule Studio会自动打开.MFLOW文件,将显示一个空白的画布。

主版面



在元素板上,每个类别中的构建块按字母顺序排列。为避免滚动,使用选项板的右上角的过滤器工具可以更快速地找到你想要构建块。

2:双击HTTP,弹出一下,设置其属性如下

3:设置Logger属性

4:设置Set Payload属性

1、打开任何一个网页浏览器,然后导航至http://localhost:8084/world ,
2、您的浏览器会显示一条消息,上面写着,Hello, world 。Today is[今天的日期。 

当然 world可以修改成你自己任意想输入的信息,后通过ESB拦截,打出相应的信息

总结

     多查,多用,多问,多动手吧,所有的问题没有我们刚开始想象的那么难,先做就对了,接下来分享原理与实战篇,敬请关注,多多支持!

推荐播客连接地址<贾琳师哥>

原文英文官网地址:

步步为营---- MuleEsb学习(一) 扫盲篇的更多相关文章

  1. java学习——入门扫盲篇

    概要 近期这几天開始进入java的学习,接触到了好多不是非常了解的概念,像JDK.JRE.JVM.GC等等这些,放到这里来进行下扫盲. java java是一种面向对象程序设计语言和java平台的总称 ...

  2. 转摘 MySQL扫盲篇

    一下文章摘自:http://www.jellythink.com/archives/636 MySQL扫盲篇 2014-09-15 分类:MySQL / 数据库 阅读(1412) 评论(1)  为什么 ...

  3. C语言扫盲篇

    C语言扫盲篇 作者:尹正杰 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 一.什么是C语言 C 语言是一种通用的高级语言,最初是由 ...

  4. MySQL数据库扫盲篇

    MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL概述 1>.什么是MySQL MySQL是瑞典的MySQL AB公司开发的一个可用于各 ...

  5. C#扫盲篇(四):.NET Core 的异步编程-只讲干货(async,await,Task)

    关于async,await,task的用法和解释这里就不要说明了,网上一查一大堆.至于为啥还要写这篇文章,主要是其他文章水分太多,不适合新手学习和理解.以下内容纯属个人理解,如果有误,请高手指正.本文 ...

  6. halcon视觉入门扫盲篇

    halcon视觉入门扫盲篇 前言     在公司让我研究视觉的时候,我是两眼一抹黑的.之前完全没有接触过视觉.综合权衡后选择了Halcon,使用的是HDevelop 13 (64-bit).      ...

  7. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  8. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  9. Python3学习(3)-高级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...

随机推荐

  1. 关于java线程中stop interrupt daemon wait notify

    一.关于终止线程stop与interrupt 一般来说,线程执行结束后就变成消亡状态,乍看之下我们并不需要人为进行干预(人为停止线程),不过凡事都有例外吧,在服务器或者其他应用场景下,线程为了提供服务 ...

  2. springmvc上传文件方法及注意事项

    本文基于注解的配置,敬请留意  基于注解整合 一.springmvc为我们提供两种上传方式配置: org.springframework.web.multipart.commons.CommonsMu ...

  3. jQuery Datetable

    先来个官网可以直接看官网  https://www.datatables.net/manual/data/ 安装 DataTables是一个功能强大的Javascript库,用于为HTML表格添加交互 ...

  4. Spring学习笔记2——创建Product对象,并在其中注入一个Category对象

    第一步:创建Product类.在Product类中有对Category对象的set和get方法 package com.spring.cate; public class Product { priv ...

  5. 2017-9-19 c语言预备作业

    题目一: (1)我对邹欣老师博客内容的看法 针对邹欣老师的第一种看法,也就是文中所谈的春蚕与园丁的例子.我认为在大学之前的阶段,师生关系可以如此比喻,因为在中学阶段教师与学生的关系,更多地是一个知识的 ...

  6. SynchronizedMap和ConcurrentHashMap的深入分析

    http://blog.sina.com.cn/s/blog_5157093c0100hm3y.html java5中新增了ConcurrentMap接口和它的一个实现类ConcurrentHashM ...

  7. Postgresql合并年月日、月份和日期左侧补零

    在写一个统计查询的 SQL 语句时,需要根据年.月.日分组,但要求返回的字段是日期格式:yyyy年MM月dd日.刚开始我的做法是返回年.月.日,然后再手动拼接年月日,而且还要判断月份和日期是否为个位数 ...

  8. TypeScript: Week Reflection

    TypeScript: Week Reflection Introduction Type Script already provide decorators to help developers i ...

  9. 【Java关键字-Interface】为什么Interface中的变量只能是 public static final

    三个关键字在接口中的存在原因:public:接口可以被其他接口继承,也可以被类实现,类与接口.接口与接口可能会形成多层级关系,采用public可以满足变量的访问范围: static:如果变量不是sta ...

  10. Settings.settings

    项目的设置,有些设置是不能变的,有些设置是由用户决定的,Settings.settings都能搞定. 范围是应用程序级别的是只读属性,范围是用户级别的可读写 读取的方式是: Properties.Se ...