学习 go-micro 框架

go-micro 学习

服务发现-微服务开发中的核心

有服务发现后,client、server工作流程

  1. 每个server启动时,都将自己的ip、port和服务名注册给“服务发现”
  2. 当client向服务发现发起服务请求时,“服务发现”会自动找一个可以用的服务。将其IP/port服务名返回给client。
  3. client再借助服务发现,访问server。

服务发现的种类:
consul:常用语go-micro中。
mdns:go-mirco中默认自带的服务发现。
etcd:k8s内嵌的服务发现。
consul关键特性
1、服务发现:consul提供服务,服务端主动向consul发起注册。
2、健康检查:定时发送消息,类似于“心跳包”。

安装consul
下载链接
安装分三步,下载,解压,解压文件放到/usr/loacl/bin/目录下,安装完成。
使用 consul -h验证安装

consul angent
-bind=0.0.0.0 指定consul 所在机器的IP地址默认的就是0.0.0.0
-http-port=8500 consul 自带的一个web访问的默认端口
-client=127.0.0.1 表明哪些机器可以访问consul 0.0.0.0 所有机器都可以访问
-config-dir=foo 所有主动注册服务的描述信息
-data-dir=path 储存所有注册过来的srv机器他的详细信息
-dev 开发者模式,直接以默认模式启动
-node=hostname 服务发现的名字。
-rejoin consul启动的时候,加入到consul集群。
-server 以服务方式开启consul,允许其他的consul连接到开启的consul上(形成集群)。如果不加- server,表示以“客户端的方式开启。不能被连接。
-ui web页面访问操作

命令demo

consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=n1 -bind=192.168.10.106 -ui -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0

问题在于 我的环境没有/etc/consul.d/我只能自己创建一个,还不知道有啥问题。主要是我的机器的权限,很难搞……

consul agent -data-dir /tmp/consul -node=n2 -bind=192.168.10.106 -config-dir /etc/consul.d -rejoin -join 192.168.10.106

关闭consul
1、consul leave

修改配置文件

cd /etc/consul.d
vi web.json

写入–下边

{"service": {
    "name": "MobenServer",
    "tags": ["moben1","moben2"],
    "port": 8800
	}
}

保存退出

vi web.json 全面参数
{"service": {
    "name": "MobenServer",
    "tags": ["moben1", "moben2", "moben3", "moben4"],
    "address": "192.168.10.106",
    "port": 8800,
    "check": {
        "id": "api",
        "name": "HTTP API on port 8800",
        "http": "http://localhost:8800",
        "interval": "10s",
        "timeout": "1s"
        }
   }
}

执行命令

consul reload

或者关闭重启动
打开浏览器,键入192.168.10.106:8500查看 MobenServer的健康情况
除了上述情况检查一晚可以使用脚本或者tcp,ttl等方式检查。

安装 go-micro

#安装go-micro
go get -u -v github.com/micro/go-micro
#安装工具集
go get -u -v github.com/micro/micro
#安装protobuf插件
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u github.com/micro/protoc-gen-micro

mac 安装 go-micro 好多坑

GO111MODULE=on go get github.com/micro/micro/v2@latest
cd $GOPATH/src
git clone https://github.com/micro/micro.git
cd micro
go install
micro --version #可查看结果

开始创建服务

micro new --type "service" bj38 #版本补一下就命令不一样,所以多查查 mocro new --help
打开项目 从makefile找到命令
cd proto 
protoc --micro_out=. --go_out=. bj38.proto

在这里插入图片描述

bug

`go build github.com/lucas-clemente/quic-go/internal/qtls: build constraints exclude all Go files in /Users/muyadong/go/pkg/mod/github.com/lucas-clemente/quic-go@v0.23.0/internal/qtls`

解决方法:
参考
原因
目录中存在大量c文件,因为没有开启CGO机制,所以编译失败,导致出错。
解决方案
在保证本地有c编译器可用时,执行下面语句开启CGO机制。

go env -w CGO_ENABLED=1

版权声明:本文为qq_42717902原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>