(15)go-micro微服务main.go开发
一 导包
import (
micro2 "account/common/micro"
"account/config/logger"
"account/config/mysql"
"account/config/redis"
"account/domain/repository"
"account/domain/service"
"account/handler"
"account/proto/account"
"fmt"
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/micro/go-micro/v2"
"github.com/micro/go-micro/v2/registry"
"github.com/micro/go-plugins/registry/consul/v2"
"go.uber.org/zap"
)
二 配置中心
// 1.配置中心
consulConfig, err := micro2.GetConsulConfig("localhost", 8500, "/micro/config")
if err != nil {
fmt.Printf("Init consulConfig failed, err: %v\n", err)
}
三 注册中心
// 2.注册中心
consulRegistry := consul.NewRegistry(func(options *registry.Options) {
options.Addrs = []string{
"127.0.0.1:8500",
}
})
if err := micro2.GetAccountFromConsul(consulConfig, "account"); err != nil {
fmt.Printf("Init consul failed, err: %v\n", err)
}
fmt.Println(micro2.ConsulInfo)
四 zap日志初始化
// 3.zap日志初始化
if err := logger.Init(); err != nil {
fmt.Printf("Init logger failed, err: %v\n", err)
return
}
defer zap.L().Sync()
五 初始化Mysql数据库
// 5.初始化数据库
db, err := mysql.MysqlInit(micro2.ConsulInfo.Mysql.User, micro2.ConsulInfo.Mysql.Pwd, micro2.ConsulInfo.Mysql.Database)
if err != nil {
logger.Error(err)
return
}
defer db.Close()
// 创建实例
accountService := service.NewUserService(repository.NewUserRepository(db))
六 初始化Redis连接
// 6.初始化Redis连接
if err := redis.Init(); err != nil {
logger.Error(err)
return
}
defer redis.Close()
七 注册服务
// 8.注册服务
registryService := micro.NewService(
micro.Name(micro2.ConsulInfo.Micro.Name),
micro.Version(micro2.ConsulInfo.Micro.Version),
//暴露的服务地址
micro.Address(micro2.ConsulInfo.Micro.Address),
//添加consul 注册中心
micro.Registry(consulRegistry),
)
八 初始化服务
// 9.初始化服务
registryService.Init()
九 注册 handle
// 10.注册Handle
account.RegisterAccountHandler(registryService.Server(), &handler.Account{AccountService: accountService})
十 启动服务
// 11.启动服务
if err := registryService.Run(); err != nil {
logger.Fatal(err)
}
十一 main.go全部代码
package main
import (
micro2 "account/common/micro"
"account/config/logger"
"account/config/mysql"
"account/config/redis"
"account/domain/repository"
"account/domain/service"
"account/handler"
"account/proto/account"
"fmt"
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/micro/go-micro/v2"
"github.com/micro/go-micro/v2/registry"
"github.com/micro/go-plugins/registry/consul/v2"
"go.uber.org/zap"
)
func main() {
// 1.配置中心
consulConfig, err := micro2.GetConsulConfig("localhost", 8500, "/micro/config")
if err != nil {
fmt.Printf("Init consulConfig failed, err: %v\n", err)
}
// 2.注册中心
consulRegistry := consul.NewRegistry(func(options *registry.Options) {
options.Addrs = []string{
"127.0.0.1:8500",
}
})
if err := micro2.GetAccountFromConsul(consulConfig, "account"); err != nil {
fmt.Printf("Init consul failed, err: %v\n", err)
}
fmt.Println(micro2.ConsulInfo)
// 3.zap日志初始化
if err := logger.Init(); err != nil {
fmt.Printf("Init logger failed, err: %v\n", err)
return
}
defer zap.L().Sync()
// 5.初始化数据库
db, err := mysql.MysqlInit(micro2.ConsulInfo.Mysql.User, micro2.ConsulInfo.Mysql.Pwd, micro2.ConsulInfo.Mysql.Database)
if err != nil {
logger.Error(err)
return
}
defer db.Close()
// 创建实例
accountService := service.NewUserService(repository.NewUserRepository(db))
// 6.初始化Redis连接
if err := redis.Init(); err != nil {
logger.Error(err)
return
}
defer redis.Close()
// 8.注册服务
registryService := micro.NewService(
micro.Name(micro2.ConsulInfo.Micro.Name),
micro.Version(micro2.ConsulInfo.Micro.Version),
//暴露的服务地址
micro.Address(micro2.ConsulInfo.Micro.Address),
//添加consul 注册中心
micro.Registry(consulRegistry),
)
// 9.初始化服务
registryService.Init()
// 10.注册Handle
account.RegisterAccountHandler(registryService.Server(), &handler.Account{AccountService: accountService})
// 11.启动服务
if err := registryService.Run(); err != nil {
logger.Fatal(err)
}
}
至此,可以运行项目了,运行成功后出现下图,即可开发成功
记得把consul运行起来,因为项目中使用了consul
如果报错,可以私信博主或者加入博主的学习交流裙询问都可
十二 最后
至此,go-micro微服务项目main.go开发工作就正式完成。
接下来就开始jaeger链路追踪的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。
欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击
(15)go-micro微服务main.go开发的更多相关文章
- 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。
微服务平台(Micro Service Platform : MSP)旨在提供一个集开发.测试.运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效. MSP采用业界 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...
- Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud
- 微服务与敏捷开发(Scrum/Kanban)的核心思想之我见
微服务与敏捷开发(Scrum/Kanban)的核心思想之我见 关于"微服务"和"敏捷开发"的文章网络上有很多,所以这里不再重复叙述这些概念的解释和特点,而是 ...
- [Abp vNext微服务实践] - 业务开发
前几篇分别介绍了abp vNext微服务框架.开发环境搭建和vue element admin前端框架接入,在vue element admin中实现用户角色管理基本功能后就可以开始进行业务开发了,本 ...
- 基于DDD的微服务设计和开发实战
你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务设计和开发实战篇,通过借鉴 ...
随机推荐
- 齐博x1模板中常用的TP标签数据处理
上图是比较常用的, 而下图是比较特殊的场合,比如幻灯片可能会用到 下图使用了TP的循环标签. 上图只使用了条件判断标签 上图不存在 val="xxx" 这个参数,所以会自动循环输出 ...
- Audacity开源音频处理软件使用入门
操作系统 :Windows10_x64 Audacity版本:3.2.1 Audacity是一款开源.免费.跨平台的音频处理及录音软件,支持Windows.macOS及Linux操作系统. 这里记录下 ...
- 如何通过 C#/VB.NET 重命名 Excel 表格并设置选项卡颜色
在 Excel 文件中创建多个工作表可以使数据更加井然有序.例如,可以为不同的区域.不同的月份/年份或不同的项目等创建不同的工作表.但要区分多个工作表,则需要更改它们的名称.同时,设置不同的选项卡颜色 ...
- Unity——滚动的小球
Unity--滚动的小球 工程理解 本游戏为通过键盘上的W.A.S.D键控制小球的运动轨迹来对固定位置上的小方块进行碰撞,以此来进行加分计数的. 其中主要对象为小球和自转的小方块:在小球上,我们添加刚 ...
- 你所不知道的 vscode,汇集历史版本中你可能不知道的新特性
壹 ❀ 引 vscode可以毫不夸张的说是大部分前端同学吃饭的工具(webstorm除外),随着时间的推移vscode其实也在不断推出了各种新功能新特性,但vscode并不会默认就实装这些新功能,我相 ...
- 成熟企业级开源监控解决方案Zabbix6.2关键功能实战-上
@ 目录 概述 定义 监控作用 使用理解 监控对象和指标 架构组成 常用监控软件分析 版本选型 俗语 安装 部署方式 部署 zabbix-agent 概述 定义 Zabbix 官网地址 https:/ ...
- 上下文管理器 context managet
定义:实现了上下文管理协议的对象,主要用于保存和恢复各种全局状态,关闭文件等,它本身就是一种装饰器. with语句 with语句就是为支持上下文管理器而存在的
- 「Python实用秘技11」在Python中利用ItsDangerous快捷实现数据加密
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第11 ...
- Go语言核心36讲39
在上一篇文章中,我介绍了Go语言与Unicode编码规范.UTF-8编码格式的渊源及运用. Go语言不但拥有可以独立代表Unicode字符的类型rune,而且还有可以对字符串值进行Unicode字符拆 ...
- JUnit 5 单元测试教程
点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 在软件开发过程中,我们通常都需要测试 ...