go-kratos写代码浅记
使用Kratos进行代码的开发,对一些简单功能进行简单的记录。
使用Git Submodule方式管理proto文件,各项目直接依赖IDL文件本身,依赖源头均来自git子仓,保证依赖源的唯一性。对齐各服务间的proto文件版本。
依赖问题引发的问题是很多的,对于依赖的管理也会出现很多,例如:
kratos 的proto http 插件——protoc-gen-go-http
,对body以及query参数只能选择其一支持,不论其Method
为何种。query、vars支持同时存在。
源码可查:go-kratos/kratos/cmd/protoc-gen-go-http/template.go
。
这一部分由于内部技术栈的问题,需要统一,同时,需要有更多的改造,接入公司内部RPC,导入一致的服务治理等需求,所以需要一个Go版本的发号器,搜了网上很多版本,发现并没有Leaf
的替代版本,而Leaf的实现细节有很多文章都分析过了,这样看起来移植一下也不困难了。
美团Leaf的技术细节在官方文档中介绍的很详细,这里参考其技术实现细节Leaf——美团点评分布式ID生成系统。
作为一个文件服务器,文件就分为大文件和小文件,小文件嘛,好处理,毕竟不大,主要关注的点就是,细碎,需要集中管理,比如将其塞到一个文件中合并存储,当然,这玩意不是我现在关注的点。这里关注的是大文件的操作。
传输层:UDP和TCP。
这俩协议真是有太多说的了,毕竟网络里头,TCP/IP协议栈,可太重要了。
常见的,TCP是面向连接的,UDP是面向无连接的。
在互通之前,面向连接的协议会先建立连接。例如,TCP会三次握手,而UDP不会。