学习 go-micro 框架

本文介绍了在微服务开发中服务发现的重要性,重点讲解了使用Go-Micro和Consul进行服务发现的流程。包括每个server如何注册服务,client如何通过服务发现找到可用服务,以及Consul的安装、配置和使用。此外,还提到了健康检查和Go-Micro的安装步骤,最后展示了创建服务和检查服务健康状况的实践操作。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go-Micro 和 Go-Zero 都是 Go 语言领域中受欢迎的微服务框架,它们各自有不同的特点和适用场景。下面是它们的优缺点和受欢迎程度的概述: Go-Micro 框架的优点: 1. 社区活跃:Go-Micro 是一个开源项目,并且拥有活跃的社区支持,可以从社区中获取丰富的资源和支持。 2. 多语言支持:Go-Micro 提供了多语言支持,可以用于构建多语言之间的微服务应用。 3. 插件系统:Go-Micro 提供了插件系统,可以方便地扩展和定制功能。 4. 多种通信协议支持:Go-Micro 支持多种通信协议,包括 HTTP、gRPC、AMQP 等。 5. 高度可定制性:Go-Micro 提供了很高的可定制性,可以根据需求进行灵活配置和扩展。 Go-Micro 框架的缺点: 1. 上手难度较高:对于初学者来说,Go-Micro学习曲线可能相对陡峭,需要一些时间和经验来掌握和理解其概念。 2. 文档相对不完善:尽管有一些文档和示例可供参考,但相对来说,Go-Micro 的文档可能相对不够完善。 Go-Zero 框架的优点: 1. 简单易用:Go-Zero 的设计目标是简化开发流程和提高开发效率,提供了简洁易用的 API 和工具,使得开发者能够快速上手并构建稳定可靠的微服务应用。 2. 高性能:Go-Zero 采用了一系列优化策略,包括代码生成、缓存、连接池等,以提供高性能的微服务框架。 3. 内置功能丰富:Go-Zero 提供了许多内置功能,例如日志、配置、错误处理、中间件等,可以帮助开发者更快速地构建微服务应用。 4. 兼容性强:Go-Zero 支持多种传输协议和数据格式,包括 HTTP、gRPC、JSON 等,并且可以与其他框架和组件进行无缝集成。 Go-Zero 框架的缺点: 1. 相对较新:Go-Zero 是一个相对较新的框架,与一些其他框架相比,可能还没有得到广泛的应用和验证。 2. 社区相对较小:相对于一些其他流行的框架,Go-Zero 的社区规模可能相对较小,获取支持和资源可能相对有限。 关于哪个框架使用的人更多,这取决于具体的使用场景、个人偏好和团队需求。目前来说,Go-Micro 可能更受欢迎一些,因为它具有更长时间的发展历史和更大的社区规模。但是随着 Go-Zero 的不断发展和改进,它也在逐渐受到更多人的关注和使用。最终选择哪个框架,建议根据项目需求、团队经验和个人偏好进行评估和选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值