Skip to content

farseer-go/doc

Repository files navigation

概述

English Document中文文档English Documentgithub Source

stars license go-version release Build codecov badge

1、介绍

基于Golang模块化完整的基础设施框架,创建现代化Web应用和APIs

使用目前最为流行的组件(共17个组件),并用模块化技术来使用这些组件。

框架完美支持 DDD领域驱动 的战术设计,如仓储资源库应用层事务领域事件应用层动态WebAPI

它有一个.net core 成熟版本,已经使用了10多年,非常棒

?> 不用担心框架会让你依赖过多的包,farseer-go的组件都是独立的包,不使用的包不会下载到您的应用程序中

2、有什么特点?

  • 统一配置:所有的配置被整合到./farseer.yaml

  • 优雅:所有的模块都遵循开发者体验优先为原则。

  • 模块化:完整的模块化系统,使你能够开发可重复使用的应用程序模块。

  • 领域驱动:帮助你实现基于DDD的分层架构并构建可维护的代码库。

  • 健康检查:应用启动后会定向FOPS中心上报当前应用的健康状态。并在fops中提供查询界面。

  • 分布式日志:通过flog打印日志,你除了在控制台可以看到,也可以在fops中查询。

  • 链路追踪:隐式为您实现链路追踪,并提供API请求日志、慢查询,并在fops中提供查询界面。

!> FOPS是专为farseer-go框架打造的一款运维平台。支持:链路查询、慢SQL、应用日志、健康检查、应用部署(Docker swarm)等能力。

3、集成的组件

包名 描述
fs 基础核心包 go-versionreleaseBuildcodecovbadge
collections 数据集合 go-versionreleaseBuildcodecovbadge
webapi web api服务 go-versionreleaseBuildcodecovbadge
async 异步编程 go-versionreleaseBuildcodecovbadge
mapper 对象转换 go-versionreleaseBuildcodecovbadge
cacheMemory 本地缓存 go-versionreleaseBuildcodecovbadge
redis client go-versionreleaseBuildcodecovbadge
data 数据库ORM go-versionreleaseBuildcodecovbadge
elasticSearch client go-versionreleaseBuildcodecovbadge
eventBus 事件总线 go-versionreleaseBuildcodecovbadge
queue 本地队列 go-versionreleaseBuildcodecovbadge
tasks 本地任务 go-versionreleaseBuildcodecovbadge
fSchedule 分布试调度client go-versionreleaseBuildcodecovbadge
utils 工具集 go-versionreleaseBuildcodecovbadge
rabbit client go-versionreleaseBuildcodecovbadge
etcd client go-versionreleaseBuildcodecovbadge
linkTrace 链路追踪 go-versionreleaseBuildcodecovbadge
redisStream redis mq (即将推出)

4、如何开始

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/

4、farseer-go框架演示

我们提供了模拟一个小型电商网站,这个DEMO用到的技术有:

  • ddd:使用领域驱动设计
  • ioc:使用ioc/container,做解耦、注入、依赖倒置
  • webapi:api服务,并使用动态api技术
  • data:数据库操作
  • redis:redis操作
  • eventBus:事件驱动 您可以把它下载到本地并运行起来

6、Stargazers

Stargazers repo roster for @farseer-go/fs