Go-MOA RPC 框架 Go-MOA

agolangf • 2336 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
Go-MOA 是使用[ redis ](http://www.oschina.net/p/redis) get请求协议的RPC 框架。 #### MOA Server使用方式 * 安装: 安装ZooKeeper $Zookeeper/bin/zkServer.sh start go get  github.com/blackbeans/go-moa/core go get  github.com/blackbeans/go-moa/proxy * 定义服务的接口对应     //接口     type DemoResult struct {         Hosts []string `json:&#34;hosts&#34;`         Uri   string   `json:&#34;uri&#34;`     }     type IGoMoaDemo interface {         GetDemoName(serviceUri, proto string) (DemoResult, error)     }     //服务实现     type GoMoaDemo struct {     }     func (self GoMoaDemo) GetDemoName(serviceUri, proto string) (DemoResult, error)      {         return DemoResult{[]string{&#34;fuck gfw&#34;}, serviceUri}, nil     } * 例如接口为: 服务端启动启动:     func main(){         app := core.NewApplcation(&#34;./conf/cluster_test.toml&#34;,          func() []proxy.Service {             return []proxy.Service{                 proxy.Service{                     ServiceUri: &#34;/service/bibi/go-moa&#34;,                     Instance:   GoMoaDemo{},                     Interface:  (*IGoMoaDemo)(nil)}}         })         //设置启动项         ch := make(chan os.Signal, 1)         signal.Notify(ch, os.Kill)         //kill掉的server         &lt;-ch         app.DestoryApplication()     } 说明 * Service为一个服务单元,对应了本服务对外的服务名称、以及对应的接口 * Applcation需要对应的Moa的配置文件,toml类型,具体配置参见./conf/cluster_test.toml 发布服务成功可以使用客户端进行测试,具体[客户端的使用请参考](http://github.com/blackbeans/go-moa-client/blob/master/README.md) *** Benchmark <pre class="brush:cpp ;toolbar: true; auto-links: false;">env:Macbook Pro 2.2 GHz Intel Core i7 go test --bench=&#34;.*&#34; github.com/blackbeans/go-moa/core -run=BenchmarkApplication BenchmarkApplication-8     20000         64517 ns/op</pre> 安装ZooKeeper $Zookeeper/bin/zkServer.sh start <pre class="brush:cpp ;toolbar: true; auto-links: false;">go get  github.com/blackbeans/go-moa/core go get  github.com/blackbeans/go-moa/proxy</pre> <pre class="brush:cpp ;toolbar: true; auto-links: false;">    //接口     type DemoResult struct {         Hosts []string `json:&#34;hosts&#34;`         Uri   string   `json:&#34;uri&#34;`     }     type IGoMoaDemo interface {         GetDemoName(serviceUri, proto string) (DemoResult, error)     }     //服务实现     type GoMoaDemo struct {     }     func (self GoMoaDemo) GetDemoName(serviceUri, proto string) (DemoResult, error)      {         return DemoResult{[]string{&#34;fuck gfw&#34;}, serviceUri}, nil     }</pre> <pre class="brush:cpp ;toolbar: true; auto-links: false;">    func main(){         app := core.NewApplcation(&#34;./conf/cluster_test.toml&#34;,          func() []proxy.Service {             return []proxy.Service{                 proxy.Service{                     ServiceUri: &#34;/service/bibi/go-moa&#34;,                     Instance:   GoMoaDemo{},                     Interface:  (*IGoMoaDemo)(nil)}}         })         //设置启动项         ch := make(chan os.Signal, 1)         signal.Notify(ch, os.Kill)         //kill掉的server         &lt;-ch         app.DestoryApplication()     }</pre>
授权协议:
其他
开发语言:
Google Go 查看源码»
操作系统:
跨平台
2336 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传