代码之家  ›  专栏  ›  技术社区  ›  dariol

轨道车辆分布式应用的设计与建设建议

  •  2
  • dariol  · 技术社区  · 16 年前

    我正在申请追踪车辆。将有大约10公里或更多的车辆。每分钟发送约250字节。数据包含GPS位置和来自can总线的所有数据(我们可以从车辆计算机和仪表板读取的所有数据)。数据通过GSM/GPRS(使用UDP协议)发送。每天使用此数据的估计行数约为20000K。

    我看到有3个主要模块(blocks->表示主要模块)。

    1。 多线程套接字服务器(MSS)-我有。mss将接收到的数据存储到队列(使用nservicebus)。

    2。 规则处理器服务器(RPS)-这是这个系统的核心。此块负责解析接收到的数据,存储在数据库中,处理规则,向通知服务器发送消息(这将发送电子邮件/短信文本)。

    规则示例。 如前所述,接收字节将有关于当前速度的信息。当速度超过120时:在Web应用程序中显示指定用户的警报,发送电子邮件,发送短信。

    (同一台计算机上可以有多个RPS实例)。

    三。 Web应用程序-允许用户报告和定义规则、监视警报等。

    我在寻找如何设计rps和web应用程序之间的通信的建议。

    一些问题:

    • web应用程序和rps应该有独立的数据库还是一个中心数据库就足够了?

    • 我在web应用程序中有一个域模型。如果有一个中心数据库,那么我可以在rps上使用相同的模型(对象)吗?那么,如何将更改后的规则发送到rps?

    我试着尽可能地将这些块分离。我计划为每个客户机创建不同的应用程序实例(每个客户机都有独立的数据库)。一个客户将拥有10万辆车,其他客户只有100辆车。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Udi Dahan    16 年前

    您正在尝试构建一个多租户saas系统,允许其用户对其进行配置。为此,我不建议使用技术块作为顶层架构。相反,寻找更多面向业务的脱钩线——这可能包括更关注时间在您的领域中的影响。

    例如,从用户更改规则开始,它需要多长时间才能生效?

    你可能会发现不同的规则有不同的生效时间。

    找出原因。尝试理解为什么一组规则需要在5秒内生效(例如安全),而其他规则需要在月底生效(例如计费)背后的业务原因。

    这些信息将推动许多架构选择向前发展。

    尽管您很可能在解决方案中使用了上面提到的技术组件,但它们是如何配置的,它们与哪个数据库通信,等等—所有这些都是由上面描述的不同业务上下文驱动的。

    我的建议是,在继续前进之前,先回去获取更多的商业洞察力。

        2
  •  0
  •   Adam Fyles    16 年前

    你差不多在那里,因为你正在使用nsb,你可以订阅总线。发送你已经在做了。从那里可以将处理程序串在一起以创建规则管道。最后一个处理程序可以是将处理状态保存到数据库的处理程序。如果要将该处理与web应用程序中正在进行的操作分离,可以从web应用程序和只读报表创建单独的数据库。您可以在处理结束时触发一个事件来更新另一个数据库。查看UDI在HIS上的命令查询隔离帖子 blog .

        3
  •  0
  •   Chris Pitman    16 年前

    听起来你真正想要的是cep(复杂事件处理)。cep系统监视事件流,并使用定义的查询来捕获特定的事件或事件序列,然后对它们作出反应。

    .net中的一个开源选项是 NEsper .

    推荐文章