以下两个链接似乎相互矛盾.我很快就会信任这些文档:
默认情况下,服务器上的请求处理在同步处理模式下有效
它已经是多线程的.
我的问题:
哪个是对的.可以同步和多线程吗?
为什么文档会说以下内容?:
如果已知资源方法执行需要很长时间来计算结果,则应使用服务器端异步处理模型
如果文档是正确的,为什么默认操作是同步的?对于用户体验,默认情况下,所有请求在客户端javascript上都是异步的,因此服务器端的默认操作也应该是异步的.
如果客户端不需要按特定顺序提供请求,那么谁在乎操作的"昂贵".不应该所有操作都只是异步吗?
我正在尝试创建Java用于查询的通用方法hbase。
我目前有一篇写有3个论点的书
Range(扫描表)Column(要退货)...和Condition(即browser==Chrome)因此,一条语句(如果使用SQLish语言编写)可能看起来像
SELECT OS FROM TABLE WHERE BROWSER==CHROME IN RANGE (5 WEEKS AGO -> 2 WEEKS AGO)
Run Code Online (Sandbox Code Playgroud)
现在,我知道我没有HBase正确使用(对rowkey使用常见的列查询等),但是为了进行实验,我想尝试一下以帮助我学习。
因此,我要做的第一件事是在Range上设置Scan。(5周到2周前),由于rowkey是timestamp,因此非常有效。
然后设置一个SingleColumnValueFilter(browser = Chrome)(在范围过滤器之后,这非常快)
然后,将所有rowkeys(来自扫描)存储到array。
对于每个rowkey(在数组中),我执行一个GET操作以获取对应的OS。
我尝试使用MultiGet,这大大加快了过程。
然后GET,我尝试使用普通请求,每个请求都产生一个新线程,这些线程同时运行,从而将查询时间减少了一半!但是仍然不够快。
我考虑过使用与数据库的单个连接来限制线程数。即-每个连接100个线程。
考虑到我的情况,执行这些GETs 的最有效方法是什么,还是我完全不正确地采用它?
任何帮助深表感谢。
编辑(这是我的线程GET尝试)
List<String> …Run Code Online (Sandbox Code Playgroud)