Skip to content

obse4/ebase

 
 

Repository files navigation

ebase

ebase是一个使用Go编写的微服务框架,可以通过配置文件切换不同的服务类型。

主要功能

  • 支持切换服务类型,包括HTTP服务器,gRPC服务器,定时任务,Kafka消费服务。
  • 提供心跳检测功能。 (简易实现)
  • 提供服务注册功能。 (简易实现)

快速开始

要使用ebase,首先需要下载和安装Go。然后,可以使用go get命令下载并安装ebase

go get github.com/jilin7105/ebase

给eb传入当前工作目录, 由于各种原因, 防止ebase获取不到工作目录,或者获取不准确

	path, _ := os.Getwd()

	ebase.SetProjectPath(path)

在代码中,当需要打印日志时,可以使用logger:

import "github.com/jilin7105/ebase/logger"

logger.Info("This is an info log.")
logger.Debug("This is a debug log.")
logger.Warn("This is a warning log.")
logger.Error("This is an error log.")

在代码中使用数据库

import "github.com/jilin7105/ebase"
db := ebase.GetDB("db_name")
//此处返回gorm.db对象
if db == nil {
    panic("数据库不存在")
}
type Product struct {
    gorm.Model
    Code  string
    Price uint
}
var product Product
db.First(&product, 1)

在代码中使用redis

import "github.com/jilin7105/ebase"
rdb := ebase.GetRedis("redis_name")
if rdb == nil {
    panic("redis 不存在")
}
val, err := rdb.Get(ctx, "score").Result()
if err != nil {
    log.Fatal(err)
}
w.Write([]byte(fmt.Sprintf("score的值: %v", val)))

在代码中使用 Kafka

import (
    "github.com/Shopify/sarama"
	"github.com/jilin7105/ebase"
)
kp := *ebase.GetKafka("Producer_name")
if kp == nil {
    panic("KafkaProducer 不存在")
}
topic := "your topic"

msg := &sarama.ProducerMessage{
    Topic: "your topic",
	//newManualPartitioner: true  #是否手动分配分区
	//如果手动分区选择true ,需要手动设置分区 增加如下代码
	//Partition: int32(your_partition_number),  // 设置分区号
    Value: sarama.StringEncoder("Hello World"),
}



partition, offset, err := kp.SendMessage(msg)
if err != nil {
    log.Fatalln("Failed to send message:", err)
}

log.Printf("Message is stored in topic(%s)/partition(%d)/offset(%d)\n", topic, partition, offset)

微服务

micro : # 微服务相关配置  (非必须)
  is_reg : true  #是否有服务注册
  is_heart_push : true  #是否心跳推送
  heart_push_speed : 5  #心跳推送速度 单位 秒  如果不填写将只执行1次 ,默认用户方法内部处理心跳逻辑

都是简单实现, 服务检测到微服务相关配置后

	//增加心跳推送   未使用 heart_push_speed   go f()  形式执行一次
	//如果使用heart_push_speed   
	//原理 go fun(){ 
	//    for{
	//		f()    //你的方法
	//		time.sleep(heart_push_speed  )
    //    }       
	//}
	ebase.SetHeartbeatPush(func() error {
		log.Println("HeartbeatPush")
		return nil
	})

	//增加服务注册   go f()  形式执行一次
	ebase.SetRegfunc(func() error {
		log.Println("Regfunc")
		return nil
	})

配置文件相关

配置文件示例,仅支持yml格式

 # 默认config.yml 
 # 可以通过-i 进行指定
 # 配置文件需要在项目根目录下
 go build && ./{你的执行文件名称}  -i  config-online.yml 

辅助函数

辅助函数文档

任务 完成
创建项目
创建配置文件
解析命令行参数
加载配置文件
初始化Eb结构体
创建HTTP服务
创建gRPC服务
创建任务服务
创建Kafka服务
添加测试
添加文档

About

作者超级懒

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%