RK Boot 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
RK Boot 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
RK Boot 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
RK Boot 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
RK Boot 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发微服务框架
开源组织
地区 国产
投 递 者 dongxuny
适用人群 未知
收录时间 2021-09-10

软件简介

RK Boot 是企业级 Go 语言微服务框架。灵感来源于 Spring Boot 项目。

与传统的微服务框架不同,rk-boot 致力于【整合现有流行框架】以及【整合企业级别组件】的目的。使用者可以通过 rk-boot,通过简短的 YAML 文件,在1分钟之内,快速搭建【符合企业级别】要求的 Go 微服务。用户可以根据需要,选择底层 RPC 通信框架,例如 GingRPC

为什么需要 rk-boot?

  • 通过 rk-boot,构建企业级别的 Go 微服务项目。

  • 通过 rk-boot,自动添加企业级别日志监控调用链权限到微服务中。

  • 通过 rk-boot,快速切换核心依赖,例如 RPC 框架,日志框架

  • 通过 rk-boot,节省开源框架的复杂学习过程,直接以 YAML 文件的形式,导入功能,无需写代码。

  • 自定义 Entry,用户可以基于 rk-boot 拓展自己的微服务,实现无代码启动服务的目的。

安装

go get -u github.com/rookie-ninja/rk-boot

快速开始

用 YAML 文件,启动 Gin 微服务

---
gin:
  - name: greeter
    port: 8080
    sw:
      enabled: true     # Enable swagger UI
    commonService:
      enabled: true     # Enable common service
    tv:
      enabled:  true    # Enable RK TV
package main

import (
	"context"
	"github.com/rookie-ninja/rk-boot"
)

func main() {
	// Create a new boot instance.
	boot := rkboot.NewBoot()

	// Bootstrap
	boot.Bootstrap(context.Background())

	// Wait for shutdown sig
	boot.WaitForShutdownSig(context.Background())
}
$ go run main.go
$ curl -X GET localhost:8080/rk/v1/healthy
{"healthy":true}

gin-sw

用 YAML 文件,启动 gRPC 微服务

---
grpc:
  - name: greeter       # Name of grpc entry
    port: 8080          # Port of grpc entry
    enableReflection: true
    commonService:
      enabled: true     # Enable common service
    tv:
      enabled: true     # Enable RK TV
    sw:
      enabled: true     # Enable Swagger UI
package main

import (
	"context"
	"github.com/rookie-ninja/rk-boot"
)

// Application entrance.
func main() {
	// Create a new boot instance.
	boot := rkboot.NewBoot()

	// Bootstrap
	boot.Bootstrap(context.Background())

	// Wait for shutdown sig
	boot.WaitForShutdownSig(context.Background())
}
$ go run main.go
$ curl -X GET localhost:8080/rk/v1/healthy
{"healthy":true}

grpc-sw

访问 RK TV:http://localhost:8080/rk/v1/tv

grpc-tv

Gin 框架中间件(middleware)

在任何 RPC 框架中,中间件/拦截器是不可或缺的一部分,比如日志拦截器(对于每一个 RPC 请求写日志),权限拦截器(对以每一个 RPC 请求验证权限)等等。rk-boot 中定义了一系列常用的【企业级别】拦截器,请访问 rk-gin,或者 rk-boot 基础指南获取更多信息。

  • 日志拦截器
  • Prometheus Metrics 拦截器
  • 权限拦截器
  • 调用链拦截器
  • Panic 拦截器
  • 原数据拦截器

例子:日志拦截器

无需编写代码!

修改 YAML 文件,并启动 Go 服务即可。

gin:
  - name: greeter                             # Required
    port: 8080                                # Required
    commonService:                            # Optional
      enabled: true                           # Optional, default: false
    interceptors:                             # Optional
      loggingZap:
        enabled: true                         # Enable logging middleware
