Copyright2006-2009DanMcCreary&Associates1IntroductiontoOpen-SourceESBMuleCopyright2006-2009DanMcCreary&Associates2AgendaWhatisMule?--Mule介绍Mule体系架构WhatarethecoreMuleconcepts?-Mule核心概念Mule中的四种消息机制服务组件编写实例PropertiesofanESBLooselyCoupledEvent-DrivenHighlyDistributedSecurity/AuthorizationAbstractEndpointsIntelligentRoutingDataTransformation(inbound/outbound)ReliableMessagingMulti-ProtocolMessageBusLightWeightProjectwasfoundedin2003.ItwasstartedafterexperienceswithalargeFinancialESBproject.Therearenow10developerswhohelpsupportitandaddnewfeatures.Hasanactiveusercommunity.IsbeingusedincompaniessuchasHP,Sony,DeutcheBankandCitiBank.SymphonySofthasbeenstartedbyMuledeveloperstohelpsupportandprovideprofessionalservicestotheseprojects.Formoreinformationgoto-介绍Mule是一个轻量级的,事件驱动的消息框架提供了高可扩展性的环境提供了企业服务网络的架构:允许使用灵活的方式进行部署7Mule介绍---EnterpriseServiceBackboneMuleisanopen-sourceEnterpriseServiceBackbone(ESB)Mule介绍---架构Mule通过Transports/Connectors与外围的异构系统连接提供Routing(路由)TransactionManagement(事务管理)Transformation(转换)MessageBroker(消息代理)TransportationManagement(传输管理)Security(安全)等核心模块。Mule可以单独使用,也可以架设在常用的应用服务器上。架构中应用系统中,最大的优势在于它允许不同的应用都可以担当传输系统的角色,使其可以互相通信,不论他们处在内联网中还是跨越了互联网。外围系统的服务请求通过MuleESB的Transport接入,Mule通过Transformer进行数据的格式转换,然后经过InboundRouter进行消息过滤(内部通过配置filter实现)后交给Mule的Component进行业务逻辑处理,处理后的结果通过OutboundRouter确定传递给哪个接收方,然后通过Transformer进行数据格式转换,通过Transport连接至接收方,传递信息介绍--优势与竞争对手相比,Mule提供了很多优势,包括:Mule的服务组件可以是你想要的任意类型的Mule和其ESB的模型提供了非常可观的组件重用。不同于其他框架,Mule可以让你不加修改地使用你现有的组件。这些组件不需要任何与Mule相关的代码,甚至编程接口(API)也不需要,就可以在Mule上运行介绍--优势消息可以是从SOAP到二进制图像文件的任意类型。在设计上,Mule不会强制你使用任何设计约束条件,比如XML消息或者WSDL服务契约Mule部署成多种拓扑结构,甚至可以不以ESB的方式进行部署。因为Mule是轻量级和嵌入式的框架,所以它可以很好地应对那些需要适应各种变化,并且按需求来增加和裁减功能的应用在那种要求高可靠和可扩展性的系统中,Mule可以有效地减少部署时间,提高生产率Mule介绍--优势总结ESB组件可以是任意的类型,甚至是POJO类;核心组件重用;ESB消息可以为任意格式,从SOAP到二进制的文件,都得到了支持;可以部署成多种拓扑结构,甚至不以ESB的方式部署.相关的特性支持支持多样的服务拓扑结构可扩展性;使用SEDA事件模型同步、异步、请求/响应等多种方式的消息机制JavaEE支持:JBI,JMS,EJB,JCA,JTA,Servlet等等强大的事件路由能力(基于EIP)丰富的协议/数据格式支持,支持几十种协议透明的分布式部署容错和异常管理机制独立的认证/授权框架16MuleisHasAdvancedTechnologiesSEDAStagedEvent-DrivenArchitectureJavaNIOJavaNewInput/Output17SEDA(StagedEvent-DrivenArchitecture)SEDAdecomposesacomplex,event-drivensoftwareapplicationintoasetofstagesconnectedbyqueuesThisdesignavoidsthehighoverheadassociatedwiththread-basedconcurrencymodels,anddecoupleseventandthreadschedulingfromapplicationlogicByperformingadmissioncontroloneacheventqueue,theservicecanbewell-conditionedtoload,preventingresourcesfrombeingovercommittedwhendemandexceedsservicecapacitySEDAemploysdynamiccontroltoautomaticallytuneruntimeparameters(suchastheschedulingparametersofeachstage)aswellastomanageload,forexample,byperformingadaptiveloadsheddingDecomposingservicesintoasetofstagesalsoenablesmodularityandcodereuse,aswellasthedevelopmentofdebuggingtoolsforcomplexevent-drivenapplications核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处理,Stage间使用事件驱动的异步通信模式。更进一步,在每个Stage中可以动态配置自己的线程数,在超载时降级运行(如输出纯文字页面)或拒绝服务SEDAIncomingEventQueue,事件队列。AdmissionController阀门,拒绝服务。DynamicallysizedThreadPool,线程池。EventHandler,实际处理业务的Compinent。ResourceController,控制Stage的参数。Mule是SEDA架构的遵循者。每个Component间,用inbound-outBound的Queue异步相连,每个Component可以设置自己的线程池大小,队列长度。因此SEDA中的Stag间事件驱动异步链接,Stag内IncomingEventQueue,ThreadPool,EventHandler都有了。Copyright2006-2009DanMcCreary&Associates19JavaNIONIOisacollectionofJavaprogramminglanguageAPIsthatofferadvancedfeaturesforintensiveI/OoperationsNIOfacilitatesanimplementationsthatcandirectlyusethemostefficientoperationsoftheunderlyingplatformNIOincludes:BuffersfordataofprimitivetypesCharactersetencodersanddecodersApattern-matchingfacilitybasedonPerl-styleregularexpressions(inpackagejava.util.regex)Channels,anewprimitiveI/OabstractionAfileinterfacethatsupportslocksandmemorymappingAmultiplexed,non-blockingI/Ofacilityforwritingscalableservers20Mule’s“MovesThingsAround”FoldertofolderQueuetoqueueSharedmemorytosharedmemoryUsingdifferenttypesoftransportsInaflexiblewayCopyright2006-2009DanMcCreary&Associates21XMLPipelineAnXMLpipelineisaseriesofoperationthatareperformedononeormoreXMLfilesExamplesinclude:validatetransformprune(removenodes)split(breakasingleXMLfileintomanyfiles)merge(jointwoormorefilestogether)22CRVExampleFlowofXMLdocumentthroughapprovalprocessesSubmitCRVDeedMatchedCRVSSNStrippedCRVIncomeTaxAuditCountyAuditCountyApprovalStateAuditStateApproval23DecompositionExampleofXMLOperationsusedonCRVValidateSplitRemoveSSNElementStoreModifyValueAddElementModifyValueAddElementCopyright2006-2009DanMcCreary&Associates24DeclarativeApproachFocusonspecifyingWhatnotHowEmpowerbusinessanalysistowritemachine-readablespecificationsHidetheHowbehindserviceswithclearinterfaces(SOA)Mule体系架构Copyright2006-2009DanMcCreary&Associates26Mule核心概念(CoreMuleConcepts)MuleManagerMuleMode(SEDA)UniversalMessageObject(UMO)服务组