Go-Mirco
1、服务发现
- 每个server启动时,都会将自己的IP,PORT和服务名注册给“服务发现”
- 每当client向服务器发现发起服务请求时,“服务发现”会自动找一个可用的服务,将其IP/PORT/服务名返回给client
- client再借助服务发现,访问server
服务发现的种类
- consul: 常应用于go-mirco中。
- mdns:go-mirco中默认自带的服务发现。
- etcd:k8s内嵌的服务发现
- zookeeper:java中常用
2、了解consul
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现和配置,包含多个组件特性:
- 服务发现:consul通过dns或者http接口使服务注册和服务发现变得容易,一些外部服务,例如saas提供的也可以一样注册
- 健康检查:健康检测使cousul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面,类似于心跳机制。
- 键/值存储: 一个用来存储动态配置的系统,提供简单的http接口,可以在任何地方操作。一般都不适用自带的,而是使用redis
- 多数据中心:无需复杂的配置,即可支持任意数量的区域
3、consul安装
Consul用golang实现,具有天然的可移植性(支持linux,windos和macos)。安装包只含一个可执行文件,因此Consul安装非常简单。
安装步骤:
- 直接官网下载对应的安装包https://www.consul.io/downloads 进入下载的目录
- linux: sudo cp -a consul /usr/bin
- mac: sudo cp -a consul /usr/local/bin
- 输入命令 consul agent -dev 启动服务, 然后在网址输入http://localhost:8500/ui/dc1/services可以看到consul已经启动,health checks显示是正确的。
4、consul常用命令
-bind=0.0.0.0 指定consul所在机器IP地址,默认值0.0.0.0
-http-port=8500 consul自带一个web访问默认端口:8500
-client=127.0.0.1 表明那些机器可以访问consul。默认是本机。 0.0.0.0表示所有机器均可访问
-config-dir=foo 所有主动注册服务的描述信息
-data-dir=path 储存所有注册过来的srv机器的详细信息
-dev 开发者模式
-node=hostname 服务发现的名字
-rejoin consul启动时,加入consul集群
-server 以服务方式开启consul,允许其他的consul连接到开启的consul上
-ui 可以使用web页面来查看服务发现的详情
5、注册服务到consul
1、进入配置文件路径/etc/consul.d
2、创建配置文件类型是json
3、重新启动consul consul agent -config-dir=/etc/consul.d/ -dev
6、Go-micro安装
//安装go-micro
go get -u -v github.com/micro/go-micro
//安装go-micro工具集
go get -u -v github.com/micro/micro
//安装protobuf工具集
go get -u github.com/golang/protubuf/{proto, protoc-gen-go}
go get -u github.com/micro/protoc-gen-micro
7、Go-micro的使用
new
参数:
--namespace: 命名空间
--type: 创建的项目类型
--fqdn: 服务的正式完整定义