java - 分布式系统

标签 java frameworks distributed

我正在寻求用 Java 创建一个分布式框架,并且需要一些帮助来整理客户端/经理/工作人员情况的实现,如下面的伪代码所述。

Manager
BEGIN
    WHILE(true)     
        RECEIVE message FROM client
            IF (worker_connections > 0) THEN            
            FOR (i=0;i<worker_connections;i++) 
                SEND message TO worker[i]
            FOR (i=0;i<worker_connections;i++) 
                RECIEVE result[i] FROM worker[i]             
            SEND merge(result[]) TO client
            ELSE            
            SEND "No workers available" TO client
            END IF
    END WHILE
END

Client
BEGIN
    RECEIVE message FROM user
    SEND message TO manager
    RECEIVE message FROM manager
END

Worker
BEGIN
    WHILE(true)
        RECEIVE message FROM manager
         result = doSomething(message)
         SEND result TO manager
    END WHILE
END

到目前为止,我已经按照伪代码中的描述实现了客户端,但是我在管理器/工作人员部分遇到了问题,所以目前客户端只收到没有工作人员可用的消息。管理器可以接受多个连接,每个连接都作为一个线程运行,但是我如何区分客户端连接和工作连接?如何跟踪当前连接的工作人员数量?

客户端、管理器和工作人员代表不同的机器,但我只在一台机器上开发(用 Java)。

最佳答案

  • 问。如何区分客户端连接和工作器连接?
  • A.使用两个端口,一个监听来自工作人员的连接,一个监听来自客户端的连接。
  • 问。如何跟踪当前连接的工作人员数量?
  • A.有一个注册机制(可能在工作人员列表中),以便在工作人员每次连接/断开连接时进行注册/注销。

关于java - 分布式系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8272726/

相关文章:

Java:从 JSON 解析数组的数组

java - 在 Oracle 11 上使用 queryDsl 获取两天之间天数差异的问题

PHP5 框架 : Autoloading and Opcode Caching

java - 在这种情况下,对于我的 UML 图,我的依赖关系应该从类到接口(interface)还是从类到具体类型?

php - 将非框架 PHP 项目移植到 Laravel 4.x

cocoa - Cocoa 中的框架创建

distributed - 如何在 Consul KV 存储中的键上设置 TTL(到期)

domain-driven-design - 多版本并发控制以及CQRS和DDD

quartz-scheduler - 分布式定时器服务

java - 如何在 Firestore 中存储富文本编辑器数据?