欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了解这门语言的基础知识和实用技巧。
目录
初识go-micro框架
consul安装与使用
初识go-micro框架
go-micro:是一个用于构建微服务架构的开源框架,旨在帮助开发者简化分布式系统的开发和管理,它基于go语言并且提供了一套全面的工具和库,帮助开发者构建、管理、监控和扩展微服务应用,go-micro用于编写微服务的可插入go-rpc框架,服务发现、客户端/服务器rpc,pub/sub等是整个micro的核心,从github上面我们可以了解到一些go-micro的底层源码:
go-micro:核心库
micro:一个包含传统入口点的微服务工具包,微服务运行环境,命令,创建微服务项目
plugins:go-micro插件,包括etcd、kubernetes(k8s)、nats、rabbitmq、grpc等
当然如果想查阅go-micro相关具体的知识,也是可以看一看 中文文档 的具体介绍的:
服务发现:是微服务开发中必须的核心技术,用于帮助微服务架构中的不同服务相互发现和通信,在分布式系统中服务发现机制是必不可少的,因为随着服务的增减服务实例的IP和端口会发生变化,服务发现确保服务能够自动注册到中心化的服务目录,并且其他服务能够找到并与之通信。
我们在做微服务开发的时候,客户端的一个接口可能需要调用N个服务,客户端必须知道所有服务的网络位置(ip+port),如下图所示:
有服务发现后,client、server工作流程:
1)每个server启动时,都将自己的IP、port和服务名注册给“服务发现”
2)当client想服务发现发起服务请求时,“服务发现”会自动找一个可用的服务,将其IP/port/服务名返回给client
3)client再借助服务发现,访问server
服务发现的种类有很多,大致如下所示:
1)consul:常用于go-micro中
2)Eureka:是Netflix提供的服务发现工具,Go-Micro同样支持通过eureka实现服务发现。
3)Zookeeper:是另一种流行的服务发现工具,Go-Micro同样支持。
consul安装与使用
常用的服务发现框架有很多,例如Etcd、Eureka、Consul、Zookeeper等等,这里我们选择go-micro默认的服务发现框架consul来做一个详细介绍。Consul是HashiCorp公司推出的开源工具用于实现分布式系统的服务发现与配置,包含多个组件但是作为一个整体,为基础设施提供服务发现和服务配置的工具,它提供以下关键特性:
服务发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务例如saas提供的也可以一样注册。
健康检查:健康检测使consu可以快速的告警在集群中的操作,和服务发现的集成可以防止服务转发到故障的服务上面(心跳机制)
更键/值存储:一个用来存储动态配置的系统,提供简单的HTTP接口可以在任何地方操作。
多数据中心:无需复杂的配置,即可支持任意数量的区域。
接下来我们开始讲解一下consul的具体安装,感兴趣的朋友也可以查阅官方文档,当然我们要下载具体的consul来进行安装,这里我们来到下载地址找到我们对应的系统版本,因为wind系统的386指的是i386指的是intel80386,32位架构,amd64指的是amd的64位架构,支持64位系统,现在大部分电脑都是都是64,所以直接下载AMD64即可:
下载完成之后是一个压缩包这里我们对其进行解压即可,解压完成是一个exe文件:
为了方便我们全局使用,这里我们把该文件的路径直接存放到环境变量中的Pah里面即可:
配置完成之后我们win+r输入cmd打开终端输入 consul -v 命令,出现如下界面说明我们安装配置成功:
consul常用命令:主要有以下几种:
consul agent
-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 // 开发者模式,直接以默认配置启动consul
-node=hostname // 服务发现的名字
-rejoin // consul启动的时候,加入到的consul集群
-server // 以服务的方式开启consul,允许其他的consul连接到开启的consul上(形成集群)
如果不加-server,表示以 “客户端” 的方式开启,不能被连接,可以使用web页
面来查看服务发现的详情
-ui // 可以使用web页面来查看服务发现的详情
接下来我们在终端执行 consul agent -dev 命令之后,可以看到我们的服务已经运行起来了:
浏览器访问本地的8500端口,也就是localhost:8500,可以看到我们的服务已经成功运行,Consul 的Web管理界面有一些菜单,我们这里做一下简单的介绍:
Services:管理界面的默认页面用来展示注册到 Consul 的服务,启动后默认会有一个consul服务,也就是它本身。
Nodes:在Services界面双击服务名就会来到Services对于的Nodes界面,Services是按照服务的抽象来展示的,Nodes展示的是此服务的具体节点信息。比如启动了两个订单服务实例,Services界面会出现一个订单服务,Nodes界面会展示两个订单服务的节点。
Key/Value:如果有用到 Key/Value 存储,可以在界面进行配置、查询。
Intentions:可以在页面配置请求权限。
当然还有一些其他的常用命令,如下:
1)consul members:查看集群中有多少个成员。
2)consul info:查看当前consul的IP信息。
3)consul leave:优雅的关闭consul,不优雅的方式就是Ctrl + C