Go-Micro微服务框架

什么是 Micro ?

Micro 是一个着眼于分布式系统开发的微服务生态系统。

Micro是开源的

Micro由开源的库与工具组成,旨在辅助微服务开发。

  • go-micro - 基于Go语言的可插拔RPC微服务开发框架;包含服务发现、RPC客户/服务端、广播/订阅机制等等。
  • go-plugins - go-micro的插件有etcd、kubernetes、nats、rabbitmq、grpc等等。
  • micro - 微服务工具集包含传统的入口点(entry point);API 网关、CLI、Slack Bot、代理及Web UI。

还有其它相关的库和服务可以参考 github.com/micro

该从何入手

可以先从go-micro入手。 readme文档里提供了一个demo微服务示例。

如果要了解更多的资源可以查阅开始入门 ,或者签出示例源码。

可以通过micro工具集的cli,web ui,slack,或者api网关(api gateway)来访问操控务

如何才能使用micro

其实非常简单

  1. 使用go-micro编写服务。
  2. 使用micro工具集来访问这些服务。

你可以签出我们在github上的简易Greeter示例。

除了Consul,可以使用其它的注册中心吗

当然是可以的,服务的注册发现的实现机制是可插拔的,之所以使用Consul是因为它拥有的特性以及它足够简单。 比如:

 

Etcd

如果你想使用etcd那你只需要引用etcd包,然后在启动的注册方式上标明使用的是etcd就行了。

import (
        _ "github.com/micro/go-plugins/registry/etcd"
)

service --registry=etcd --registry_address=127.0.0.1:2379

零依赖

micro专门为零依赖配置内置有一个多路广播DNS服务注册中心。

如果要使用,只需要在程序启动指令上传上--registry=mdns或者MICRO_REGISTRY=mdns

 

Micro可以在哪些环境运行

micro对运行环境不挑食。只要你喜欢,在哪都行,裸机, 亚马逊AWS或者Google Cloud,也可以运行在你喜欢的容器编排系统中比如:Mesos、Kubernetes。

右边的这个链接中有关于如何使用K8s来开发micro服务的micro kubernetes demo

API、Web、SRV 服务之间的区别是什么

 

 

 

 

API、Web、SRV作为micro工具集的一部分,我们尝试着使用一些设计模式规划出弹性的架构,通过把API接口Web管理控制台SRV(SRV是service的简称,可理解为后台业务逻辑部分)。

API 服务

micro api默认把go.micro.api作为API网关服务的命名空间,micro api遵从API网关模式。

查看更多内容请求翻阅:api

Web 服务

Web服务由micro web提供,默认命名空间是go.micro.web。我们坚信,web应用作为微服务中的一等公民,所以把构建web管理控制台作为微服务的一部分显得非常重要。micro web其实是一个反向代理,并把http请求基于路径解析到适当的web应用程序。

查看更多内容请求翻阅:web

SRV 服务

SRV 服务是RPC服务的基础,也就是你常写的服务类型。我们一般把它称作RPC或后后端服务,因为它作为后台架构的一部分,不应该暴露在最外层。默认情况下,我们使用go.micro.srv作为它的命名空间,或者你可以使用像com.example.srv这样的名字。

Micro支持gRPC吗

支持。这儿有几个插件:transport、client、server。

可以查看micro/go-plugins.

我们也提供了golang版本的gRPC快速上手demo:micro/go-grpc.

Micro与Go-Kit比较

这个问题经常出现,那二者的区别有哪些呢?

Go-kit声称自己是一个微服务的标准库。像GO一样,go-kit提供独立的包,通过这些包,开发者可以用来组建自己的应用程序。Go-kit非常不错,基于Go-kit,你可以完全掌控你定义的服务。

Go-micro则是一个面向微服务的可插拔RPC框架。go-micro是一个只在特殊方向上努力的框架,它尝试简化分布式系统之间的通信,所以我们可以花更多的时间在我们需要关注的业务逻辑上。对于想快速启动,把程序跑起来,同时用拥有一些可插拔的能力从基础架构中断开的能力,而不用修改代码,那么go-micro也很不错。

Micro作为一个微服务工具库,好比一把瑞士军刀,在我们构建微服务时,可以提供传统的接入点,比如http api gateway,web ui,cli,slack bot等等。Micro使用工具来引导架构关注点之间逻辑上的隔离,推动开发者创建API层的服务来暴露对外的API接口,并且创建隔离于对外API的Web层微服务。

如果想全盘掌控,那么使用go-kit;但是如果想弄一个有想法框架,使用go-micro。

例子

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值