对Riak Core的探索 (六) HTTP接口
对Riak Core的探索 (6)HTTP接口haogongju,人人IT网,360doc不要抄我的烂博客了,私人备忘用。 haogongju、人人
对Riak Core的探索 (6) HTTP接口
haogongju,人人IT网,360doc不要抄我的烂博客了,私人备忘用。
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。
我们需要了解系统的一些状态,比如,对riak这个NoSQL来说,我们需要了解bucket的当前存储状态。有时候也需要直接访问某个存储对象。这都可以通过HTTP和其他接口访问,HTTP是Riak Core提供最直接最方便的对外访问接口。
Riak Core通过webmachine实现对外提供HTTP/HTTPS访问接口。具体实现是riak_core_web模块,该模块非常简单对外提供了一个binding/1函数:返回了webmachine_mochiweb及其启动参数,也就是supervisor的child进程启动参数:
举个例子,对于riak这个NoSQL KV来说,riak_kv基于webmachine提供相关的HTTP访问接口(在riak_kv应用配置文件的applications属性,在riak_kv启动时会先确保这个属性列表值里的所有应用都已启动),riak_kv在启动时(riak_kv_app:start/2)通过webmachine_router:add_route/1将这些HTTP接口(riak_kv提供的web资源)注入到webmachine,如前所述,实际上是webmachine应用的环境变量dispatch_list,riak_core_wm_urlmap资源会将这些web资源显示出来。
顺便说一句,riak_kv的这些HTTP接口(每个接口其实是一个webmachine web资源)是在riak_kv_web中定义的,riak_kv_app:start/2函数通过这个模块获得这些web资源列表,riak_kv_web:dispatch_table/0函数为riak_kv提供了一个dispatch列表,这里列表中的web资源模块有统一的命名规则,都是riak_kv_wm_起头。
综上所述:通过webmachine_router:add_route/1添加web资源时,会自动将web资源添加到webmachine应用维护的一个内部变量中。riak_core提供了一个缺省web资源(riak_core_wm_urlmap),它会将这个变量中保存的路由表(或者说diapatch list)以列表的形式显示出来。