那么我在这里谈论的是 SOA 吗?

发布于 2024-09-16 05:07:30 字数 730 浏览 0 评论 0原文

对于政府合同,我们将建议建立一个交通监控架构。我们将具有以下组件:

  • 在感兴趣的区域周围设置摄像机。摄像机将了解它们的位置和方向以及观看参数。
  • GIS 地图服务器,可查询街道、建筑物等。
  • 一种算法,获取原始视频和街道位置信息并输出汽车位置。
  • 另一种算法接收汽车位置和非常低级的街道信息,并提供有关哪些汽车异常行驶的信息。
  • 另一个数据库随着时间的推移接收有关汽车位置和异常报告的信息,并且可以稍后查询。
  • 在档案数据库和实时算法上设置代理(或者更准确地说,外观),以便为信息提供统一的接口。
  • 客户端连接到代理和街道服务器,并在屏幕上绘制交通状况的各种表示。

我现在刚刚了解什么是 SOA。这是面向服务架构 SOA 的理想选择吗?我听说 SOA 服务应该是无状态的(或者只是 RESTful 服务?)我还听说将一个服务通过管道传输到下一个服务是不可取的,因为它会增加隐藏的复杂性,并且您应该做一些事情使这种情况变得更好(“编排”?)。上述服务确实是模块化且可重用的。例如,将会有大量的摄像头、各种类型的车辆检测和异常算法、分布式数据库和大量的客户端。我需要具有处理事件的能力:例如,如果我可能想要注册一项服务,并在一辆大卡车经过此点时收到通知。

如果 SOA 不能理想地实现这一点,那么我还应该去哪里寻找。如果这对于 SOA 来说是理想的,那么设计时我应该从哪里开始呢? (我基本上是从阅读 Wikipedia 的 SOA 页面开始的。)这里有什么好的案例研究可以看吗?

For a government contract we will be proposing to build a traffic monitoring architecture. We will have the following components:

  • Video camera's set up around the area of interest. The cameras will be aware of their location and orientation and viewing parameters.
  • A GIS map server which can be queried for streets, building, etc.
  • An algorithm the takes in raw video and street location information and outputs car locations.
  • Another algorithm takes in car locations and very low level street information and provides information about which cars are driving anomalously.
  • Another database takes in information about car locations and anomaly reports over time and can be queried for this later.
  • A proxy (or perhaps more accurately, a facade) is set up over the archive database and the real-time algorithms in order to provide a unified interface to the information.
  • A client attaches to the proxy and to the street server and paints various representations of the traffic situation on the screen.

I'm just now learning what an SOA is. Is this an ideal candidate of a Service Oriented Architecture SOA? I had heard that SOA services should be stateless (or is that only RESTful services?) I had also heard that it was inadvisable to pipe one service to the next to the next because it increases hidden complexity, and that there was something you should do to make this situation better (an "orchestration"?). The services above do appear to be modular and reusable. For instance, there will be plenty of cameras, various types of vehicle detection and anomaly algorithms, distributed databases, and plenty of clients. I will need to have the capability to handle events: for instance, if I may want to register to a service and be notified whenever a big truck moves past this point.

If this isn't ideally implemented by a SOA, then where else should I be looking. If this is ideal for a SOA, then where should I start when designing this? (And I'm starting basically from having read Wikipedia's SOA page.) Are there any good case studies to look at here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

马蹄踏│碎落叶 2024-09-23 05:07:30

是的,SOA 在这种情况下是理想的(具有多种技术组合的复杂的分布式系统),但从它的声音来看,您需要做更多的研究才能理解这个概念。无论如何,这都不是一个困难的概念,实际上很简单,但没有一种规定的方法可以做到这一点。我建议查看 类似规模项目的 SOA 案例研究、成功和失败。

您提到了您的一个子系统的外观。将相同的概念扩展到其他组件。例如,每个服务都是一个复杂子系统的外观。

另外,我建议在您选择的技术中实现几个不同的 Web 服务,并抽象任意不同的子系统(数据库应该是组件之一。)然后编写一个使用它们的客户端。这样做会给你很多实践经验和对这个概念的洞察。

最后一个想法:如果您必须在多个不同的服务之间移动视频数据,SOA 架构可能会遇到问题。当移动大量数据或对非常大的数据集执行批量事务时,SOA 的无状态、事务性特性可能会带来性能问题。您要么需要保持视频本地化,要么实施后端子系统(作弊)以避免潜在的严重瓶颈。

Yes, SOA is ideal in this case (complex, distributed system with a wide mix of technologies) but from the sound of it you need to do a whole lot more research to get your head around the concept. It is not a tough concept by any stretch, it's actually simple, but there is no one prescribed way to do it. I suggest going over SOA case studies for similarly-sized projects, successes and failures.

You mention a facade for one of your subsystems. Extend that same concept to the rest of your components. E.g. each service is a facade to a complex subsystem.

Also, I recommend implementing a couple of different web services in your choice of technologies and abstracting arbitrary different subsystems (a database should be one of the coponents.) Then write a client that makes use of them. Doing so will give you a lot of practical experience and insight into the concept.

Last thought: The one area where an SOA architecture might stumble is if you have to move video data between several different services. The stateless, transactional nature of SOAs might introduce performance issues when moving very large amounts of data or when performing bulk transactions on very large data sets. You either need to keep video localized or implement a back-end subsystem (cheat) to avoid potentially nasty bottlenecks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文