首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式系统

分布式系统
EN

Stack Overflow用户
提问于 2011-11-26 01:56:42
回答 2查看 502关注 0票数 1

我希望在Java中创建一个分布式框架,并且需要一些帮助来整理客户端/管理器/工作者的实现,如下面的伪代码所述。

代码语言:javascript
复制
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)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-26 02:03:41

  • 问:如何区分客户端连接和辅助连接?
  • A.使用两个端口,一个用于侦听来自辅助连接的连接,另一个用于侦听来自客户端的连接。
  • 问:我如何跟踪当前连接的工作进程的数量?
  • A.我有一个注册机制(可能在工作进程列表中),以便在每次连接到某个工作进程时进行注册/注销
票数 2
EN

Stack Overflow用户

发布于 2012-03-04 11:53:51

问:管理器可以接受多个连接,每个连接都作为一个线程运行,但是我如何区分客户端连接和工作者连接?

我猜你可以定义一些协议,我指的是消息的格式/语义,msg类型可能会有所帮助。此外,对于分布式系统,FIFO不能被保险存储,我想你应该使用一些机制,如序列号,逻辑时钟来处理请求和响应之间的匹配。

问:如何跟踪当前连接的工作人员数量?

首先,可以考虑登录和注销,但是并不总是可能的,特别是注销;第二,使用超时连接错误,因为发送后崩溃,可以有一些阈值,或"getResult“消息;第三,对于DS,我认为你最好应用一些选举算法,以确保始终有worker。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8272726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档