go-zero框架入门

go-zero框架环境的安装

goctl

若想用go-zero框架,还需要一些前置条件:

安装goctl

go install github.com/zeromicro/go-zero/tools/goctl@latest

可以使用 goctl 命令查看是否安装成功

image-20240718085928448

成功后安装protoc

goctl env check --install --verbose --force

然后下载go-zero库,新建一个go项目,运行:

go get -u github.com/zeromicro/go-zero@latest

1.在根目录下创建一个user包

2.在其中,创建一个api服务:

goctl api new api

3.在其中创建一个rpc服务

goctl rpc new rpc

4.在user/api/logic/apilogic下,增加

func (l *ApiLogic) Api(req *types.Request) (resp *types.Response, err error) {// todo: add your logic here and delete this linereturn &types.Response{Message: "hello world"}, nil
}

5.在user的api目录下运行

go run api.go

6.进入http://127.0.0.1:8888/from/me 就可以看到

image-20240718143851908

这样一个简单的项目就跑起来了。

至于为什么需要创建两个服务呢?

API 包用于对外提供 HTTP 接口,适合前端与后端交互;RPC 包用于后端服务之间的高效通信,适合内部服务调用。

API 包

  • 实现对外提供的 RESTful API 接口。例如,用户登录、获取商品列表等。
  • 接受前端发来的 HTTP 请求,进行处理后返回 JSON 格式的响应。

RPC 包

  • 实现服务间的 RPC 调用接口。例如,用户服务需要调用订单服务获取订单详情。
  • 使用 gRPC 框架进行通信,提供高效的二进制协议数据传输。

总之,这样设计有助于清晰地分离对外接口与内部服务,提升系统的可维护性和可扩展性。

etcd

etcd 是一个分布式键值存储系统,旨在提供一致性、高可用性和可靠的分布式协调。

和redis很像,都是键值对数据库。

但etcd更加专精于强一致性:etcd 使用 Raft 共识算法**,确保了在分布式环境中的强一致性**。这对于服务发现和配置管理等关键任务尤为重要,因为它能确保每个节点都能看到相同的配置和服务状态。

并且etcd本身为分布式系统设计,提供了原生的服务发现和配置管理功能,支持 Watch 机制,可以实时监控配置变化

etcd 提供了简单且高效的分布式锁实现,适合用于分布式环境中的资源竞争管理。

综上几点,就已经可以说明分布式系统使用etcd存储配置信息的原因了。

再举个例子:正常项目中配置文件写在代码中,若配置文件修改,项目就该重新启动,但是若使用了etcd,每次去查看对应RPC的配置信息时都是从etcd中实时获取。

etcd安装方法:

windows:https://github.com/etcd-io/etcd/releases

去github下载最新版安装包

然后解压,将根文件夹位置添加到环境变量中

image-20240718154510911

之后打开一个命令行窗口,输入:etcd就可以启动了,然后再打开一个黑窗口(上一个不要关)

输入一些简单命令就可以测试etcd的功能了:

image-20240718154636504

linux,使用docker下载最新版:

docker pull quay.io/coreos/etcd:latest

运行etcd容器:

docker run -d \--name etcd-server \-p 2379:2379 \-p 2380:2380 \-v /path/to/etcd-data:/etcd-data \quay.io/coreos/etcd:latest \/usr/local/bin/etcd \--data-dir=/etcd-data \--name my-etcd \--initial-advertise-peer-urls http://0.0.0.0:2380 \--listen-peer-urls http://0.0.0.0:2380 \--advertise-client-urls http://0.0.0.0:2379 \--listen-client-urls http://0.0.0.0:2379 \--initial-cluster my-etcd=http://0.0.0.0:2380 \--initial-cluster-token my-etcd-token \--initial-cluster-state new

验证是否成功安装:

docker exec -it etcd-server shetcdctl --endpoints=http://127.0.0.1:2379 put foo "Hello, etcd"
etcdctl --endpoints=http://127.0.0.1:2379 get foo

成功会看到:

OK 
Hello, etcd

这就是go-zero使用前的前置工作了,下一步就是去写简单的项目

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何免费用java c#实现手机在网状态查询

今天分享手机在网状态查询接口,该接口适用的场景非常广泛!首先我们先讲下什么是手机在网状态?简单来说,就是你得手机号是否还在正常使用中,是否能够及时接收和回复信息,是否能够随时接听和拨打电话。如果你…

深度学习根据代码可视化模型结构图的方法

方法1. Netron Netron 是一个支持多种深度学习模型格式的可视化工具,可以将 PyTorch 模型转换为 ONNX 格式,然后使用 Netron 进行可视化。 安装 Netron: pip install netron使用示例: import torch.onnx# 定义模型 model EMA…

趣谈linux操作系统 9 网络系统-读书笔记

文章目录 网络协议栈基础知识回顾网络分层网络分层的目的各层作用简介延伸-ip地址,有类,无类,cidr socket实现分析tcp/udp回顾socket编程回顾TCP编程回顾UDP编程回顾差异 socket相关接口实现浅析sokcet实现解析创建socket的三个参数socket函数定义及其参数创建socket结构体关联…

MYSQL调优详解:案例解析(第40天)

系列文章目录 一、数据库设计优化 二、查询优化 三、架构优化 四、其他优化策略 五、优化案例解析 文章目录 系列文章目录前言一、数据库设计优化二、查询优化三、架构优化四、其他优化策略五、优化案例解析案例一:优化SELECT查询案例二:使用索引案例三…

