Go Micro微服务实战

概述

此次实战采用etcd做服务发现注册中心。

初始化项目

go mod init gomicro-demo2

创建服务端

micro new --type="service" hello

在这里插入图片描述
删除go.mod文件,跟客户端进行统一管理。

package main

import (
	"github.com/micro/go-micro/v2"
	log "github.com/micro/go-micro/v2/logger"
	"github.com/micro/go-micro/v2/registry"
	"github.com/micro/go-micro/v2/registry/etcd"
	"gomicro-demo2/hello/handler"
	"gomicro-demo2/hello/subscriber"

	hello "gomicro-demo2/hello/proto/hello"
)

func main() {



	// New Service
	service := micro.NewService(
		micro.Name("go.micro.service.hello"),
		micro.Version("latest"),
		micro.Registry(etcd.NewRegistry(registry.Addrs("127.0.0.1:2379"))),
	)

	// Initialise service
	service.Init()

	// Register Handler
	hello.RegisterHelloHandler(service.Server(), new(handler.Hello))

	// Register Struct as Subscriber
	micro.RegisterSubscriber("go.micro.service.hello", service.Server(), new(subscriber.Hello))

	// Run service
	if err := service.Run(); err != nil {
		log.Fatal(err)
	}
}

编译proto文件

在这里插入图片描述

protoc --micro_out=. --go_out=. hello.proto

创建客户端

micro new --type="web" web

在这里插入图片描述
删除go.mod文件,跟服务端进行统一管理。

package main

import (
        log "github.com/micro/go-micro/v2/logger"
        "github.com/micro/go-micro/v2/registry"
        "github.com/micro/go-micro/v2/registry/etcd"
        "github.com/micro/go-micro/v2/web"
        "gomicro-demo2/web/handler"
        "net/http"
)

func main() {
	// create new web service
        service := web.NewService(
                web.Name("go.micro.web.web"),
                web.Version("latest"),
                web.Address(":7799"),
                web.Registry(etcd.NewRegistry(registry.Addrs("127.0.0.1:2379"))),
        )

	// initialise service
        if err := service.Init(); err != nil {
                log.Fatal(err)
        }

	// register html handler
	service.Handle("/", http.FileServer(http.Dir("/GoCode/src/Go/GoMicro/day7/web/html")))

	// register call handler
	service.HandleFunc("/web/call", handler.WebCall)

	// run service
        if err := service.Run(); err != nil {
                log.Fatal(err)
        }
}

修改web/handler/handler.go,hello/handler/hello.go,main.go,subscriber/hello.go中的包路径

web/handler/hello.go

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

web/main.go

在这里插入图片描述
在这里插入图片描述

启动服务端

在这里插入图片描述

启动客户端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看服务列表

micro --registry etcd --registry_address 127.0.0.1:2379 list services

在这里插入图片描述
在这里插入图片描述

开启web面板

micro --registry=etcd --registry_address=127.0.0.1:2379 web

在这里插入图片描述

测试服务是否正常
在这里插入图片描述

开启API网关,访问服务

micro  --registry etcd --registry_address 127.0.0.1:2379 api --namespace=go.micro --type=service

在这里插入图片描述

其中: hello是服务名,Hello.Call是方法名
在这里插入图片描述

流程分析

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shang443

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值