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调用,如图所示:
Bus.SendToSites(new[] { "SiteA", "SiteB" }, new MyCrossSiteMessage());
你注意到的字符串作为第一个参数列表吗?这就是你想要的远程站点列表(s)发送的消息。虽然你可以把网站的url直接调用中,我们建议你把这些设置 app.config所以你的管理员可以改变他们应该出现的需求。要做到这一点,增加这个配置的部分:
<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如图所示:
<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配置并确保配置网关监听适当的端口,以及联系远程网关在同一端口。
网关在行动
如果你想把网关兜风,看看网关样本
NServiceBus-网关和多站点分布的更多相关文章
- nservicebus教程-目录
表的内容 开始 坚持NServiceBus 扩展 每天 举办 管理和监控 发布订阅 长时间运行的流程 定制 版本控制 常见问题解答 样品 开始 概述 NServiceBus一步一步向导 架构原则 事务 ...
- NServiceBus教程-持久化
NServiceBus的各种特性需要持久性.其中有超时.传奇和订阅存储. 四个持久化技术在NServiceBus在使用: RavenDB nHibernate 内存中 MSMQ 读到安装Raven D ...
- 《ServerSuperIO Designer IDE使用教程》-2.与硬件网关数据交互,并进行数据级联转发,直到云端。发布:v4.2.1版本
v4.2.1 更新内容:1.重新定义数据转发文本协议,使网关与ServerSuperIO以及之间能够相关交互数据.2.扩展ServerSuperIO动态数据类的方法,更灵活.3.修复Designer增 ...
- Ocelot网关在.Net Core 的使用
1. 项目环境 .Net Core 2.2 Ocelot 13.5.2 2. 基本使用 * Nuget 安装 Ocelot , Ocelot.Provider.Polly * 修改 Pro ...
- 利用python爬取城市公交站点
利用python爬取城市公交站点 页面分析 https://guiyang.8684.cn/line1 爬虫 我们利用requests请求,利用BeautifulSoup来解析,获取我们的站点数据.得 ...
- 负载均衡DNS和反向代理优缺点
负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡(又 ...
- 分享阿里云SLB-负载均衡的实现基本原理架构
负载均衡技术原理浅析 https://help.aliyun.com/knowledge_detail/39444.html?spm=5176.7839438.2.6.XBbX5l 阿里定制版的LVC ...
- Production环境中iptables常用参数配置
production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...
- iptables原理详解(一)
iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火 ...
随机推荐
- aopalliance.jar —— 下载地址
下载地址:http://sourceforge.net/projects/aopalliance/files/aopalliance/1.0/aopalliance.zip/download TIPS ...
- cookie使用
知识拷贝. 理论很简单,而且模式也和大多请求 http://blog.csdn.net/lanmao100/article/details/2328491(源地址).返回状态的SSO差不多.但是有几个 ...
- Oracle Order Management DropShip Flow for R12
Oracle Order Management DropShip Flow for R12 Email ThisBlogThis!Share to TwitterShare to FacebookSh ...
- Windows 7 32位上硬盘安装linux[ubuntu13.04] 双系统
本内容介绍如何在window7上安装ubuntu双系统 一.准备工具 1. EasyBCD : 用来制作引导菜单选项 2.Wingrub : 用来确定磁盘文件Linux表示法位置 3.分区助手 :用来 ...
- HDU 1158 Employment Planning【DP】
题意:给出n个月,雇佣一个人所需的钱hire,一个人工作一个月所需要的钱salary,解雇一个人所需要的钱fire,再给出这n个月每月1至少有num[i]个人完成工作,问完成整个工作所花费的最少的钱是 ...
- Java 碰撞的球 MovingBall (整理)
package demo; /** * Java 碰撞的球 MovingBall (整理) * 声明: * 这份源代码没有注释,已经忘记了为什么要写他了,基本上应该是因为当时觉得好玩吧. * 有时候想 ...
- JS一般般的网页重构可以使用Node.js做些什么(转)
一.非计算机背景前端如何快速了解Node.js? 做前端的应该都听过Node.js,偏开发背景的童鞋应该都玩过. 对于一些没有计算机背景的,工作内容以静态页面呈现为主的前端,可能并未把玩过Node.j ...
- xampp无法打开phpmyadmin解决方案
如果设置了apache的端口号(如8890),那么不可以用自带的admin按钮打开,而是要加上端口(如localhost:8890/phpmyadmin/)
- SpringMvc+jquery easyui模块开发7步骤
搞了一段java的开发,总结出模块开发经验: SpringMvc+jquery easyui模块开发7步骤:1) 数据表(table): 定义表结构并创建数据表t_use ...
- PV是什么意思
现在国内的站点都号称自己能统计pv,不过听我讲完pv到底是什么,估计所有的站长都要笑了. pv的意思,就是一个访问者在24小时(0点到24点)内到底看了你网站几个页面. 不过在国内,由 ...