go-micro调研

go-micro

https://github.com/micro/go-micro

Micro是一个用来简化微服务开发的框架,它为开发分布式应用程序提供了基本的构建模块。

提供的主要软件是Micro,一个微服务工具包,包含以下组件:
Go Micro - 基于Golang的插件式RPC框架,提供服务发现,客户端负载均衡,编码,同步和异步通讯功能。
API - API Gateway(API 网关), 用来提供处理http请求。
Sidecar - 用来接入其他语言编写的应用到Micro中。
Web - 提供一个web dashboard,并且可以为Micro应用提供反向代理。
CLI - 用来跟Micro服务交互的命令行工具。
Bot - 用它我们可以在我们的服务中与Slack, HipChat, XMPP通讯。

Go-Mirco是一个独立的库,可以独立于其他工具包使用。

由于Micro的服务发现并没有自己实现,仅仅是提供Plugin来接入第三方服务发现(consul, etcd), 默认使用的是consule

demo

  1. 创建服务
    micro new [service]
    生成的服务会被放到$GOPATH的相对目录下
example/ 
  Dockerfile  # A template docker file 
  README.md   # A readme with command used 
  handler/    # Example rpc handler 
  main.go     # The main Go program 
  proto/      # Protobuf directory 
  subscriber/ # Example pubsub Subscriber

  1. 创建一个proto文件
syntax = "proto3";

service HelloWorld {
    rpc Hello(HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
    string name = 1;
}

message HelloResponse {
    string greeting = 2;
}
  1. 编译:protoc --go_out=plugins=micro:. hello_world.proto
  2. 生成服务
package main

import (
    "fmt"
    "leaning01/hello_world" // import proto生成的类
    "github.com/micro/go-micro"
    "golang.org/x/net/context"
)

type HelloWorld struct{}

func (g *HelloWorld) Hello(ctx context.Context, req *hello_world.HelloRequest, rsp *hello_world.HelloResponse) error {
    rsp.Greeting = "Hello World: " + req.Name
    return nil
} // 实现hello_world service中Hello方法

func main() {
    service := micro.NewService(
        micro.Name("hello_world"), // 定义service的名称为hello_world
        micro.Version("latest"),
        micro.Metadata(map[string]string{
            "type": "helloworld",
        }),
    )

    service.Init() // 初始化service

    hello_world.RegisterHelloWorldHandler(service.Server(), new(HelloWorld)) // 注册服务

    if err := service.Run(); err != nil {
        fmt.Println(err)
    } // 运行服务
}
  1. http请求访问:
    启动 micro web
    micro 自带了一个控制台 ,可以查看所有服务和接口
    http://localhost:8082/
    在 micro web页面 打开检查 然后在network下面拿到 刚刚的rpc 连接 然后 copy
    用post方法 设置下面参数进行访问

      //例:
          url:http://localhost:8082/rpc
          headers:Content-type: application/json
          body:{“service”:”mymicro”,”method”:”TestUser.GetUser”,”request”:{}}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值