作为一个rubyist,我决定采用erlang来获得高性能,可靠的后端.设置非常简单:获取发布请求,将内容写入redis,返回统计信息.所有的json.这也是为什么我非常关心每秒的请求.
选择的工具:webmachine,瞬间对JSON编码/解码,poolboy用于连接池,并且eredis为redis的通信.
机器使用:macbook pro,i5 2.4Ghz,8GB内存.
我的erlang每秒大约有5000个请求,jruby/torqbox大约有12,0000个.(在这里查看完整的ruby性能测试设置)
我意识到我可以在erlang中使用ets来节省时间,并且在响应之后留下用于"后台处理"的redis,但这将没有什么影响.甚至是对'你好世界'背后的二郎腿的简单测试.
有什么建议?我做错了吗?
EWGI和Webmachine都在Erlang中提供HTTP的抽象.我想知道他们的方法中的关键概念差异是什么?
Mochiweb和webmachine是非常有前途的应用程序,当你看到那些发现他们周围的人正在使用它时.我需要被引导到我可以在mochiweb上找到初学者的教程.似乎没有专门用于该框架的网站.我认为我需要的是一个pdf,一个博客网站或mochiweb的教程,提供了几个如何使用它的例子.我已经是一名二郎程序员,使用氮气,雅司病,Mnesia和OTP等请告诉我方式......
将https与webmachine一起使用的推荐方法是什么?
我看到有一个让mochiweb 使用https和http的例子.我似乎可以将其转换为webmachine.特别是如何在一个应用程序中处理http和https请求.
我一直在思考我的Webmachine应用程序中的Redis使用问题一周.我还没有开悟.
我将使用Eredis,这是一个用法示例:
{ok, Con} = eredis:start_link().
{ok, <<"OK">>} = eredis:q(Con, ["SET", "foo", "bar"]).
{ok, <<"bar">>} = eredis:q(Con, ["GET", "foo"]).
Run Code Online (Sandbox Code Playgroud)
据我所知,eredis:start_link()应该只在某处召唤一次.但那我怎么能Con在我的资源中变量呢?
是的,主观的问题.但是这里有很多这样的问题得到了很好的答案.所以现在我必须尝试使用Erlang开发一些REST API,因为我从google获得了我必须安装一些网络服务器,例如Cowboy,Webmachine,Yaws,Mociweb.但是我能找到的所有信息都太旧了,似乎不是真实的.那么服务器仍在继续开发,我该如何为我选择?我这样错了吗?
我阅读并重新阅读了文档和教程,但是我对如何创建Erlang应用程序和Rebar的理解仍然有足够的洞来像瑞士奶酪.非常简单的东西会让我失望.
我正在努力开发一个Erlang版本,最终将包括我自己的几个应用程序以及Webmachine,也许还有一个或者另一个版本的nosql db.使用Rebar我已经成功编译并测试了我的应用程序:ZZZ和ZZZ_Lib.我的目录结构如下所示.我不相信它是最佳的,但它确实有效.
我已经在... learn1/apps目录下安装了Webmachine.
我的下一步是将Webmachine与名为test_resource:erl的下面显示的非常简单的webmachine_demo_resource集成.
http://webmachine.basho.com/example_resources.html
但是当我尝试编译时,我收到此错误消息:
src/test_resource.erl:3:找不到包含lib"webmachine/include/webmachine.hrl"
这是test_resource.erl中的违规行:
-include_lib("webmachine/include/webmachine.hrl").
Run Code Online (Sandbox Code Playgroud)
我试图设置ERL_LIBS(我不完全理解)和PATH都没有成功.所以,显然,我不明白如何设置正确的路径或如何最好地集成Webmachine.
欢迎任何和所有指导.
LRP
*目录结构
learn1 $ ls apps rebar rebar.config
learn1/apps $ ls webmachine zzz zzz_lib
learn1/apps/zzz_lib/src $ ls yada yada test_resource.erl yada yada
* rebar.config
{sub_dirs,
["apps/zzz",
"apps/zzz/src",
"apps/zzz_lib",
"apps/zzz_lib/src"
]
}.
Run Code Online (Sandbox Code Playgroud)
* zzz_lib.app.src
{application, zzz_lib,
[
{description, ""},
{vsn, "1"},
{modules, [
yada yada
]},
{applications, [
kernel,
stdlib,
webmachine
]},
{mod, { zzz_lib_app, []}},
{env, []}
]}.
Run Code Online (Sandbox Code Playgroud)