簡體   English   中英

Java-Akka項目最佳做法

[英]Java - Akka project best practices

我有一個圍繞actor系統構建的java項目。 參與者之一需要通過我編寫的Java API使用第三方服務。 但是我想知道在AKKA世界中是否有一個Java接口和一個與該actor交互的實用java類是否是一種好習慣?

MyActor.java

public class MyActor {
 @Override
 public void OnReceive(Obj o) throws Exception {
     .. do something 
     .. do something else using MyUtility.java
     .. send back the message
 }
public class MyUtility implements ItsIterface {
 ... blah
} 
interface ItsInterface {
  .. blah
}

這是一個好方法嗎?

我想說,就參與者系統而言,取決於第三者服務,這似乎是很自然的事,沒有人期望它能夠獨立運行。

就接口而言,我不知道它與actor有什么關系,因為它僅直接使用實用工具類實現。 如果不了解MyUtility ,則如果MyUtility包含狀態並且不被actor專門使用,則通常會出現並發問題。

盡管使用質量超出您的控制范圍的第三方服務會導致一些潛在的問題,並且要求設計反映以下幾點:

  • 由於潛在的性能/可伸縮性問題, 不鼓勵參與者阻塞消息。
  • 簡單地從演員內部使用期貨來防止阻礙將瓶頸從演員轉移到未來。 如果您在不詢問系統是否可以處理其他消息的情況下推送即插入消息,則尤其如此(背壓)。
  • 隊列不能修復過載是一篇不錯的文章,它介紹了一般情況下如何處理隊列中的負載。
  • 可能值得考慮將第三方服務放在單獨的角色中,並使用斷路器 ,以防該服務有些不可靠。
  • 參與者很少具有與其使用的服務相同的生命周期 ,因此需要考慮后果。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM