Go-Micro注册服务consul安装和使用
简介Go-Micro注册服务consul安装和使用
1、微服务主要是一个服务多台服务器进行支持,服务之间相互调用,但是我们调用微服务的时候,我们需要知道对应的服务的地址,那么这里就需要注册中心,将所有微服务的的地址都注册到注册中心,调用服务之前先去注册中心去获取对应服务的地址。
2、常用的注册中:consul、etcd、zookeeper等,这里我们先使用consul
3、consul的安装(本地测试推荐使用docker安装或者直接启用调试模式单机版本)
####单机版
consul agent -dev
####集群版
集群部署:
192.168.1.171
nohup ./consul agent -server -bind=192.168.1.171 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=data -node=server-1 -ui &
192.168.1.177
nohup ./consul agent -server -bind=192.168.1.177 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=data -node=server-2 -ui &
192.168.1.178
nohup ./consul agent -server -bind=192.168.1.178 -client=0.0.0.0 -bootstrap-expect=3 -data-dir=data -node=server-3 -ui &
在另外两台上执行后面命令加入到集群: ./consul join 192.168.1.171
添加服务【PUT】:
{
"id": "test04",
"name": "test04",
"tags": [
""
],
"address": "127.0.0.1",
"port": 3010,
"check": {
"deregisterCriticalServiceAfter": "90m",
"http": "http://192.168.1.171:8889/",
"interval": "10s"
}
}
删除无效的注册【PUT】:http://192.168.1.178:8500/v1/agent/service/deregister/服务名称
4、安装go-micro插件
go get -u github.com/micro/go-plugins
5、注册到consul
package main
import (
"github.com/gin-gonic/gin"
"github.com/micro/go-micro/registry"
"github.com/micro/go-micro/web"
"github.com/micro/go-plugins/registry/consul"
)
func main() {
//注册
registry := consul.NewRegistry(func(options *registry.Options) {
options.Addrs = []string{
"192.168.1.171:8500",
"192.168.1.177:8500",
"192.168.1.178:8500",
}
})
routers := gin.Default()
routers.GET("/", func(context *gin.Context) {
context.JSON(200, map[string]interface{}{
"name": 1,
})
})
routers.GET("/version", func(context *gin.Context) {
context.JSON(200, map[string]interface{}{
"version": "1.0.0",
})
})
server := web.NewService(
web.Name("gin-web"), //服务名称
web.Registry(registry), //注册到服务
//web.Address(":8080"),//这个可以不写,最好使用配置文件进行配置
web.Handler(routers),
)
server.Init() //加了这句就可以使用命令行的形式去设置我们一些启动的配置
server.Run()
}
运行成功后
6、查看命令行帮助
go run xxx.go --help
命令行文件在:
gomod目录\pkg\mod\github.com\micro\go-micro@v1.18.0\config\cmd\cmd.go
指定端口运行
go run xxx.go --server_address=:8080
7、Windows批处理命令运行多个服务
@echo off
start cmd /k "cd/d E:\go\micro-product &&go run reg-consul.go --server_address=:50001"
start cmd /k "cd/d E:\go\micro-product &&go run reg-consul.go --server_address=:50002"
start cmd /k "cd/d E:\go\micro-product &&go run reg-consul.go --server_address=:50003"
结束的时候一定要使用ctrl+c,否则会出现注册的服务删不掉
8、获取注册的服务信息(随机获取)
package main
import (
"fmt"
"github.com/micro/go-micro/client/selector"
"github.com/micro/go-micro/registry"
"github.com/micro/go-plugins/registry/consul"
"log"
)
func main() {
registry := consul.NewRegistry(func(options *registry.Options) {
options.Addrs = []string{
"192.168.1.171:8500",
"192.168.1.177:8500",
"192.168.1.178:8500",
}
})
//获取服务
services, err := registry.GetService("gin-web")
if err != nil {
log.Fatal(err)
}
next := selector.Random(services) //随机从服务中获取
//next := selector.RoundRobin(services) //轮询算法
node, err := next() //返回是一个函数
if err != nil {
log.Fatal(err)
}
fmt.Println("NODE ID:", node.Id)
fmt.Println("ADDRESS:", node.Address)
fmt.Println("METADATA:", node.Metadata)
}
常见的负载均衡算法包含:
1、轮询法(Round Robin)
2、加权轮询法(Weight Round Robin)
3、随机法(Random)
4、加权随机法(Weight Random)
5、平滑加权轮询法(Smooth Weight Round Robin)
6、源地址哈希法(Hash)
7、最小连接数法(Least Connections)
打包出现如下错误:Error: Application entry file "dist\electron\main.js" in the "D:\gui\demo2\build\win-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration.
partprobe命令用于在硬盘分区发生变化是,更新Linux内核中的硬盘分区表数据。有时在使fdisk、part命令对硬盘进行分区后,会发现找不到新分区,此时需要重启系统才能使修改生效,但是partprobe可以不重启系统就让修改的分区表生效。
《芈月传》是由郑晓龙执导,孙俪、刘涛、方中信、黄轩、高云翔领衔主演,马苏特别出演的古装剧 。
该剧讲述了中国历史上第一个被称为“太后”的女人、战国时期秦国女政治家芈月,波澜起伏的人生故事 。
该剧于2015年11月30日在东方卫视、北京卫视首播 。
最近搭建一套监控系统,本文主要记录Prometheus的安装配置
opencv 是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等。本教程所有示例基于opencv-python,使用python语言对数字图像进行处理和研究。
快速生成表格
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。