前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go-zero源码学习

go-zero源码学习

作者头像
waki
发布2021-12-08 12:21:10
8200
发布2021-12-08 12:21:10
举报
文章被收录于专栏:wakiwaki

文章目录

框架:

1、框架的作用就是简化开发。其中之一就是已经有很多轮子。如:生成n位随机字符串。如:封装redis使能兼容集群和单node 2、读懂xxxConf就读懂了框架结构 rest配置:(很大,框架无非rest和rpc两部分)

在这里插入图片描述
在这里插入图片描述

3、internal.svc(服务上下文)

  • Context(上下文)相当于一个全局对象。类似laravel的App
  • 上下文的思路和其他go-kit微服务框架一致 4、写go要要用js的思维,不能用PHP的思维(强化PHP的面对对象思维+迭代器模式【laravel的model,那个链感觉就永远不会断似的】)。
  • 一套嵌一套
  • 一套东西只是做一个参数在使用。

一、core 内核部分

1、这里面的东西是可以直接拿来使用的,不要重复造轮子。

1、conf

将json、yaml、yml转为internal/config下对应的map结构数据

重点: 1、框架所有的配置都是一个xxxconf样式的struct(结构体) 2、通过使用core.mapping模块将yaml格式转化成类似map数据格式的struct

2、mapping

多少和字典数据有关

3、store

1、Cache.ClusterConf-Cache.NodeConf-redis.RedisConf依次为前一个的字元素

3.1、cache

1、在CacheConf对比RedisConf就多了一个权重参数

3.1.1、redis

1、封装redis使能兼容集群和单node

3.1.2、sqlc 带缓存的sql语句

1、框架不厌其烦的将每次mysql查询、查询结果做了redis缓存 如:QueryRow

代码语言:javascript
复制
return cc.cache.Take(v, key, func(v interface{}) error {
		return query(cc.db, v)
	})
3.1.3、sqlx 直接执行(exec)

1、mysql操作的一种封装。里面带有orm操作(不要重复轮子) 2、缓存没有,则直接查mysql

代码语言:javascript
复制
err := m.QueryRow(&resp, userIdKey, func(conn sqlx.SqlConn, v interface{}) error {
		query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", userRows, m.table)
		return conn.QueryRow(v, query, id)
	})

这段代码可以看出sqlc、sqlx都有相同的函数名称。都是获取一行数据。sqlc没有用sqlx

4、stringx

1、处理字符串的框架之组件。如:n位随机字符串。

二、rest部分

三、rpc部分

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 框架:
  • 一、core 内核部分
    • 1、conf
      • 将json、yaml、yml转为internal/config下对应的map结构数据
    • 2、mapping
      • 3、store
        • 3.1、cache
      • 4、stringx
      • 二、rest部分
      • 三、rpc部分
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档