【TAROT学习日记】韦特体系塔罗牌学习(3)——女祭司 THE HIGH PRIESTESS II

韦特体系塔罗牌学习(3)——女祭司 THE HIGH PRIESTESS II 目录 韦特体系塔罗牌学习(3)——女祭司 THE HIGH PRIESTESS II牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际财富5. 其他象征意 逆位…

赛氪网贡献突出受表彰,中国计算机应用大会颁奖盛典

2024年7月17日,第39届中国计算机应用大会(CCF NCCA 2024)在万众瞩目中隆重举行,期间举办了盛大的颁奖典礼。此次颁奖典礼对中国计算机应用技术大赛的各大赛道进行了表彰,其中包括“CCF CAT全国算法精英大赛”“全国智能…

node-red学习

Node-RED : 起步 1、安装nodejs Node.js — 在任何地方运行 JavaScript 验证 2、更换下载源 // 查看当前下载地址 npm config get registry // 设置淘宝镜像的地址 npm config set registry https://registry.npmmirror.com/ // 查看当前的下载地址 npm config get registry…

CSS-1_0 CSS和文档流

文章目录 CSS和文档流如何证明这个流的存在呢?流和display番外:inline-block 碎碎念 CSS和文档流 首先什么叫流呢? 通常来说,我们最终看到的网页是HTML文档中定义的各个元素挨个输出的结果,这种一个接一个输出的方式…

前端:Vue学习-2

前端:Vue学习-2 1. vue的生命周期2. 工程化开发和脚手架Vue CLI2.1 组件化开发2.2 scoped解决样式冲突2.3 data是一个函数2.4 组件通信2.5 非父子通信- event bus事件,provide&inject 3.v-model原理->实现父子组件双向绑定4. sync 修饰符->实现…

PyTorch垃圾分类任务与垃圾图片数据集

新书速览|PyTorch深度学习与企业级项目实战-CSDN博客 人工智能用于垃圾分类 人工智能用于垃圾分类,业界早有过相关的讨论,主要有三种方案:第一种方案,把垃圾的相关信息制成表格化数据,然后用传统的机器学习方法实现分…

服务客户,保证质量:腾讯云产品的质量实践

分享主题是“服务客户,保证质量”。自从20年开始,我们把质量提升到了一个前所未有的高度。为什么会如此重视质量呢?在竞争激烈和复杂的市场环境中,产品质量对于企业的重要性不言而喻。一旦出现了质量事故,对客户和企业…

PublicCMS:企业级的Java CMS系统

PublicCMS:企业级的Java CMS系统 在当今互联网飞速发展的时代,PublicCMS作为一款功能强大的开源Java CMS系统,为用户提供了全面的建站解决方案。本文将介绍PublicCMS的基本信息、特点以及如何快速部署和使用。 软件简介 PublicCMS是一款现代…

Visual Studio 2022美化

说明: VS版本:Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”,【下载】,安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…

如何判断c盘d盘e盘哪个是固态硬盘

怎么区分电脑里面的C盘、D 盘、E盘是机械硬盘还是固态硬盘?在电脑里,硬盘是存储数据的核心部件,负责存储操作系统、软件以及用户数据。硬盘的性能也会影响电脑的流畅度。平时我们最常使用的硬盘分为机械硬盘和固态硬盘。在日常使用中&#xf…

Python酷库之旅-第三方库Pandas(032)

目录 一、用法精讲 91、pandas.Series.set_flags方法 91-1、语法 91-2、参数 91-3、功能 91-4、返回值 91-5、说明 91-6、用法 91-6-1、数据准备 91-6-2、代码示例 91-6-3、结果输出 92、pandas.Series.astype方法 92-1、语法 92-2、参数 92-3、功能 92-4、返回…

​1:1公有云能力整体输出,腾讯云“七剑”下云端

【全球云观察 | 科技热点关注】 曾几何时,云计算技术的兴起,为千行万业的数字化创新带来了诸多新机遇,同时也催生了新产业新业态新模式,激发出高质量发展的科技新动能。很显然,如今的云创新已成为高质量发…

液氮罐搬运过程中的安全注意事项有哪些

在液氮罐搬运过程中,安全性是至关重要的考虑因素。液氮是一种极低温的液体,其温度可达零下196摄氏度,在接触到人体或物体时会迅速引发严重的冷冻伤害。因此,正确的搬运和使用液氮罐是保障操作安全的关键。 液氮是一种无色、无味的…

RK3568笔记四十:设备树

若该文为原创文章,转载请注明原文出处。 一、介绍 设备树 (Device Tree) 的作用就是描述一个硬件平台的硬件资源,一般描述那些不能动态探测到的设备,可以被动态探测到的设备是不需要描述。 设备树可以被 bootloader(uboot) 传递到内核&#x…

分布式服务框架zookeeper+消息队列kafaka

一、zookeeper概述 zookeeper是一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务,状态同步,配置中心,集群管理等。 在分布式环境下,经常需要对应用/服…

项目的一些操作

一、发送qq邮箱验证码以及倒计时 要发送验证码需要用到邮箱的授权码&#xff1a; qq邮箱获取方式&#xff0c;打开qq邮箱点设置找到如下界面&#xff1a; 然后获取授权码&#xff1b; 导入依赖 <dependency><groupId>com.sun.mail</groupId><artifactId&…