fushin

package module
v1.1.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

README

FuShin

FuShin Stone

Fushin是一个适用于JJApplication的一站式微服务模板生成库

使用fushin 生成对应的微服务模板

或者使用go module Fushin搭建一个JJApplication

安装

# need at least go1.17
$ go get github.com/JJApplication/fushin
# or
$ go install github.com/JJApplication/fushin

微服务类型

在JJApplication中支持以下服务类型

  • web
  • module
  • noengine
  • client
  • empty

web为典型的提供web体验的微服务 module为服务的模块 noengine为典型的NoEngine服务 client为典型的客户端服务 empty为一个空白的模板

微服务通信协议

默认支持的通信协议在对用户侧基于http, http2, ws 在服务端基于http或tcp的rpc, 基于unix domain的uds, 和自定义protof - Plnack

服务管理机制

所有的服务会生成一个模型文件${App}.pig 模型文件中记录了服务的基础信息,通信协议,对外端口等 模型文件由octopusTree统一管理,由Apollo服务解析存储,并做统一的管理调度

服务间通信机制

在服务器上的各个微服务之间的通信全部基于unix domain 由服务octopusTwig管理调用服务间uds的通信传输

服务模型设计

当前模型文件为基于jsonpig文件, 支持环境变量和自定义字段覆盖 后期支持yml的文件格式 模型文件的定义基于octopus_meta

引入Fushin

使用Demo()快速启动一个例子

import (
    "github.com/JJApplication/fushin"
)

package main
func main() {
	// Demo会默认开启一个http server和一个uds Server
	fushin.Demo()
}

结果

{"level":"INFO","time":"2022-8-14 15:36:33","caller":"http/engine_log.go:30","message":"<Server> signal [interrupt] registered"}
{"level":"INFO","time":"2022-8-14 15:36:33","caller":"http/engine_log.go:30","message":"<Server> server init success"}
{"level":"INFO","time":"2022-8-14 15:36:33","caller":"http/engine_log.go:30","message":"<Server> server will listen on 0.0.0.0:10086"}
{"level":"INFO","time":"2022-8-14 15:36:33","caller":"http/engine_log.go:30","message":"<Server> server domain name is []"}
{"level":"INFO","time":"2022-8-14 15:36:33","caller":"http/engine_log.go:30","message":"<Server> server debug: false"}
{"level":"INFO","time":"2022-8-14 15:36:33","caller":"http/engine_log.go:30","message":"<Server> server enableLog: true"}
{"level":"INFO","time":"2022-8-14 15:36:33","caller":"uds/log.go:33","message":"<UDSServer> uds server listen @ [/tmp/DemoUDS]"}
使用Fushin模块

Fushin对微服务所需的大部分模块做到了封装和开箱即用 例如引入uds server

package main

import (
	"fmt"

	"github.com/JJApplication/fushin/server/uds"
)

func main() {
	us := uds.New("unix socket address")
    // change config
	us.Option.MaxSize = 1<<20
	us.Option.AutoRecover = true
	if err := us.Listen(); err != nil {
		fmt.Println(err)
	}
}

编译/贡献

编译此项目

cd Fushin && go mod download
go build

Fushin的可执行二进制仅提供根据模板生成项目代码的能力

运行基准测试

go test -v ./xxx

使用Fushin开发的项目

Documentation

Overview

Package fushin

Package fushin 基于gin的框架模板 提供通用的完整的模块化的api server module

Package fushin

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Demo

func Demo()

Demo 启动一个demo demo 包含了server uds, http logger of zap

func DemoNoLogger added in v1.1.13

func DemoNoLogger()

Types

This section is empty.

Directories

Path Synopsis
Package cache
Package cache
client
smtp
Package smtp
Package smtp
uds
Package uds
Package uds
Package coredump
Package coredump
Package coroutine
Package coroutine
Package cron
Package cron
db
embed
Package embed fushin是实现的k-v数据库内部实现 可持久化为.fushindb的数据库文件格式
Package embed fushin是实现的k-v数据库内部实现 可持久化为.fushindb的数据库文件格式
mongo
Package mongo
Package mongo
mongo/operator
Package operator
Package operator
Package errors 封装的错误处理包
Package errors 封装的错误处理包
log
Package log
Package log
private
Package private 默认的内置日志
Package private 默认的内置日志
Package lumberjack
Package lumberjack
Package pkg 内部需要使用的常量
Package pkg 内部需要使用的常量
server
http
Package http
Package http
uds
Package uds
Package uds
Package symbol
Package symbol
utils
autocert
Package autocert
Package autocert
buf
Package buf
Package buf
cmd
Package cmd
Package cmd
env
Package env env包提供环境变量的操作同时支持dotenv
Package env env包提供环境变量的操作同时支持dotenv
env/autoload
Package autoload 旁载后自动加载.env文件
Package autoload 旁载后自动加载.env文件
files
Package files 文件操作
Package files 文件操作
json
Package json
Package json
proc
Package proc 获取运行时pid以及记录到文件
Package proc 获取运行时pid以及记录到文件
stream
Package stream 流处理
Package stream 流处理
string
Package string
Package string
watcher
Package watcher
Package watcher

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL