NServiceBus-网关和多站点分布

多站点部署的企业的数量。净系统由于增加的挑战高可用性和用户要求更快的响应时间,服务器和数据访问更接近。

RPC技术迅速陷入困境在这些环境中,使机器在同一个站点和远程站点看起来是一样的。

在这些情况下,消息比RPC更好,但许多开发人员错误地代表物理站点边界为逻辑边界,导致问???。NServiceBus阻止开发商歧途但也许会让他们心中NServiceBus如何处理多站点通信。

灾难恢复和物理站点

在某些情况下,物理位置的另一个副本。这是一个常见的灾难恢复配置的目的,在很大程度上是受到技术、成本和性能。

NServiceBus没有提供特殊设施以外的灾难恢复,使开发人员能够插入自己的特定技术。这可以采取的形式的数据库复制订阅信息,配置MSMQ SAN存储的信息数据,等。各种选项的价格和性能的差异是相当大的,这里不覆盖。

在下一节中描述了使用NServiceBus在逻辑上重要的物理地点。

逻辑上重要的物理网站

虽然每个分支银行或零售商店在每个域有意义,当看着每个站点的行为我们看到大量的相似甚至相同的功能。这可能不是真正的在所有网站,特别是当检查网站,作为区域中心或总部。

逻辑服务的业务解决方案可以在多个物理站点安装组件。的一些组件可能是相同的,其他人可能会有所不同。多个逻辑服务在同一网站经常彼此紧密合作,密切和可能低于自己的组件在其他网站。

例如,您希望在商店里销售服务和定价服务在同一存储为每个事务。另一方面,定价服务总部最有可能把价格更新每日最多的商店。同样,你期望一个source推动交易的销售服务在每个商店的总部。

这种方法不仅是共同但建议使用在物理网站逻辑意义的情况下,保持逻辑服务边界内的所有网站的沟通。

Intra-service跨站点信息

当网站有逻辑意义,它们之间的消息传递不同于网站内的消息。

例如,发布价格从总部的行为具有逻辑意义。一个商店的经理明确执行一个source操作后收集和计算所有现金收款机。因此,您设计单独的类网站之间传递的消息。

跨站点数据传输

根据您的网络技术,您可以设置一个虚拟私有网络(VPN)在你的网站。这提供了Windows网络队列的能见度目标站点发送网站。您可以使用标准NServiceBus api直接消息相关的目标,的形式 Bus.Send(toDestination, msg);.

该模型建议,因为它提供了所有的好处之间的持久消息不可靠连接机器,在几个网站,一样在一个网站。你可以阅读大量的信息建立和管理一个Windows VPN .

在这种情况下,你只可以访问HTTP连接网站,您可以启用NServiceBus网关在每个站点,所以从队列传送消息队列在另一个网站一个网站,包括消息的散列,以确保正确地传输消息。下面的图显示了它是如何工作的:

发送过程中网站一个网关的输入队列发送一条消息。然后网关启动HTTP连接到目标站点配置。网关在site B接受HTTP连接,消息传播,散列,并将散列返回给网站如果哈希匹配,site B中的网关传送接收到配置队列的消息。如果散列值不匹配,门户网站重新传输。

配置和代码

当您配置客户端端点,确保UnicastBusConfig的 MessageEndpointMappings元素有一个条目表明相关消息类型去网关的输入队列。

发送一个消息到远程站点,使用 SendToSitesAPI调用,如图所示:

  • v5
  • V4
  • v3.3

    编辑

    Bus.SendToSites(new[] { "SiteA", "SiteB" }, new MyCrossSiteMessage());
    

    你注意到的字符串作为第一个参数列表吗?这就是你想要的远程站点列表(s)发送的消息。虽然你可以把网站的url直接调用中,我们建议你把这些设置 app.config所以你的管理员可以改变他们应该出现的需求。要做到这一点,增加这个配置的部分:

  • v5

    编辑

    <configuration>
      <configSections>
        <!-- Other sections go here -->
        <section name="GatewayConfig"
                 type="NServiceBus.Config.GatewayConfig, NServiceBus.Core" />
      </configSections>
      <!-- Other config options go here -->
      <GatewayConfig>
        <Sites>
          <Site Key="SiteA"
                Address="http://SiteA.mycorp.com/"
                ChannelType="Http"/>
          <Site Key="SiteB"
                Address="https://SiteB.mycorp.com/"
                ChannelType="Http"/>
        </Sites>
      </GatewayConfig>
    </configuration>
    

    NServiceBus自动设置所需的头文件,使您重新发送消息网关使用熟悉的 Bus.Reply.

    所有跨站点交互执行内部服务,所以跨网关不支持发布和订阅。

    阅读更多关于如何使它在我们的介绍了网关

    与SSL安全网关

    提供网站之间的数据传输的消息进行加密,在机器上配置SSL网关运行在每个地方。

    遵循的步骤将SSL配置并确保配置网关监听适当的端口,以及联系远程网关在同一端口。

    自动重复数据删除

    穿过交替等频道HTTP意味着你失去了MSMQ整整一个消息的安全保证。这意味着通信错误导致重试不止一次会导致接收消息。为了避免加重你重复数据删除,NServiceBus网关支持这个的。你只需要存储所有接收到的消息的消息id,它可以检测潜在的重复。

    版本5

    网关将使用你配置的存储类型。在这个阶段InMemory,NHibernate和RavenDB支持。阅读更多关于persitence选项,以及如何配置它们在这里

    版本4

    默认情况下,NServiceBus使用RavenDB存储支持IDs但InMemory和存储状态"置疑"。使用存储RavenDB以外,添加Configure.RunGatewayWithInMemoryPersistence() Configure.RunGateway(typeof(SqlPersistence))您的配置。

    进入的通道

    当启用了网关,它会自动设置一个HTTP通道来听 http://localhost/{name of your endpoint}。改变这个URL或添加多个输入通道,配置 app.config如图所示:

  • v5

    编辑

    <GatewayConfig>
      <Channels>
        <Channel Address="https://Headquarter.mycorp.com/"
                 ChannelType="Http"
                 Default="true"/>
        <Channel Address="http://Headquarter.myotherdomain.com/"
                 ChannelType="Http"/>
      </Channels>
    </GatewayConfig>
    

    第一频道的“默认”告诉网关地址附在传出消息如果发送方不显式地指定它。当然,你可以添加尽可能多的渠道和混合所有支持的渠道。目前,HTTP / HTTPS是唯一支持通道但有计划Azure,FTP,Amazon SQS帮助你桥现场和云网站。

    遵循的步骤将SSL配置并确保配置网关监听适当的端口,以及联系远程网关在同一端口。

    网关在行动

    如果你想把网关兜风,看看网关样本

  • 时间: 2024-12-18 03:39:37

    NServiceBus-网关和多站点分布的相关文章

    nservicebus教程-目录

    表的内容 开始 坚持NServiceBus 扩展 每天 举办 管理和监控 发布订阅 长时间运行的流程 定制 版本控制 常见问题解答 样品 开始 概述 NServiceBus一步一步向导 架构原则 事务消息处理 NServiceBus和WCF NServiceBus和WebSphere声波 NServiceBus和BizTalk 可靠的消息传递没有MSDTC 坚持NServiceBus 坚持NServiceBus 在NServiceBus安装使用RavenDB 在NServiceBus连接使用Ra

    NServiceBus教程-持久化

    NServiceBus的各种特性需要持久性.其中有超时.传奇和订阅存储. 四个持久化技术在NServiceBus在使用: RavenDB nHibernate 内存中 MSMQ 读到安装Raven DB和如何连接 . 使用NHibernate的持久性 从NServiceBus V3.0,支持NHibernate持久性位于一个单独的组装.的配置被进一步简化V4.0 +. NHibernate的持久性v3 . x. 可用是什么? 下面的表总结了什么是可用的,如何配置每个特性. 类型 内存中 Rave

    负载均衡入门和一些基本概念

    依稀还是很多年前,当时负责一个比较大的项目(中国电信BDC),负载均衡是少不了.硬件上询问了不少的供应商,软件上也试过一些有一定影响力的工具.根据当时公司的情况,项目的背景和实际场景,选择的是硬件方案,购买的设备是F5. 时间过的很快,硬件总要老去,而新的时代总要到来.把原先的资料翻出来,整理下,说不定新的旅程又要扬帆起航. 负载均衡(Load Balance)是什么呢?如果我们只有一台服务器,如果这一台服务器就能满足我们的业务发展和需求,那么我们基本上不需要负载均衡.但是这是一个什么样的时代,

    分享阿里云SLB-负载均衡的实现基本原理架构

    负载均衡技术原理浅析 https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.7839438.2.6.XBbX5l 阿里定制版的LVC 开源地址:https://github.com/alibaba/LVS?spm=5176.7739444.2.10.WxLaqZ 更新时间:2016-07-12 13:21:10 1.技术架构2.LVS技术特点 FULLNAT技术概述 SYNPROXY技术概述 集群部署方式 Keepalived优

    【Firewalld(Iptables)】

    ****************************************                *************Firewalld(iptables)********                    **************************************** 一,firewalld(动态防火墙后台程序)    1.(重点)相比iptables,firewalld更加只能化,用以支持网络"zones",以及分配对一个网络及其相关连接和

    Iptables/Netfilter应用总结

    目录: 一.理论部分. 二.实验部分. **********************************理论部分********************************** 1. 前提知识 任何主机若要与非同网络中的主机通信,则必须将报文发送到默认网关:对Linux而言,IP地址是属于主机(内核中)的,不属于网卡,只要属于当前主机的IP地址间,都可直接响应,不能称为转发:私有地址在路由器上是不允许被路由的 2. iptables简介: netfilter/iptables(简称为ip

    四层与七层得区别(转)

    (一) 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址:三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址:四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器:七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器. ② 所谓的四到七层负载均衡

    linuxfirewall

    iptables命令是Linux上常用的防火墙软件. netfilter组件称为内核空间,用于扩展各种组件,一般从事研发角度开发网络新特性 iptables命令格式: iptables   -t  表名  <-A/I/D/R>   链 [规则号]  <-i/o 网卡名>  -p 协议名  <-s 源IP/源子网>  --sport 源端口   <-d 目标IP/目标子网>   --dport 目标端口    -j 动作 表名:filter.nat.mangl

    iptables防火墙四表五链介绍

    iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables.真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构. iptables包含4个表,5个链.其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度.      4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表).表的处理优先级:raw>mangle>nat>f