go框架
修华师
关注后端技术
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
rpc框架之rpcx-序列化(4)
rpc框架之rpcx-序列化(4) 我们一起来探寻rpcx框架,本系列会详细讲解rpcx,尽量覆盖它的所有代码,看看这款优秀的rpc框架是如何实现的。 什么是序列化 编码/解码对应也就是就是序列化/反序列化的过程,我们知道,网络只能传输字节。所以在rpc中,如果客户端要传输一个Person对象给服务端,客户端必须先将**Person对象转换成转换成 []byte**(这就是序列化),然后发起rpc调用,服务端在接收到请求后,将接收到的[]byte 还原成成Person对象(这就是反序列化)。 type原创 2020-05-29 00:53:31 · 1115 阅读 · 0 评论 -
rpc框架之rpcx-远程调用(3)
rpc框架之rpcx-远程调用(3) 我们一起来探寻rpcx框架,本系列会详细讲解rpcx,尽量覆盖它的所有代码,看看这款优秀的rpc框架是如何实现的。 远程调用 顾名思义,就是客户端发起请求,服务端接收并处理,会返回结果的过程。也就是我们说的remote procedure call(RPC)。在这个过程中会涉及到如何做服务治理,如何序列化/反序列化 服务治理 服务治理涉及到如何处理远程调用失败的策略: Failover、 Failfast、 Failtry、Backup。以及支持什么样的路由算法:原创 2020-05-26 10:20:49 · 1277 阅读 · 0 评论 -
rpc框架之rpcx-服务注册与服务发现(2)
rpc框架之rpcx-服务注册与服务发现(2) 我们一起来探寻rpcx框架,本系列会详细详解rpcx的源码,会涉及到他的各个模块,看看这款优秀的rpc框架是如何实现的。 概念 我们先了解下几个概念 注册中心:服务注册中心用来实现服务发现和服务的元数据存储。现在主流的做法是通过:zookeeper,eureka,consul,etcd 等开源框架实现。同时,注册中心需要自动剔除不可用的服务元数据。 服务注册:服务端提供者将服务的元数据信息注册到注册中心的过程,这些元数据包含:服务名,监听地址,监听协议,权原创 2020-05-25 00:35:02 · 2057 阅读 · 0 评论 -
rpc框架之rpcx-简介(1)
我们一起来探寻rpcx框架,本系列会详细详解rpcx的源码,会涉及到他的各个模块,看看这款优秀的rpc框架是如何实现的。 简介 github:https://github.com/smallnest/rpcx,之所以会选择rpcx,原因有二 使用简单,功能健全。rpcx框架的参照物就是java的dubbo,这对我这样十几年的java使用者来说,非常具有吸引力,况且dubbo框架是非常优秀的(成为apache的顶级项目,足以说明这一点)。这是作者对rpcx的介绍 A zero cost, faster.原创 2020-05-22 23:59:21 · 2327 阅读 · 1 评论 -
viper配置框架-支持zookeeper的读取和监听(1)
接下来的几篇我们一起来学习、解读viper框架 viper作为配置框架,其功能非常的强大,我们没有理由不去了解一下。我们先看官网对它的功能简介: viper是完整配置解决方案,他可以处理所有类型和格式的配置文件,他有如下功能: 设置默认配置 支持读取 JSON TOML YAML HCL 和 Java 属性配置文件 监听配置文件变化,实时读取读取配置文件内容 读取环境变量值 读取远程配置系统 (etcd Consul) 和监控配置变化 读取命令 Flag 值 读取 buffer 值 读取确切值 乍一.原创 2020-05-21 22:59:31 · 624 阅读 · 0 评论 -
zap日志框架-性能篇(3)
zap日志框架分了三篇来讲解:使用篇 ,源码篇,性能篇。 我们在github上可以看到如下测试结果: msg+10个fields的情况 Package Time Time % to zap Objects Allocated ⚡ zap 862 ns/op +0% 5 allocs/op ⚡ zap (sugared) 1250 ns/op +45% 11 allocs/op zerolog 4021 ns/op +366% 76 allocs/op go-kit 454.原创 2020-05-20 08:27:28 · 1003 阅读 · 0 评论 -
zap日志框架-源码篇(2)
分两篇来讲解zap日志框架:使用篇,源码篇。 流程分析 我们先看一个 logger.Error("logger", zap.String("name", "修华师")) 会走哪些代码 /** 入口方法,参数信息如下: msg:消息 fields :结构字段信息,可以是0-N个 */ func (log *Logger) Error(msg string, fields ...Field) { //校验是否需要输出 ErrorLevel 日志 if ce := log.check(ErrorLe.原创 2020-05-18 15:49:22 · 1194 阅读 · 1 评论 -
zap日志框架-使用篇(1)
分两篇来讲解zap日志框架:使用篇,源码篇。 为什么选择 zap 流行的日志框架中,如:logrus,go-kit,log15,都提供了结构化、非结构化输出。使用起来大同小异,正基于此,性能+扩展 成了我们选择日志框架的两个比较重要的维度。 性能 参考 github上的单元测试,如下: 记录一个包含10个字段的日志的消耗情况 Package Time Time % to zap Objects Allocated ⚡ zap 126 ns/op +0% 0 allocs/op ⚡.原创 2020-05-15 23:05:00 · 2088 阅读 · 0 评论
分享