2021年1月3日
开发框架要好用,可扩展性、赋予开发者的介入能力很重要。为此我们设计了一套事件机制,让开发人员能够自由介入每次请求的全生命周期,通过Context携带的资源在事件处理函数间自由翱翔。 生命周期 目前事件设计的还很不合理,跟其它模块关联比较多。思路是这样,以后慢慢调整。 Incoming Request │ └─▶ Routing │ └─▶ ………
阅读全文
2021年1月2日
很多场景中,高效的数据结构都离不开树状结构,什么完全二叉树、红黑树、Radix树、图等好多名词都是具备子孙节点的树状结构,自由灵活的节点内容更让使用者扑朔迷离。一般树都是通过链表来实现,也有通过数组实现的;链表实现自由灵活相对简单,数组实现比较复杂而且不能随意变更节点数量,有其局限性,但是数组实现的内存占用更小更高效。GoFast将采用数……
阅读全文
2021年1月1日
监控告警选择Prometheus平台;收集处理应用日志选择EFK。 Open-falcon、Prometheus、Zabbix监控告警系统对比: https://www.jianshu.com/p/210dc70b493e https://www.sohu.com/a/342812843_411876 Zabbix详解: ………
阅读全文
2021年1月1日
在这里我对GoFast的主要设计思路做一些概要介绍。 框架核心流程 源代码开始的地方:gofast/fst/fst.go 说明:以后我们也把这些后台WebServer叫做Application,简称App。 CreateServer 每个应用都要从这里开始,在这里我们定义了一个配置结构AppConfig,将来所有的配置参数都放在这里面,配 ………
阅读全文
2020年12月31日
[Preview] 当前持续完善中,不可生产中使用 [Preview] GoFast Micro-Service Framework GoFast是一个用Go语言实现的微服务开发框架。他的产生源于目前流行的gin、go-zero、fastify等众多开源框架;同时结合了作者多年的开发实践经验,很多模块的实现方式都是作者首创;当然也免不了不 ………
阅读全文
2020年12月29日
Go学习第四篇文章已经学习了类型的方法集,分值接收者和指针接收者,而且值和指针变量都可以自由调用这些方法。但接口的变量却不能随意调用实现者的方法集,这里有文章。 接口的认识 Go语言中接口(interface)非常重要,他被用来约定一组行为,凡是具备这一组行为的类型,都可以看做是该接口的派生类型。利用这种特性,我们就能抽象出一类行为,将来 ………
阅读全文
2020年12月29日
Go语言中的unsafe包非常简单,但是威力强大,用不少就出问题。整个包就这些代码: 1 2 3 4 5 6 7 package unsafe type ArbitraryType int type Pointer *ArbitraryType func Sizeof(x ArbitraryType) uintptr func ………
阅读全文
2020年12月28日
参考: https://oracle.github.io/node-oracledb/INSTALL.html#instzip https://www.cnblogs.com/rysinal/p/7779055.html 关键是Oracle客户端链接库的安装和环境变量的设置;之后如果服务器是没有外网的话,编译oracledb包的时候可能会 ………
阅读全文
2020年12月28日
goroutine 在Go里,每一个并发执行的活动成为goroutine。 当一个程序启动时, 只有一个goroutine来调用main函数,称它为主goroutine。新的goroutine通过go语句进行创建。语法上,一个go语句是在普通的函数或者方法调用前加上go关键字前缀。main函数返回时,main函数中其他所有 ………
阅读全文
2020年12月27日
Go语言最大的特色就是其并发编程模型,多处理器的时候还可以自动实现真正的并行计算。这些复杂的调度算法被打包在了Go语言运行时当中。 分时调度 先回顾一下操作系统。 操作系统本身就是对硬件资源的一个大调度器;如果没有多任务的需求,我们都不需要这么复杂的调度,不需要分时操作系统;一直算个不停,一条路走到黑反而是利用率最高的;事实上最早期的操作 ………
阅读全文