$ go run main.go
// 发送请求
$ curl -X GET localhost:8080/rk/v1/healthy
{"healthy":true}
# 打印日志如下:
------------------------------------------------------------------------
endTime=2021-07-05T23:42:35.588164+08:00
startTime=2021-07-05T23:42:35.588095+08:00
elapsedNano=69414
timezone=CST
ids={"eventId":"9b874eea-b16b-4c46-b0f5-d2b7cff6844e"}
app={"appName":"rk-demo","appVersion":"master-f414049","entryName":"greeter","entryType":"GinEntry"}
env={"arch":"amd64","az":"*","domain":"*","hostname":"lark.local","localIP":"10.8.0.2","os":"darwin","realm":"*","region":"*"}
payloads={"apiMethod":"GET","apiPath":"/rk/v1/healthy","apiProtocol":"HTTP/1.1","apiQuery":"","userAgent":"curl/7.64.1"}
error={}
counters={}
pairs={}
timing={}
remoteAddr=localhost:56274
operation=/rk/v1/healthy
resCode=200
eventStatus=Ended
EOE

其他拦截器

请访问 rk-gin,或者 rk-boot 基础指南获取更多信息

gRPC 框架拦截器(interceptor)

在任何 RPC 框架中,中间件/拦截器是不可或缺的一部分,比如日志拦截器(对于每一个 RPC 请求写日志),权限拦截器(对以每一个 RPC 请求验证权限)等等。rk-boot 中定义了一系列常用的【企业级别】拦截器,请访问 rk-grpc,或者 rk-boot 基础指南获取更多信息。

  • 日志拦截器
  • Prometheus Metrics 拦截器
  • 权限拦截器
  • 调用链拦截器
  • Panic 拦截器
  • 原数据拦截器

 例子:日志拦截器

无需编写代码!

修改 YAML 文件,并启动 Go 服务即可。

---
grpc:
  - name: greeter                   # Name of grpc entry
    port: 8080                      # Port of grpc entry
    commonService:
      enabled: true                 # Enable common service for testing
    interceptors:
      loggingZap:
        enabled: true
$ go run main.go
// 发送请求
$ curl -X GET localhost:8080/rk/v1/healthy
{"healthy":true}
# 打印日志如下:
# logs would be printed as bellow.
------------------------------------------------------------------------
endTime=2021-07-09T23:44:09.81483+08:00
startTime=2021-07-09T23:44:09.814784+08:00
elapsedNano=46065
timezone=CST
ids={"eventId":"67d64dab-f3ea-4b77-93d0-6782caf4cfee"}
app={"appName":"rk-demo","appVersion":"master-f414049","entryName":"greeter","entryType":"GrpcEntry"}
env={"arch":"amd64","az":"*","domain":"*","hostname":"lark.local","localIP":"10.8.0.2","os":"darwin","realm":"*","region":"*"}
payloads={"grpcMethod":"Healthy","grpcService":"rk.api.v1.RkCommonService","grpcType":"unaryServer","gwMethod":"","gwPath":"","gwScheme":"","gwUserAgent":""}
error={}
counters={}
pairs={"healthy":"true"}
timing={}
remoteAddr=localhost:58205
operation=/rk.api.v1.RkCommonService/Healthy
resCode=OK
eventStatus=Ended
EOE

其他拦截器

请访问 rk-grpc,或者 rk-boot 基础指南获取更多信息

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2019/11/28 11:32

rk输入法

删除多余的输入法要注意:除了IME系列外OpenWnn也是一个输入法

0
0
发表了博客
2016/12/14 18:25

RK3288 GPIO 驱动

简介 GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。 RK3288 有 9 组 GPIO bank: GPIO0,GPIO1, ..., GPIO8。每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分(不是所有 bank 都有全部编号,例如 GPIO5 就只有 B0~B7, C0~C3)。 每个 GPIO 口除了通用输入输出功能外,还可能有其它复用功能,例如 GPIO5_B4,可以复用成以下功能之一: spi0_clk ts0_data4 uar...

