go 教程:使用 go-380玩彩网官网入口
微服务是软件架构领域目前最流行的术语之一。
对于『微服务』一词,有许多不同的解释,我想说的是,微服务是单个程序员可以设计、实现、部署和维护的应用程序。
在一个整体应用程序中,组件通过语言级的方法或函数彼此调用。相反,基于微服务的应用程序是运行在多台机器上的分布式系统。每个服务实例是不同的进程。因此,这些服务必须使用进程间通讯进行交互。
服务间通信最简单的380玩彩网官网入口的解决方案是基于 http 协议使用 json 格式的数据进行交互,然后还有更多的选择比如:grpc,pub/sub等等。
这听起来很酷,微服务也带来了很多挑战:
- 序列化
- 日志记录
- 熔断
- 请求跟踪
- 服务发现
如果你是一个 go 开发者,go-kit 为开发者提供了一套抽象,包和接口,这样你实现的服务就可以标准化。
我想开始一个使用 go-kit 工具的深入教程。我们将创建一个微服务系统,设置环境,重温服务件交互的逻辑。
我们将用以下几个微服务创建一个 bug 追踪系统:
- users
- bugs
- notificator
有些服务可以通过 http 协议使用 json 数据交互,服务间通信将使用 grpc 实现。
go-kit 回顾
我们已经理解go-kit 并不是框架,我们可以用工具kit为 go 创建微服务,包含包和接口,它类似于java spring boot ,但是只是小范围。
让我们开始配置项目:
在我们未开始之前,我们可以使用“kitgen”命令行工具生成服务
go-kit cli
创建独立的包可从模板创建服务:
go get github.com/go-kit/kit
go get github.com/kujtimiihoxha/kit
创建以下服务:
kit new service users
kit new service bugs
kit new service notificator
这些命令将生成初始的文件夹结构和服务接口。接口默认为空,让我们定义接口中的函数。从创建用户函数开始。
users:
package service
import "context"
// 用户服务
type usersservice interface {
create(ctx context.context, email string) error
}
bugs:
package service
import "context"
// bug服务
type bugsservice interface {
// 在这里添加你自己的方法
create(ctx context.context, bug string) error
}
notifcator:
package service
import "context"
// 通知服务
type notificatorservice interface {
// 在这里添加你自己的方法
sendemail(ctx context.context, email string, content string) error
}
然后我们需要运行一个命令生成一个服务,这个命令将创建服务模板,服务中间件和终端代码。同时它还创建了一个 cmd/
包来运行380玩彩网官网入口的服务。
kit generate service users --dmw
kit generate service bugs --dmw
-dmw 参数创建默认的终端中间件和日志中间件。
这个命令已经将 go-kit 工具的端点包和 http 传输包添加到我们的代码中。现在我们只需要在任意一个位置实现我们的业务代码就可以了。
我们将在下一篇文章中继续讨论业务逻辑。
因为通知服务是一个内部服务,所以不需要 rest api,我们用 grpc 来实现它。grpc 是谷歌的 rpc 框架,如果你以前从未使用过,请看。
为此,我们需要先安装 protoc
和 protobuf
。
kit generate service notificator -t grpc --dmw
这同时生成了 .pb
文件,我们将在下一篇文章中去解决它。
go-kit cli 还可以创建 docker-compose
模板,让我们试一试。
kit generate docker
这个命令生成了 dockerfile
和带有端口映射的 docker-compose.yml
。将它运行起来并调用 /create
接口 。
docker-compose up
dockerfiles 使用了 go 的 watcher
包,如果 go 代码发生了变化,它会更新并重启二进制文件,这在本地环境中非常方便。
现在380玩彩网官网入口的服务运行的端口是8800,8801,8802。可以试着调用用户服务:
curl -xpost http://localhost:8800/create -d '{"email": "test"}'
结论
我们还没有实现服务,但是在短时间内搭建了一个良好的本地环境,同时用 docker
封装好了, 可以部署到其他的环境中。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 cc 协议,如果我们的工作有侵犯到您的权益,请及时联系380玩彩网官网入口。
原文地址:
运行 docker-compose up 之后一直报错,这步不知怎么解决,可以指导一下吗?