douyu / jupiter Goto Github PK
View Code? Open in Web Editor NEWJupiter: Governance-oriented Microservice Framework.
Home Page: http://jupiter.douyu.com
License: Apache License 2.0
Jupiter: Governance-oriented Microservice Framework.
Home Page: http://jupiter.douyu.com
License: Apache License 2.0
go get -v github.com/douyu/jupiter/tools/jupiter
douyu/jupiter/tools/jupiter/new/tools.go:35:8: invalid argument newArgs (type cli.Args) for len
douyu/jupiter/tools/jupiter/new/tools.go:39:17: invalid operation: newArgs[0] (type cli.Args does not support indexing)
douyu/jupiter/tools/jupiter/main.go:31:15: cannot use []cli.Command literal (type []cli.Command) as type []*cli.Command in assignment
会报错,望尽快修复
Type: bug report
这里应该是无序列表的第一项吧,按照issue#15中的方式没能提pr
,只好新建一个issue
。
Type: feature request
Let Jupiter generate from Pb file pb.go File, support optional generation of client and server code, support online swagger
Add any other context or screenshots about the feature request here.
Have you considered supporting the microservice configuration center?
eg:apollo
Type: feature request
update ratelimit/circuit-breaker to sentinel-golang 0.3.0
Add any other context or screenshots about the feature request here.
Type: feature request
Improve metrics for those components that are missing metrics collection.
Add any other context or screenshots about the feature request here.
目前自动生成的目录工程main.go在demo/cmd下面,这种情况下面我执行swag init的时候无法自动化生成文档,我将main.go移动到demo目录下面即可,使用的框架是gin以及gin-swagger
Type: feature request
Add any other context or screenshots about the feature request here.
Type: bug report
When using Jupiter, the following error occurs when Windows launches the specified configuration file:
panic:
msg: new engine
errVerbose: runtime error: slice bounds out of range [:-1]
github.com/douyu/juno-agent/vendor/github.com/douyu/jupiter.(*Application).loadConfig-fm
Can support Windows system specified configuration file startup
os: windows 8.1
go: 1.13.9
在window环境下,项目编译报错,希望兼容window信号处理;
Type: bug report
go build .
`
..\jupiter\signal.go:34:3: undefined: syscall.SIGSTOP
..\jupiter\signal.go:35:3: undefined: syscall.SIGUSR1
..\jupiter\signal.go:36:3: undefined: syscall.SIGUSR2
..\jupiter\signal.go:46:26: undefined: syscall.SIGSTOP
..\jupiter\signal.go:46:43: undefined: syscall.SIGUSR1
..\jupiter\signal.go:50:42: undefined: syscall.SIGUSR2
note: module requires Go 1.14
`
提供window信号处理支持
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\xubing\AppData\Local\go-build
set GOENV=C:\Users\xubing\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\xubing\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Go
set GOSUMDB=off
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\xubing\AppData\Local\Temp\go-build430993566=/tmp/go-build -gno-record-gcc-switches
Type: feature request
Add any other context or screenshots about the feature request here.
Type: feature request
support Apollo configuration center for datasource
Add any other context or screenshots about the feature request here.
Type: bug report
➜ tmp go get -u github.com/douyu/jupiter/tools/jupiter
# github.com/douyu/jupiter/tools/jupiter/new
../../../go/src/github.com/douyu/jupiter/tools/jupiter/new/tools.go:35:8: invalid argument newArgs (type cli.Args) for len
../../../go/src/github.com/douyu/jupiter/tools/jupiter/new/tools.go:39:17: invalid operation: newArgs[0] (type cli.Args does not support indexing)
执行完 go get -u github.com/douyu/jupiter/tools/jupiter
后 jupiter
命令可用
configuration driver govern server
The govern server can be configured as standard through the framework,let's be better and easier to use govern server
Add any other context or screenshots about the feature request here.
Line 72 in 2548643
bytes.Buffer for some long string or byte concatenation, it can indeed improve performance, but don’t forget that this will open up a space of const smallBufferSize = 64 size, I found that many of your code in golang are written like this, if for comparison A small amount of splicing, please do not open up so much space, this is a waste, it is better to use slice append+strings.Join to complete, please do not write some more poke code, please
Type: feature request
内部环境的部分应用元数据不通用,需要重新设计jupiter的元数据。
以便支持指标采集、负载均衡、链路染色等功能。
Add any other context or screenshots about the feature request here.
Type: feature request
相关pr
#58
1,调整了servers 注册、注销时机(将注销放在了stop中,将注册测defer挪到了eg.go外的线程中)
2,调整了注册服务的关闭时机(放在了最后)
3,统一调整了server下的 listen时机 (统一放在了serve方法中,newServer不在承担打开监听的事)
现在有过程大致是这样的:
1,server.newServer 主要读取配置初始化等事情
2,注册服务 (未启动服务之前就注册服务)
3,server.Serve 主要做启动服务的事情
4, 注销服务(server线程停止后注销)
5, server.Stop 主要做停止的事情
启动一个网络服务一般会有分两步 listen 和serve,若将这两部全部放在 Serve环节
将有个问题,就是注册服务,无法正确拿到启动信息,如:实际启动端口 (动态端口时)
另外,注册的时机,比启动的时机稍微提前。
调整后:
1,server.newServer
2,server.Serve
3,注册服务 (待Serve线程启动后,等待1毫秒后注册)
4, server.Stop
5,注销服务 (在触发server.Stop 后进行注销服务)
即在Serve 启动服务后,进行服务注册。在服务stop后进行服务注销。
这样调整后,注册服务时,获取的server.info 为Serve后的状态,即可以取到动态端口号等信息。
因调整涉及注册时机,所以影响较大,请评估风险,以及可能遇到的问题。
过程中参考了gomicro 的注册机制,是在listen之后进行的
为了规范化开发,推动社区加入贡献,特编写本提案. 旨在阐述, 如何规范化开发流程
Type: bug report
func (t *Time) EndOfDay() *Time { y, m, d := t.Date() return &Time{time.Date(y, m, d, 23, 23, 59, int(time.Second-time.Nanosecond), t.Location())} }
第二个23应该为59吧。
func (t *Time) EndOfHour() *Time { y, m, d := t.Date() return &Time{time.Date(y, m, d, t.Hour(), 23, 59, int(time.Second-time.Nanosecond), t.Location())} }
第一个23应该为59吧。
是否有计划用actions 完全取代 TravisCI
感觉actions 速度上比 TravisCI更好点 ,另外也是github原生的。
Type: feature request
如果可以通过,我将尝试按照 .travis.yml 的功能 补充 .github/workflows/go.yml文件
Add any other context or screenshots about the feature request here.
Type: bug report
总共两个地方啊啊啊啊
redis_cmds.go
和
cluster_cmds.go
你们修了 cluster_cmds.go
没修 redis_cmds.go
Type: feature request
ent 是 facebook一个很好的orm lib, 目前也非常成熟了。
考虑是否支持。
Add any other context or screenshots about the feature request here.
Type: bug report
jupiter/pkg/server/xgin/middleware.go
Line 186 in a1058be
Type: feature request
Add any other context or screenshots about the feature request here.
Type: feature request
Add any other context or screenshots about the feature request here.
Type: feature request
Add any other context or screenshots about the feature request here.
go version
)?$ go version
go env
)?go env
Output$ go env
Type: bug report
there are few mistakes in quickstart.md
建议增加脚手架工具,自动生成项目目录。并且可以弄一套比较完整的功能点完整的demo
基于ETCD的GRPC服务动态端口的问题:
如果GRPC服务基于ETCD,配置如下:
[jupiter.server.grpc]
port = 0
如果先启动客户端,再启动服务端,现象同#64【基于ETCD的GRPC服务】一样的错误。
再正式环境中,经常会出现只更新某个服务的现象。
Type: feature request
Add any other context or screenshots about the feature request here.
在“1.3.3 多服务端框架”建议增加对goframe框架的内置支持
以下场景是基于ETCD的GRPC服务:
在GRPC服务端启动后,再启动GRPC客户端,一切正常。但是在此时把GRPC服务端重新启动后,GRPC客户端不管等多久,GRPC客户端都连接不上GRPC服务端。
Type: bug report
redis_cmds.go
HIncrBy 哈希field自增
func (r *RedisStub) HIncrBy(key string, field string, incr int) {
r.Client.HIncrBy(key, field, int64(incr))
}
希望 增加 apigateway 的事例
Type: feature request
Add any other context or screenshots about the feature request here.
建议增加swagger示例或自动生成文档功能
建议增加权限管理casbin的示例或支持
Type: bug report
通过shell远程连接服务器,然后使用nohup启动服务,shell断开进程就退出,只要基于jupiter编写的程序都会,如juno、juno-agent、example\helloworld
Ubuntu 18.04
退出原因是shell断开会触发hangup信号,而框架对hangup信号处理方式为退出服务
希望能支持熔断和服务降级
使用场景:
在本地使用的单个Redis:
redisStub := redis.StdRedisConfig("myredis").Build()
在正式环境使用的是Redis集群:
redisStub := redis.StdRedisClusterConfig("myredis").Build()
这样就产生一个问题,在代码里使用Redis的地方都需要判断是本地环境还是线上正式环境。
在框架中是否可以进一步封装,对于使用者不用管是什么环境,只需要传一个参数来确定是否为Redis集群?或者有更好的方案?
Line 46 in 2548643
Line 50 in 2548643
Type: bug report
xtime/xgo unit case failed every now and then, which causes some PR CI fail.
unit testing case needs improvement to avoid data race
Type: feature request
more examples and demo about grpc load balancing with group and weight
Add any other context or screenshots about the feature request here.
Issue Description
Type: feature request
支持动态端口,配置文件port=0时,由系统自动生成端口并能注册正确端口信息到etcd
Add any other context or screenshots about the feature request here.
Type: bug report
When the HTTP port is occupied, the program hangs and there is no log prompt
When the HTTP port is occupied, give a prompt and end the program
Using xecho module to open multiple HTTP services
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.