构建代理中心

时间:2016-08-01 20:43:27

标签: java architecture proxy

首先,我正在收集有关此问题的信息,以便我能够以更优雅的方式实现此功能。

让我们看看下面的图片 enter image description here

目标服务器(绿色圆圈)

这是我用来获取一些数据的api服务器。

特点:

代理控制器(蓝色方块)

这是一个存储代理列表的简单服务器;发送和接收一些数据;我想谈谈我将在其上运行的软件。

特点:

  • 代理列表
  • Api键列表

如果我想扩展我的应用程序,我认为它应该是hashmap存储ip =>令牌列表或数据库表。

只需分析json响应并将数据传递给db。

让我们更接近代理控制器服务器。

第一个想法:

  • 创建newFixedThreadPoolExecutor
  • 将url / token传递给worker:server.submit(new Worker(url,token,proxy))
  • 工作人员分析数据并将其传递给db。

但在我看来,这个解决方案非常庞大且难以维护,我希望使用端点来收集统计数据,杀死或产生新工作人员等等。

第二个想法:

  1. 工作人员生成https://host/user=1&option=1
  2. 之类的请求
  3. 将其传递给代理控制器
  4. 代理控制器为请求分配api密钥和代理服务器
  5. 执行请求
  6. 接受回复
  7. 将其传递给工作人员(我认为最好的办法是在工作人员和代理控制器之间放置一个负载均衡器。)
  8. 这个解决方案在我看来相当hacky。例如,如果工作者已经死了,代理服务器会向死亡工作者发送大量请求,这可能会导致数据丢失。

    第三个想法:

    与第二个相同,但代理控制器不是直接向工作人员发送数据,而是将其传递给某个总线。我找到一些关于apache camel的信息,允许我组织这个解决方案。在这种情况下,死亡工人是死亡工人,数据等于零(可能)。

    当然,这三种情况都不能处理错误。通过使用其他数据重新发送请求可以解决一些错误。通过重新跨越工人可以解决一些错误。

    所以在您看来,这种情况下最好的解决方案是什么?我是否会错过以后可能出现的隐藏问题?我应该使用哪些工具?

    由于

1 个答案:

答案 0 :(得分:0)

试图达到什么目标? 也许你考虑使用这种架构: NGINX(代理+负载平衡) - >工作服务员 - > DB SERVER(可能使用像Cassandra这样的NoSQL)