Akka Stream流量描述中的实时资源

kos*_*sii 8 java scala akka akka-stream

akka-stream文档中有这样的说明,说明如下:

......可重用的流描述不能绑定到"实时"资源,任何与此类资源的连接或分配必须推迟到实现时间."实时"资源的示例是已经存在的TCP连接,多播发布者等; ...

关于这个说明,我有几个问题:

  • 除了这两个例子,还有什么其他资源可以作为直播?
    • 任何无法安全(深度)复制的东西?喜欢Thread
    • 我是否还应该避免分享任何不是线程安全的东西?
  • ActorRef那个ActorSystem用过的现有的ActorFlowMaterializer怎么样?
  • 如何在实现时间之前推迟分配?例如,在一个PushPullStage但不是在一个创建函数的构造函数中分配它是否安全FlowGraph

小智 2

如果我们考虑 Web 服务、RMI 连接或任何其他通信协议,这里的问题是一个常见问题。始终建议先共享“原始”值,然后再共享引用,因为编组/解组或序列化/反序列化总是令人头痛。还要考虑不同类型的环境之间的相互通信。分享坚实的价值观是解决沟通问题的安全方法。

\n\n

Akka 本身就是“微服务”参与者之间进行通信的一个很好的例子。当我阅读 Akka 的文档时,有一个词很好地定义了 Akka Actor。Actor 就像邮箱客户端,你可以认为每个客户端都有一个邮箱。当您传递变量时,就像您收到一封新电子邮件一样。

\n\n

长话短说,避免共享“依赖”对象,这些对象在从另一个参与者读取之前可能会失效。此外,如果您的系统动态命名 actorRefs,请避免通过引用来调用它们。

\n\n

akka-streams 的文档中解释了“物化”。

\n\n
\n

具体化的过程可以被参数化,例如,用关于连接\xe2\x80\x99s地址和端口信息的特定信息来实例化用于处理TCP连接\xe2\x80\x99s数据的蓝图。此外,物化通常会创建特定的对象,这些对象在处理引擎运行时可用于与处理引擎进行交互,例如用于关闭引擎或提取指标。这意味着物化函数从外部获取一组参数并产生一组结果。组合性要求这两个集合不能交互,因为这将建立一个隐蔽的通道,不同的部分可以通过该通道进行通信,从而导致初始化顺序问题和难以理解的运行时故障。

\n
\n\n

因此,使用参数而不是传递“连接”本身。

\n\n

推迟实时资源并不是什么大事。这意味着如果您对所有系统使用一个连接,则应该始终保持它处于活动状态。或者,当您在 actor-1 中创建事务并将其发送到 actor-2 时,您不应该终止 actor-1 中的事务,直到 actor-2 完成其事务工作。

\n\n

那你怎么能理解呢?然后你使用“Future”和“offer()”。

\n\n

希望我理解你的问题并希望我能表达自己。

\n