Java 每秒钟调度一次Get Api调用与执行订户Api之间有什么区别?
我正在编写一个Java应用程序,当数据更改时,图像应该更改 我的同事要求我做一个调度程序,你必须每1秒调用一个GETAPI 我的建议是使用Pub-Sub,这样每当事件发生时,只更改数据 订阅服务器和计划程序是同一个吗 没有代码这不一样:Java 每秒钟调度一次Get Api调用与执行订户Api之间有什么区别?,java,scheduler,publish-subscribe,Java,Scheduler,Publish Subscribe,我正在编写一个Java应用程序,当数据更改时,图像应该更改 我的同事要求我做一个调度程序,你必须每1秒调用一个GETAPI 我的建议是使用Pub-Sub,这样每当事件发生时,只更改数据 订阅服务器和计划程序是同一个吗 没有代码这不一样: 调度器是指当您明确选择何时发出请求时。你可以每一秒、每一分钟或任何时间去做。每次创建新请求时 发布订阅是指创建到事件源的permatent连接,并在发布事件时使用它。这里没有多个请求,而是一个套接字连接 从理论上讲,发布/订阅是一个更好的选择 区别在于: 轮
- 调度器是指当您明确选择何时发出请求时。你可以每一秒、每一分钟或任何时间去做。每次创建新请求时
- 发布订阅是指创建到事件源的permatent连接,并在发布事件时使用它。这里没有多个请求,而是一个套接字连接
- 轮询是一种繁忙的等待,多个客户端会导致多余的网络流量。客户端处于活动状态
- 发布/订阅需要一个活动服务器,该服务器向所有订阅者发送推送通知。同时,在HTML5/JavaScript和java中有足够的支持。服务器处于活动状态
从理论上讲,发布/订阅是一个更好的选择 区别在于:
根据给定的回旋余地,并且出于架构研究的兴趣:对两种实现进行负载测试的原型就可以了。希望永存。当使用
GET
请求时,您每秒轮询一次数据,并验证数据是否已更改。使用“发布/订阅”时,您只会在数据更改时收到通知(您不需要手动检查)。第二种方法应该是首选的,因为网络和资源消耗较低。听起来你已经知道主要的区别了。调度(轮询)更简单,也更容易实现,因为客户机决定是否/何时需要数据,而服务器只是像往常一样响应请求。发布/订阅更为复杂,您需要额外的订阅/取消订阅调用,服务器需要跟踪所有订阅的客户端。@kapex很抱歉,没有主题。。在客户机/服务器架构上是否有用于发布/订阅实现的框架或库?@Ruslan有ApacheKafka和ApachePulsar。大多数MessageBroker框架也提供类似的功能。不过,这些都是企业规模,而且往往是矫枉过正。我确信还有更多我不知道的轻量级框架/库。许多服务器框架也已经集成了发布/订阅解决方案(例如,我认为Spring已经集成了JMS)。对于进程内发布/订阅,有像Guava EventBus这样的轻量级库。@kapex感谢您的详细解释。我现在已经不再适应HTML5了。在过去,有人谈论保持连接打开,让浏览器有一个允许推送通知的确认对话框。从理论上讲,浏览器可以有一个大部分被阻塞的线程,等待通知(最佳),或者进行定期轮询。在网上寻找更多更好的信息。