0
1
发表了博客
2019/11/28 17:11

rk进入工程测试

Intent intent=new Intent(); intent.setClassName("com.DeviceTest","com.DeviceTest.DeviceTest"); getContext().startActivity(intent);

0
0
发表了博客
2019/09/12 17:40

rk 版本号 Setting

/disk3/myproject/duoduo-rk3399-industry71-new/packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java private static final String PRODUCT_VERSION= SystemProperties.get("ro.product.version","1.0.0"); //setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY); setStringSummary(KEY_BUILD_NUMBER, PRODUCT_VERSION);...

0
0
2020/03/03 17:57

动画:BF 和 RK 字符串匹配算法(上)

点击蓝色 “小鹿动画学编程” 关注我哦! 加个 “星标” ,每天一篇动画喂饱你! 作者 | 小鹿 来源 | 小鹿动画学编程 写在前边 今天这篇文章主要入门一下字符串匹配算法,说到字符串匹配,想到了实际中最常用到的方法 indexOf(),对于内部的字符串是如何进行匹配的呢,还要从数据结构和算法的角度去理解和学习。 字符串匹配算法有很多,比如,今天要分享到的 BF 和 RK 算法,以及后续要分享到的 KMP 算法、BM 算法、Sunday 算法等...

0
0
发表了博客
2019/02/26 18:37

RK编译出错,manifest为空

https://blog.csdn.net/fmc088/article/details/80333625 编译出错 Install: out/target/product/rk3288/system/priv-app/TeleService/TeleService.apk Install: out/target/product/rk3288/system/priv-app/Telecom/Telecom.apk Install: out/target/product/rk3288/system/priv-app/TelephonyProvider/TelephonyProvider.apk Install: out/target/product/rk3288/system/priv-app/VpnDialogs/VpnDialogs.apk Install: out/tar...

0
0
发表了博客
2016/01/10 10:27

基于rk3288的资料

http://www.t-firefly.com/zh/ http://chipspark.com/download/popMetal http://wiki.radxa.com/Rock2/download http://dl.radxa.com/rock2/ http://www.gaosupcb.com/forum.php?mod=forumdisplay&fid=136 http://rockchip.fr/ 3188 https://1d5c1390da18fe8be0f59839c759911b38e0ac00.googledrive.com/host/0B8Rj01kY33P9UWl5cEsxZ21HSVk/unsure/RKDocs/...

1
0
发表了博客
2018/01/19 19:50

总结——字符串 RK-Hash

RK-hash 字符串 1.基本思想 hash基本思想:将Object通过函数转化成数值,则可以通过比较hash值来比较Object是否相等。。 RK-hash基本思想:将字符串转化成数值。 2.具体做法 设有一个字符串S,长度|S|=n,该字符串的字符集的元素个数小于等于d,则字符串S可以看成一个n位的d进制数。 将S的前i位前缀S[0...i]?映射为整数的递推公式为:hash[i]=(hash[i-1]*p+idx(s[i]))%mod 多项式计算:hash[i] = S[i] + d * (S[i-1] + d * (S[i...

0
0
发表了博客
2019/10/14 11:25

RK 平台 MIPI 点屏注意事项

2019-10-14 关键字:rk3288 MIPI 点屏 rk 平台关于 MIPI 屏幕的点屏流程已经非常完善了,基本上只要确定了硬件没问题、接线没问题、屏幕没问题,再稍稍配置一下 dtsi 里的参数就可以的了。 MIPI 点屏流程大致可以概括为以下几步: 1、确认硬件环境; 2、确认相关接口管脚; 3、配置屏幕背光 dts; 4、配置 MIPI 屏幕参数; 5、屏幕显示效果调校。 1、确认硬件环境 确认硬件环境这个活理论上来说是由硬件人员来提供保证的,大多数...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
6 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部