首先,我有一个概念性的问题,"分布式"这个词只是指应用程序在多台机器上运行吗?还是说有其他方式可以将应用程序视为分布式(例如,如果有许多独立的模块在同一台机器上相互交互,这也算是分布式吗)。
其次,我想构建一个系统,执行四种类型的任务,会有多个客户端,每个客户端都有多个不同类型的任务需要定期运行。例如:今天客户1将拥有任务类型1,两天后他将获得任务类型2,可能会有客户2与客户1同时执行任务类型1。即需要并发处理。执行任务的配置将存储在数据库中,并且这些任务的结果也将存储在数据库中。客户端将使用Web浏览器(HTML页面)与系统进行交互(基本上是配置任务和查看结果)。我考虑使用Rest Webservice(使用JAX-RS),其中HTML页面将与之通信,后端使用线程进行并发执行。
问题:
1.听起来很简单,但我是否正在正确的方向上?或者我应该使用其他技术或概念,比如Java Beans?
2.如果我的方法是正确的,我是否需要使用像JSP这样的脚本语言,还是可以直接提交HTML表单到REST URL并获取结果(例如使用JSON)?
3.如果我想让应用程序分布式,是否可以使用我的想法?如果不行,我需要使用什么?
抱歉问题有点多,但我真的对此感到困惑。
其次,我想构建一个系统,执行四种类型的任务,会有多个客户端,每个客户端都有多个不同类型的任务需要定期运行。例如:今天客户1将拥有任务类型1,两天后他将获得任务类型2,可能会有客户2与客户1同时执行任务类型1。即需要并发处理。执行任务的配置将存储在数据库中,并且这些任务的结果也将存储在数据库中。客户端将使用Web浏览器(HTML页面)与系统进行交互(基本上是配置任务和查看结果)。我考虑使用Rest Webservice(使用JAX-RS),其中HTML页面将与之通信,后端使用线程进行并发执行。
问题:
1.听起来很简单,但我是否正在正确的方向上?或者我应该使用其他技术或概念,比如Java Beans?
2.如果我的方法是正确的,我是否需要使用像JSP这样的脚本语言,还是可以直接提交HTML表单到REST URL并获取结果(例如使用JSON)?
3.如果我想让应用程序分布式,是否可以使用我的想法?如果不行,我需要使用什么?
抱歉问题有点多,但我真的对此感到困惑。
task_type1
,task_type2
等任务会非常 CPU 密集吗?你已经进行了测试以确认吗?真的会有很多用户同时使用应用程序吗?也许单个服务器就可以很好地处理负载,分发应用程序只会使事情变得更加复杂,没有任何额外的好处。其次,不要假设你需要线程,因为“任务需要同时执行”。除非你需要利用多个 CPU,否则单个线程从工作队列中拉取任务可能就足够了。 - Alex D