kafka基础kafka是一个开源的流处理平台,主要用于构建实时数据管道和流应用。它最初由LinkedIn开发,并在2011年成为Apache软件基金会的顶级项目。kafka架构kafka架构由存储层和计算层组成,如下图所示:存储层旨在高效存储数据,并且是一个分布式系统,因此如果您的存储需求随着时间的推移而增长,您可以轻松扩展系统以适应增长。计算层由生产者、消费者、流和连接器API四个核心组件组成,它们允许kafka跨分布式系统扩展应用程序。
使用开发框架sponge快速把单体web服务拆分为微服务
接着上一篇文章 一天多开发完成一个极简版社区后端服务 ,接下来使用工具sponge实战一个微服务集群项目community-cluster,点击查看community-cluster的完整项目代码,单体服务community-single拆分为微服务具体过程社区后端服务
使用开发框架sponge一天多开发完成一个简单版社区后端服务
community-single介绍community-single是一个极简版社区的后端服务,主要包括用户的注册、登录、关注等功能,创作内容(文本、图片、视频)的发布、评论、点赞、收藏等功能,这些功能在各个社区平台、视频平台、直播平台等都比较常见,可以作为学习参考用,点击查看完整的项目代码。community-single项目一开始设计为单体web服务,整个服务由生成代码工具sponge辅助完[...]
一个提高开发项目效率的开发框架sponge,支持mysql、mongodb、postgresql、tidb、sqlite
sponge介绍sponge是一个集成了 自动生成代码、Gin和GRPC 的基础开发框架。sponge拥有丰富的生成代码命令,生成不同的功能代码可以组合成完整的服务(类似人为打散的海绵细胞可以自动重组成一个新的海绵)。代码解耦模块化设计,很容易构建出从开发到部署的完整工程项目,只需在生成的模板代码上填充业务逻辑代码,极大的提高了开发效率和降低了开发难度。github地址:https://github.com/zhufuyi/sponge主要特性spon[...]
go test命令
gotest命令只运行单元测试,添加-bench=.参数,gotest同时执行单元测试和基准测试,当然可以通过正则过滤只运行基准测试,例如-bench=^Benchmark。添加-conver参数展示测试覆盖率。测试代码测试5种字符串拼接效果,共两个文件splice.go和splice_test.gosplice.go文件内容如下:packagespliceimport("bytes""fmt""strings[...]
go应用程序性能分析
1介绍pprof是一个可视化和分析数据的工具,pprof读取profile.proto格式的分析样本集合并生成报告以可视化和帮助分析数据,它可以生成文本和图形报告,是用来分析应用程序的性能重要工具,也可以作为其他用途,例如查看反汇编、和Linuxperf工具结合使用。2安装golang本身自带pprof工具,pprof可视化时需要依赖[...]
channel原理和应用
channel是一个数据管道,是goroutine之间数据通信桥梁,是线程安全的。channel分为有缓冲和无缓冲两种类型,其实无缓冲类型可以理解为有缓冲的一种特殊情况。1channel工作原理源码go/src/runtime/chan.gotypehchanstruct{qcountuint//当前队列中剩余元素个数dataqsizuint//环形队列长度,即缓冲区的大小,即make(chanT,N),N.bufunsafe.Pointer//环形队列指针elemsizeuint16//每个[...]
go runtime
#runtime#GMP#goroutinego语言组成有两部分,一部分是用户程序代码,一部分是runtime,runtime作用是为了实现额外功能,在程序运行时自动加载/运行的的一些模块,runtime由4部分组成:Scheduler:调度器管理所有的GMP,在后台执行调度循环。MemoryManagement:当代码需要内存时,负责内存分配工作。GarbageCollector:当内存不再需要时,负责回收内存。Netpoll:网络轮询负责管理网络FD相关的读写、就绪事件。调度器Scheduler协程调度器GMP
go调试工具
go调试工具1概念Delve是一个用于Go程序的源码级调试器,通过控制程序的执行与你的程序互动,评估变量,并提供线程/goroutine状态、CPU寄存器状态等信息,目标是为调试Go程序提供一个简单而强大的接口。使用方法:dlv[command]可用的命令:attach连接到正在运行的进程并开始调试。connect连接到一个无头调试服务器。core检查一个核心转储。dap[EXPERIMENTAL]启动一个通过DebugAdaptorProtocol(DAP)通信的TCP服务器。debug[...]
cobra
1基本概念Cobra是Go的CLI框架,它包含一个用于创建强大的现代CLI应用程序的库和一个用于快速生成基于Cobra的应用程序和命令文件的工具。Cobra基于三个基本概念commands,arguments和flags,其中commands代表行为,arguments代表数值,flags代表对行为的改变,命令使用示例:APPNAMEVERBNOUN--ADJECTIVE#或者APPNAMECOMMANDARG--FLAG#server是commands,port是flaghugoserver--port=1313#clone是comm[...]