Go微服务--常见的微服务框架

Python018

Go微服务--常见的微服务框架,第1张

近几年诞生了很多微服务框架,比如JAVA的Spring Cloud、DubboGolang的GoKit和GoMicro以及NodeJs的Seneca。几乎每种主流语言都有其对应的微服务框架。

Go在微服务框架中有其独特的优势,至于优势在哪,自行google。

1、GoKit框架

这是一个工具包的集合,可以帮助攻城狮构建强大、可靠和可维护的微服务。提供了用于实现系统监控和弹性模式组件的库,例如日志、跟踪、限流、熔断等。

基于这个框架的应用程序架构由三个主要的部分组成:

传输层:用于网络通信,服务通常使用HTTP或者gRPC等网络传输协议,或者使用NATS等发布订阅系统相互通信。

接口层:是服务器和客户端的基本构建块。每个对外提供的接口方法都会定义为一个Endpoint,一遍在服务器和客户端之间进行网络通信,每个端点使用传输层通过HTTP或gRPC等具体通信模式对外提供服务

服务成:具体的业务逻辑实现

2、GoMicro框架

这是一个基于Go语言实现的插件化RPC微服务框架。提供了服务发现、负载均衡、同步传输、异步通信以及事件驱动等机制,尝试简化分布式系统之间的通信,让开发者更专注于自身业务逻辑的开发。

GoMicro的设计哲学是可插拔的架构理念,提供了可快速构建系统的组件,并且可以根据自身的需求对GoMicro提供的默认实现进行定制。所有插件都可在仓库github.com/micro/go-plugins 中找到。

本项目旨在使用golang 搭建一个微服务应用。

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

gin做api和rpc的客户端 go-micro作为后台微服务

···

// gin

Frame

- app // 控制器

- conf // 配置文件

- middleward // 中间件

- models // 模型

- routes // 路由

- services // 服务层

- uitl // 工具

- main.go // 入口

// app 目录

app

- api

- v1

- goods.go

- v2

- route.go

- app.go

//conf目录

conf

- config.ini

models

- models.go

services

- xxxService.go

util

- config.go

···

首先保证 Git 和 Go 已经安装成功。可以参考:

其次配置好 GOPATH 环境变量。

Go Micro 是基于 Go 语言用于开发的微服务的 RPC 框架,它是 Micro 的基础,执行下面当命令安装:

核心是 gogetgithub.com/micro/go-micro,但一些包需预先安装好(由于网络或映射原因)。

Protocol Buffers (a.k.a., protobuf) 是 Google 的数据交换格式。 在 https://github.com/protocolbuffers/protobuf/releases 下载安装源码,编译安装。本文选择的 cpp 的版本:

还需要安装 Go 对 Protobuf 的支持,和 Protobuf 代码生成器:

Micro 用于提供构建微服务的关键元素集合。

时间会比较久。

至此一个基本的 Go Micro 环境就安装完毕。

官方网站给了一个测试用例,我们先体验一下:

先安装官方测试案例 srv:

安装完成后,会在 $GOPATH/bin 下生成 srv 执行文件,启动他。本文已经将 $GOPATH/bin 设置到环境变量 path 中。

通过命令查看当前运行的微服务实例:

调用微服务:

得到以上结果,表示 Go Micro 的相关产品安装完毕!