Files

77 lines
1.6 KiB
Go
Raw Permalink Normal View History

2025-09-08 10:11:44 +08:00
// server.go
2025-09-07 15:44:15 +08:00
package main
import (
"context"
2025-09-08 10:11:44 +08:00
"go-micro.dev/v4/errors"
2025-09-07 15:44:15 +08:00
"log"
"time"
2025-09-08 10:11:44 +08:00
"go-micro.dev/v4"
"go-micro.dev/v4/registry"
2025-09-07 15:44:15 +08:00
"go.etcd.io/etcd/client/v3"
)
2025-09-08 10:11:44 +08:00
// 定义请求和响应结构体
type LoginRequest struct {
Username string
Password string
}
2025-09-07 15:44:15 +08:00
2025-09-08 10:11:44 +08:00
type LoginResponse struct {
Token string
2025-09-07 15:44:15 +08:00
}
2025-09-08 10:11:44 +08:00
// UserService 实现
type UserService struct{}
2025-09-07 15:44:15 +08:00
2025-09-08 10:11:44 +08:00
func (u *UserService) Login(ctx context.Context, req *LoginRequest, rsp *LoginResponse) error {
if req.Username == "admin" && req.Password == "123456" {
rsp.Token = "abc123"
return nil // 返回 nil 表示成功
2025-09-07 15:44:15 +08:00
}
2025-09-08 10:11:44 +08:00
return errors.New("登录失败", "失败", 500) // 返回 error 表示失败
}
2025-09-07 15:44:15 +08:00
2025-09-08 10:11:44 +08:00
func main() {
// 1. 创建原生 etcd 客户端
etcdClient, err := clientv3.New(clientv3.Config{
Endpoints: []string{"127.0.0.1:2379"},
DialTimeout: 5 * time.Second,
})
2025-09-07 15:44:15 +08:00
if err != nil {
2025-09-08 10:11:44 +08:00
log.Fatal("创建 etcd 客户端失败:", err)
2025-09-07 15:44:15 +08:00
}
2025-09-08 10:11:44 +08:00
defer etcdClient.Close()
2025-09-07 15:44:15 +08:00
2025-09-08 10:11:44 +08:00
// 2. 创建自定义的 etcd 注册中心
reg := registry.NewRegistry(
registry.Addrs("127.0.0.1:2379"),
registry.Timeout(5*time.Second),
// 这里可以添加更多自定义配置
2025-09-07 15:44:15 +08:00
)
2025-09-08 10:11:44 +08:00
// 3. 创建微服务实例
service := micro.NewService(
micro.Name("user.service"),
micro.Registry(reg),
// 注入 etcd 客户端
micro.BeforeStart(func() error {
return etcdClient.Sync(context.Background())
}),
)
2025-09-07 15:44:15 +08:00
2025-09-08 10:11:44 +08:00
// 4. 初始化服务
service.Init()
2025-09-07 15:44:15 +08:00
2025-09-08 10:11:44 +08:00
// 5. 注册服务处理器
if err := micro.RegisterHandler(service.Server(), new(UserService)); err != nil {
log.Fatal("注册服务处理器失败:", err)
2025-09-07 15:44:15 +08:00
}
2025-09-08 10:11:44 +08:00
// 6. 启动服务
if err := service.Run(); err != nil {
log.Fatal("服务启动失败:", err)
2025-09-07 15:44:15 +08:00
}
}