Asynchronous 爬虫设计-调用异步作业与调用服务
我在看。 爬网程序服务处理新爬网的url,然后:Asynchronous 爬虫设计-调用异步作业与调用服务,asynchronous,architecture,microservices,jobs,system-design,Asynchronous,Architecture,Microservices,Jobs,System Design,我在看。 爬网程序服务处理新爬网的url,然后: 向反向索引服务队列添加作业,以生成反向索引 将作业添加到文档服务队列以生成静态标题和代码段 如果爬虫服务将同步调用这两个服务,会发生什么情况?我仍然能够根据每个服务上的负载水平扩展所有3个服务,对吗?在我看来,一个可能的原因是,如果其中一个出现故障,那么流控制会更加复杂。这些异步作业还有其他更令人信服的原因吗?这种设计选择背后可能有更多的原因,但其中一个原因几乎可以肯定是使用。这是一种很流行的技术,因此演示对它的掌握是回答设计问题的一个好主意
- 向反向索引服务队列添加作业,以生成反向索引
- 将作业添加到文档服务队列以生成静态标题和代码段
如果爬虫服务将同步调用这两个服务,会发生什么情况?我仍然能够根据每个服务上的负载水平扩展所有3个服务,对吗?在我看来,一个可能的原因是,如果其中一个出现故障,那么流控制会更加复杂。这些异步作业还有其他更令人信服的原因吗?这种设计选择背后可能有更多的原因,但其中一个原因几乎可以肯定是使用。这是一种很流行的技术,因此演示对它的掌握是回答设计问题的一个好主意,它的好处在维基百科上有很好的描述:
- 模块化:这使应用程序更易于理解、开发、测试,并对架构侵蚀具有更强的恢复能力。[6]与单片架构的复杂性相比,这一优势常常被认为是有道理的。[33]
- 可伸缩性:由于微服务是相互独立地实现和部署的,即它们在独立的流程中运行,因此可以独立地对它们进行监控和伸缩。[34]
- 异构系统和遗留系统的集成:微服务被认为是现有单片软件应用程序现代化的可行手段。[35][36]有几家公司的经验报告,他们已经成功地用微服务替换了现有软件的(部分),或者正在这样做。[37]遗留应用程序的软件现代化过程是使用增量方法完成的。[38]
- 分布式开发:它使小型自主团队能够独立开发、部署和扩展各自的服务,从而使开发并行化。[39]它还允许通过不断重构形成单个服务的体系结构。[40]基于微服务的体系结构有助于持续集成,持续交付和部署。[41][42]
本页还介绍了对该技术的批评。选择这种设计可能有更多的原因,但其中一个原因几乎可以肯定是使用了。这是一种很流行的技术,因此演示对它的掌握是回答设计问题的一个好主意,它的好处在维基百科上有很好的描述:
- 模块化:这使应用程序更易于理解、开发、测试,并对架构侵蚀具有更强的恢复能力。[6]与单片架构的复杂性相比,这一优势常常被认为是有道理的。[33]
- 可伸缩性:由于微服务是相互独立地实现和部署的,即它们在独立的流程中运行,因此可以独立地对它们进行监控和伸缩。[34]
- 异构系统和遗留系统的集成:微服务被认为是现有单片软件应用程序现代化的可行手段。[35][36]有几家公司的经验报告,他们已经成功地用微服务替换了现有软件的(部分),或者正在这样做。[37]遗留应用程序的软件现代化过程是使用增量方法完成的。[38]
- 分布式开发:它使小型自主团队能够独立开发、部署和扩展各自的服务,从而使开发并行化。[39]它还允许通过不断重构形成单个服务的体系结构。[40]基于微服务的体系结构有助于持续集成,持续交付和部署。[41][42]