go-zero(二)| 鉴权

什么是 JWT 根据维基百科的定义,JSON WEB Token(JWT,读作 [/dʒɒt/]),是一种基于JSON的、用于在网络上声明某种主张的令牌(token)。JWT通常由三部分组成: 头信息(header), 消息体(payload)和签名(signature)。 第一部分头信息指定了该JWT使用的签名算法,HS256 表示使用 ………

阅读全文

go-zero(一)| 概览

2020年8月开源的go-zero微服务框架非常热门。他来自好未来(学而思)的研发团队。这样的研发团队还是很有想法的。当然类似这样的微服务框架其实早就有了,比如go-micro,go-kit等大家也可以尝试。 项目地址:https://github.com/tal-tech/go-zero 文档说 ………

阅读全文

etcd--分布式键值数据库

etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 etcd作为服务发现系统,有以下的特点: 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单 安全:支持SSL证书验证 快速: ………

阅读全文

HTTP2简介

看这篇对gRPC讲解的文章:https://zhuanlan.zhihu.com/p/161577635 本文的内容都是来自上面文章的节选。 HTTP1.1的问题 HTTP1.1以其简单、可读性高、超高普及率、历史悠久,作为经典的存在,为互联网的普及做出了重要贡献。但在当今超高的流量、超高的使用频率背景下,打开一个页面动辄几十个请求,使得 ………

阅读全文

Windows-Wireshark抓包

Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。WireShark可以比喻做硬件工程的万用表、示波器,同样我们网络工程师或者软件工程师可以利用wireshark来进行分析网络。 Wireshark是个神器,可惜的是他只能查看封包,而不能修改封包的内容,或者发送封包。 ………

阅读全文

RPC(四)| 来自Google的gRPC

gRPC是Google开源的一款RPC框架,跟具体语言无关,以protobuf作为IDL,通过protoc来编译框架代码。gRPC的Java实现的底层网络库是基于Netty开发而来,其Go实现是基于net库。 先说下Protobuf,它是一个纯粹的展示层协议,可以和各种传输层协议一起使用;Protobuf的文档也非常完善。 ………

阅读全文

RPC(三)| 来自Facebook的Thrift

Thrift是Facebook开源提供的一个高性能,轻量级RPC服务框架,其产生正是为了满足当前大数据量、分布式、跨语言、跨平台数据通讯的需求。 但是,Thrift并不仅仅是序列化协议,而是一个RPC框架。相对于JSON和XML而言,Thrift在空间开销和解析性能上有了比较大的提升,对于对性能要求比较高的分布式系统,它是一个优秀的RPC ………

阅读全文

Go总结(十八)| pprof性能分析

Go语言提供了很多性能分析的工具,性能分析类型有如下几种: CPU性能分析 内存性能分析 阻塞性能分析 锁性能分析 CPU性能分析 生成profile文件 Go 的运行时性能分析接口都位于 runtime/pprof 包中。只需要调用 runtime/pprof 库即可得到我们想要的数据。 看下面的例子,随机生成了 5 组数据,并且使用冒 ………

阅读全文

Go总结(十七)| 反射(reflect)

Go语言反射特性(reflect)提供了运行时动态获取对象的类型和值以及动态创建对象的能力。反射可以帮助抽象和简化代码,提高开发效率,但通常降低运行效率。 Go语言中的反射 Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道这些变量的具体类型,这种机制被称为反射。反射也可以让我们将类 ………

阅读全文

RPC(二)| Golang gob与rpc简介

Go 语言广泛地应用于云计算和微服务,成熟的 RPC 框架和微服务框架不少;grpc、rpcx、go-zero、go-micro 等都是非常成熟的框架。通常来说RPC 是微服务框架的一个子集,微服务框架可以自己实现 RPC ,或者选择不同的 RPC 框架作为通信基础。 为了深入学习RPC框架,我们这里模拟标准库net/rpc,自己从零开始 ………

阅读全文