中文文档、English Document、github Source
基于Golang模块化完整的基础设施框架,创建现代化Web应用和APIs
使用目前最为流行的组件(共17个组件),并用模块化技术来使用这些组件。
框架完美支持 DDD领域驱动
的战术设计,如仓储资源库
、应用层事务
、领域事件
、应用层动态WebAPI
。
它有一个.net core 成熟版本,已经使用了10多年,非常棒
?> 不用担心框架会让你依赖过多的包,farseer-go的组件都是独立的包,不使用的包不会下载到您的应用程序中
-
统一配置
:所有的配置被整合到./farseer.yaml
-
优雅
:所有的模块都遵循开发者体验优先为原则。 -
模块化
:完整的模块化系统,使你能够开发可重复使用的应用程序模块。 -
领域驱动
:帮助你实现基于DDD的分层架构并构建可维护的代码库。 -
健康检查
:应用启动后会定向FOPS中心上报当前应用的健康状态。并在fops中提供查询界面。 -
分布式日志
:通过flog打印日志,你除了在控制台可以看到,也可以在fops中查询。 -
链路追踪
:隐式为您实现链路追踪,并提供API请求日志、慢查询,并在fops中提供查询界面。
!> FOPS是专为farseer-go框架打造的一款运维平台。支持:链路查询、慢SQL、应用日志、健康检查、应用部署(Docker swarm)等能力。
包名 | 描述 | |
---|---|---|
fs | 基础核心包 | |
collections | 数据集合 | |
webapi | web api服务 | |
mapper | 对象转换 | |
cacheMemory | 本地缓存 | |
redis | client | |
data | 数据库ORM | |
elasticSearch | client | |
eventBus | 事件总线 | |
queue | 本地队列 | |
tasks | 本地任务 | |
fSchedule | 分布试调度client | |
utils | 工具集 | |
rabbit | client | |
etcd | client | |
linkTrace | 链路追踪 | |
monitor | 核心数据上报FOPS |
main.go
package main
import "github.com/farseer-go/fs"
import "github.com/farseer-go/fs/modules"
import "github.com/farseer-go/webapi"
func main() {
fs.Initialize[StartupModule]("your project Name")
}
// StartupModule 启动模块
type StartupModule struct { }
// DependsModule 依赖模块
func (module StartupModule) DependsModule() []modules.FarseerModule {
return []modules.FarseerModule{webapi.Module{}} // 加载webapi.Module模块
}
func (module StartupModule) PreInitialize() { }
func (module StartupModule) Initialize() { }
func (module StartupModule) PostInitialize() { }
func (module StartupModule) Shutdown() { }
?> 在main函数第一行,执行fs.Initialize
,开始初始化框架
运行后控制台打印加载信息:
2023-01-05 16:15:00 AppName: your project Name
2023-01-05 16:15:00 AppID: 199530571963039744
2023-01-05 16:15:00 AppIP: 192.168.3.55
2023-01-05 16:15:00 HostName: stedenMacBook-Pro.local
2023-01-05 16:15:00 HostTime: 2023-01-05 16:15:00
2023-01-05 16:15:00 PID: 22131
2023-01-05 16:15:00 ---------------------------------------
2023-01-05 16:15:00 Loading Module:webapi.Module
2023-01-05 16:15:00 Loading Module:main.StartupModule
2023-01-05 16:15:00 Loaded, 11 modules in total
2023-01-05 16:15:00 ---------------------------------------
2023-01-05 16:15:00 Elapsed time:0 ms modules.FarseerKernelModule.PreInitialize()
2023-01-05 16:15:00 Elapsed time:0 ms webapi.Module.PreInitialize()
2023-01-05 16:15:00 Elapsed time:0 ms main.StartupModule.PreInitialize()
2023-01-05 16:15:00 ---------------------------------------
2023-01-05 16:15:00 Elapsed time:0 ms webapi.Module.Initialize()
2023-01-05 16:15:00 Elapsed time:0 ms main.StartupModule.Initialize()
2023-01-05 16:15:00 ---------------------------------------
2023-01-05 16:15:00 Elapsed time:0 ms webapi.Module.PostInitialize()
2023-01-05 16:15:00 Elapsed time:0 ms main.StartupModule.PostInitialize()
2023-01-05 16:15:00 ---------------------------------------
2023-01-05 16:15:00 Initialization completed, total time:0 ms
2023-01-05 16:15:00 [Info] Web service is started:http://localhost:8888/
我们提供了模拟一个小型电商网站,这个DEMO用到的技术有:
- ddd:使用领域驱动设计
- ioc:使用ioc/container,做解耦、注入、依赖倒置
- webapi:api服务,并使用动态api技术
- data:数据库操作
- redis:redis操作
- eventBus:事件驱动 您可以把它下载到本地并运行起来