【启程Golang之旅】Go-Micro框架的高效开发技巧

欢迎来到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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

课下作业:IPSec协议验证

课下作业:IPSec协议验证 文章目录 1. 参考云班课课程资源中“ch03 密码技术-协议验证”的“VPN协议验证.pdf”和“ch03 密码技术-10-密码协议验证IPSec.mp4”,对 IPSec 协议进行验证,提交验证过程。(79分)第一阶段发起…

私域流量时代下的新型商业模式:以开源链动 2 + 1 模式、AI 智能名片、S2B2C 商城小程序源码为例

摘要:本文探讨了私域流量时代的特点及其对商业盈利模式的影响。通过分析从大众消费时代到私域流量时代的转型,阐述了商品到“人”的变化过程。同时,深入研究了开源链动 2 1 模式、AI 智能名片和 S2B2C 商城小程序源码在私域流量发展中的作用…

QJson-趟过的各种坑(先坑后用法)

QJson-趟过的各种坑【先坑后用法】 Chapter1 QJson-趟过的各种坑【先坑后用法】一、不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge二、json格式化输出1.构建…

MySQL记录锁、间隙锁、临键锁(Next-Key Locks)详解

行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。 应用在InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。 对于行…

DBeaver工具连接Hive

DBeaver工具连接Hive 首先解压安装包dbeaver-ce-latest-x86_64-setup.zip,并安装dbeaver-ce-latest-x86_64-setup.exe; 安装Kerberos客户端4.1-amd64.msi; 查看集群节点/etc/hosts文件内容,并追加到C:\Windows\System32\drivers\etc\hosts; 下载集群用户keytab文件,并解压…

动态规划-两个数组的dp问题——718.最长重复子数组

1.题目解析 题目来源 718.最长重复子数组——力扣 测试用例 2.算法原理 1.状态表示 子数组问题不能像子序列问题使用两个区间来表示状态,因为子数组一定是连续的,因此在填第i个位置就需要用到第i-1个位置的值,那么不妨以某个位置为结尾来设…

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力,以对象为为驱动的模型,主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…

【日志】392.判断子序列

2024.11.8 【力扣刷题】 392. 判断子序列 - 力扣(LeetCode)https://leetcode.cn/problems/is-subsequence/?envTypestudy-plan-v2&envIdtop-interview-150 整个题从一开始就是打算从双指针的思想往下走的。但是,我设置了四个变量sLeft…

高校宿舍信息管理系统小程序

作者主页:编程千纸鹤 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参…

【含开题报告+文档+源码】基于SpringBoot的智慧养老医护管理系统

开题报告 随着社会老龄化趋势的不断加深,我国老年人口逐年增长,对养老服务的需求愈发迫切。然而,传统的养老服务模式存在许多不足,如信息孤岛、护理不精准等问题,迫切需要一种创新性的解决方案以提升养老服务的质量和…

【双十一特惠】腾讯云省钱攻略:如何智取云计算资源

前言 双十一不仅是购物的狂欢节,对于云计算用户来说,更是一个节省成本的绝佳时机。腾讯云,作为国内领先的云计算服务商,每年双十一都会推出一系列优惠活动。本文将为您揭开如何在这个购物节中,最大化利用腾讯云的优惠…

IEEE 1588:电信网络的精确时间协议 (PTP)

IEEE 1588:电信网络的精确时间协议 IEEE 1588 PTP 概述PTP 协议特征同步类型IEEE 1588 PTP 角色IEEE 1588 PTP 的工作原理PTP 设备类型PTP 消息类型事件消息一般信息 PTP 时钟类规范PTP 配置文件 https://www.techplayon.com/ieee-1588-precision-time-protocol-ptp…

昇思大模型平台打卡体验活动:基于MindSpore实现GPT1影评分类

如果你对MindSpore感兴趣,可以关注昇思MindSpore社区 大模型平台 平台说明 昇思大模型平台旨在为AI学习者和开发者提供在线学习的项目、模型、大模型体验和数据集的平台。我们也添加了各领域的经典数据集来帮助学习者解决AI学习过程中的一系列难题, 如…

在IDEA中使用Git

一、准备工作 这里我们使用 Gitee 做例子,使用 SSH 协议。看这个文章前最好看一下《》这个文章,了解一下 SSH。 1、生成秘钥对 首先要到 ~/.ssh 目录下进行操作,因为生成的公钥和私钥一般放在这个目录下,Windows 就是在用户目…

Linux下通过sqlplus连Oracle提示字符是乱码▒▒▒[

先参考https://www.cnblogs.com/wrencai/articles/4374451.html 理解下Oracle编码字符集的概念 如下图,刚开始连上是软吗▒▒▒[ 执行export NLS_LANGJAPANESE_JAPAN.AL32UTF8 (这个仅在当前会话起作用)如果好了,说明字符集是这个,不行在尝试别的字符集 如果要永久设置 vim …

Flyweight(享元)

1)意图 运用共享技术有效地支持大量细粒度的对象。 2)结构 享元模式的结构如图 7-36 所示。 其中: Flyweight 描述一个接口,通过这个接口 Flyweight 可以接受并作用于外部状态 ConcreteFlyweight 实现 Flyweight 接口,并为内部状态(如果有)增加存储空…

微信小程序中使用离线版阿里云矢量图标

前言 阿里矢量图库提供的在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 1.下载图标 将阿里矢量图库的图标先下载下来 解压如下 2.转换格式 贴一个地址用于转换格式:Onlin…

大数据之多级缓存方案

多级缓存介绍?多级缓存优缺点,应用场景?多级缓存架构? 多级缓存介绍 多级缓存方案是一种优化手段,通过在多个级别上存储数据来提高应用程序的性能和响应速度。以下是对多级缓存方案的详细解析: 一、多级缓…

jupyter notebook启动和单元格cell

【注意!!!】 本章主要讲解数据分析、挖掘入门及进阶知识 - 通过多篇文章【文字案例】的形式系统化进行描述 数据分析专栏:https://blog.csdn.net/2201_75422674/category_12827743.html - 大家喜欢可以订阅一下,不收费…

街道网格领域的数据大屏,在社区治理方面大显身手。

街道网格领域的数据大屏在社区治理中发挥着重要作用。它可以直观地展示社区的人口分布、治安状况、环境问题等各类信息。 通过实时更新的数据,社区工作人员能够及时掌握动态变化,迅速做出决策。色彩鲜明的图表和图形让复杂的数据一目了然,方…