Go-MOA

RPC 框架
授权协议 未知
开发语言 Google Go
所属分类 Web应用开发、 RPC/XMLRPC项目
软件类型 开源软件
地区 国产
投 递 者 施洛城
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Go-MOA 是使用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:"hosts"`
            Uri   string   `json:"uri"`
        }
    
        type IGoMoaDemo interface {
            GetDemoName(serviceUri, proto string) (DemoResult, error)
        }
        //服务实现
        type GoMoaDemo struct {
        }
    
        func (self GoMoaDemo) GetDemoName(serviceUri, proto string) (DemoResult, error)      {
            return DemoResult{[]string{"fuck gfw"}, serviceUri}, nil
        }
    • 例如接口为:

  • 服务端启动启动:

        func main(){
            app := core.NewApplcation("./conf/cluster_test.toml", 
            func() []proxy.Service {
                return []proxy.Service{
                    proxy.Service{
                        ServiceUri: "/service/bibi/go-moa",
                        Instance:   GoMoaDemo{},
                        Interface:  (*IGoMoaDemo)(nil)}}
            })
    
            //设置启动项
            ch := make(chan os.Signal, 1)
            signal.Notify(ch, os.Kill)
            //kill掉的server
            <-ch
            app.DestoryApplication()
        }
  • 说明

    • Service为一个服务单元,对应了本服务对外的服务名称、以及对应的接口

    • Applcation需要对应的Moa的配置文件,toml类型,具体配置参见./conf/cluster_test.toml

  • 发布服务成功可以使用客户端进行测试,具体客户端的使用请参考

*** Benchmark

env:Macbook Pro 2.2 GHz Intel Core i7

go test --bench=".*" github.com/blackbeans/go-moa/core -run=BenchmarkApplication

BenchmarkApplication-8     20000         64517 ns/op
  • 写此文章的原因: ubuntu默认源使用apt安装的golang版本默认为1.6,而beego框架则基于1.7; deepin默认源使用apt安装的golang版本默认为1.8,但是安装beego、bee则提示没权限,即便使用sudo虽然不提示没权限,但依然安装失败。 每次更换系统go环境要寻找解决方案、配置许久,我索性记录一下golang1.11.2(当前最新版本)、beego、bee的正确安装

 相关资料
  • 问题内容: 我正在使用Go gin框架Go gin 我有状态码:200,但是在OPTIONS请求之后什么也没有发生。好像我错过了什么,但我不明白我在哪里错了。 有谁能够帮我? 问题答案: FWIW,这是我的CORS中间件,可满足我的需求。

  • 本页面主要用于 Golang Echo 框架官方首页的汉化,作为中文版的Echo的使用介绍。

  • 把vue/react打包进框架里编译成可执行文件,在服务器上就不用装nodejs了

  • 问题内容: 例如,如何使用CoreGraphics和CoreFoundation在macOS上操纵屏幕和处理数据。 问题答案: 假设我们要使用CoreGraphics和CoreFoundation捕获屏幕并获取图像数据:

  • 你们使用Go开发应用,是使用那个框架,有用GoFly快速开发框架吗?

  • Go!

    Go! 是一个 PHP 5.4 库,让 PHP 支持 AOP 面向方面编程方法,无需 PECL 扩展、Runkit、evals 或者 DI 容器支持。可使用 XDebug 轻松调试。 示例代码: // Aspect/MonitorAspect.phpnamespace Aspect;use Go\Aop\Aspect;use Go\Aop\Intercept\FieldAccess;use Go\

  • 命令go vet是一个用于检查Go语言源码中静态错误的简单工具。与大多数Go命令一样,go vet命令可以接受-n标记和-x标记。-n标记用于只打印流程中执行的命令而不真正执行它们。-n标记也用于打印流程中执行的命令,但不会取消这些命令的执行。示例如下: hc@ubt:~$ go vet -n pkgtool /usr/local/go/pkg/tool/linux_386/vet golang/

  • 命令go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。这里所说的版本即Go语言的版本。代码包的所有Go语言源码文件不包括其子代码包(如果有的话)中的文件。修正操作包括把对旧程序调用的代码更换为对新程序调用的代码、把旧的语法更换为新的语法,等等。 这个工具其实非常有用。在编程语言的升级和演进的过程中,难免会对过时的和不够优秀的语法及标准库进行改进。这样的改进对于编程语