micro入门指南——核心功能介绍

本文介绍了Go Micro作为微服务构建工具库的核心功能,包括如何创建服务、初始化、注册处理器、启动服务以及负载均衡策略。通过示例代码展示了`micro.NewService`、`service.Init`、`RegisterSayHandler`、`service.Run`等关键方法的用法,并讨论了负载均衡的实现和配置选项。此外,还提到了客户端的`NewSayService`方法及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Micro是一套微服务构建工具库。对于微服务架构的应用,Micro提供平台层面、高度弹性的工具组件,让服务开发者们可以把复杂的分布式系统以简单的方式构建起来,并且尽可能让开发者使用最少的时间完成基础架构的构建。
Go-micro是独立的RPC框架,它是micro工具集的核心。下面通过常用方法看下其核心功能是怎么工作的,来看一个micro服务端的代码片段

// 服务端
func main() {
   
    service := micro.NewService(micro.Name("go.micro.srv.greeter"))
    service.Init()
    hello.RegisterSayHandler(service.Server(), new(Say))
    if err := service.Run(); err != nil {
   
        log.Fatal(err)
    }
}

micro.NewService

NewService根据其中的包,创建并返回一个新服务。

func NewService(opts ...Option) Service {
   
    return newService(opts...)
}

func newService(opts ...Option) Service {
   
    options := newOptions(opts...)

    options.Client = &clientWrapper{
   
        options.Client,
        metadata.Metadata{
   
            HeaderPrefix + "From-Service": options.Server.Options().Name(),
        },
    }

    return &service{
   
        opts: options,
    }
}

传入参数用来设置服务的一些属性,例如使用的中间件,注册中心,服务有关属性等。上例中设置了服务的名称。

func Name(n string) Option {
   
    return func(o *Options) {
   
        o.Server.Init(server.Name(n))
    }
}

注意: 这里的服务名称必须和micro客户端编写的服务名称相一致,不然会无法正常访问。例如服务端定义的服务名字为go.micro.srv.greeter,而客户端定义的服务名称为go.micro.client。那么在调用时就会出现下面的错误。

{
   
    "id": "go.micro.client",
    "code": 500
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值