EGO是一个集成里各种工程实践的框架。通过组件化的设计模式,保证了业务方能够统一的调用方式启动各种组件
使用EGO的优势
我们工程师要想提升组件熟练度,首先要大量看开源组件文档和代码,然后坚持长时间使用,才能形成肌肉记忆,提升我们做业务的速度。而这一切所投入的时间和精力是非常大的。
要减少这个投入成本,让更多开发者使用好优秀的开源组件,EGO的做法是标准化所有开源组件,对其做一层封装,统一各种行为。
让人掌握了一种组件,就可以举一反三使用其他组件。
我们支持多种EGO组件,加快你的开发速度
Component Name | Code | Example | Doc |
---|---|---|---|
HTTP Server | Code | Example | Doc |
gRPC Server | Code | Example | Doc |
Governance Service | Code | Example | Doc |
Job | Code | Example | Doc |
Corn job | Code | Example | Doc |
Distributed Scheduled Job | Code | Example | Doc |
HTTP Client | Code | Example | Doc |
gRPC Client | Code | Example | Doc |
gRPC Client using ETCD | Code | Example | Doc |
gRPC Client using k8s | Code | Example | Doc |
Sentinel | Code | Example | Doc |
MySQL | Code | Example | Doc |
Redis | Code | Example | Doc |
Redis Distributed lock | Code | Example | Doc |
Mongo | Code | Example | Doc |
Kafka | Code | Example | Doc |
ETCD | Code | Example | Doc |
K8S | Code | Example | Doc |
Oauth2 | Code | Example |
我们框架分为三个层次
我们认为一切均是组件,我们将组件分为四个部分:
bash <(curl -L https://raw.githubusercontent.com/gotomicro/egoctl/main/getlatest.sh)
通过以上脚本,可以下载protoc工具全家桶,以及ego的protoc插件和egoctl
组件名称.Load("配置名称").Build()
,可以创建一个组件实例。如以下http server
,egin
是组件名称,server.http
是配置名称egin.Load("server.http").Build()
debug
配置和命令行的export EGO_DEBUG=true
, 我们可以在测试环境里看到所有组件的请求里的行号、配置名、请求地址、耗时、请求数据、响应数据并且使用Goland
同学,可以直接通过行号点击到对应的代码路径(gRPC、HTTP客户端支持行号)
链路 使用opentrace协议,自动将链路加入到日志里
gRPC链路
HTTP链路
统一的监控信息
配置
[server.http] port = 9001 host = "0.0.0.0"
代码
package main import ( "github.com/gin-gonic/gin" "github.com/gotomicro/ego" "github.com/gotomicro/ego/core/elog" "github.com/gotomicro/ego/server" "github.com/gotomicro/ego/server/egin" ) // export EGO_DEBUG=true && go run main.go --config=config.toml func main() { if err := ego.New().Serve(func() *egin.Component { server := egin.Load("server.http").Build() server.GET("/hello", func(ctx *gin.Context) { ctx.JSON(200, "Hello EGO") return }) return server }()).Run(); err != nil { elog.Panic("startup", elog.FieldErr(err)) } }
export EGO_DEBUG=true # 默认日志输出到logs目录,开启dev后日志输出到终端
go run main.go --config=config.toml
这个时候我们可以发送一个指令,得到如下结果
➜ helloworld git:(master) ✗ curl http://127.0.0.1:9001/hello
"Hello Ego"%
使用scripts文件夹里的包编译,可以看到优雅的version提示
Thanks for these wonderful people:
askuy |
Wei Zheng |
shaoyuan |
Panda |
刘文哲 |
zhangjunjun |
devincd |
Ming Deng |
Angelia |
Wbofeng |
clannadxr |
Link Duan |
Costa |
MEX7 |
LincolnZhou |
1 go grpc-go 相关技术专栏 总入口 2 Protobuf介绍与实战 图文专栏 文章目录 目前,不在亲自开发新的插件了; 我在https://github.com/gotomicro/ego框架里抽取了三个prototobuf插件用例, 进行了整理; 源码已经上传到百度网盘了。 链接: https://pan.baidu.com/s/1RNDYSmX38xFc_O7iDeGdcw 提
作为开发人员,没有学习精神就意味着会被淘汰。没有学习的利器也很难做到真正去学习。 前段时间辞职后,自学了红帽的初中级的linux,还没去考证!然后发现我学完后没有太多实操依旧是忘的快,昨天排查下nginx的问题,感觉都生疏了! C#还在坚持,以前觉得WPF好low,在找工作过程中,主要是面试的大部分是医疗结构,是BS,需要窗体开发。然后才意识到WPF也是很厉害的。为此我还特意买了朝夕教育的SVIP
1 go grpc-go 相关技术专栏 总入口 2 Protobuf介绍与实战 图文专栏 文章目录 1、protoc-gen-go-errors插件源码下载 此插件是从https://github.com/gotomicro/ego框架里抽取了的prototobuf插件用例; 源码已经上传到百度网盘了。 链接: https://pan.baidu.com/s/1RNDYSmX38xFc_O7i
docker中使用nats服务 以json格式发送消息 import ( "encoding/json" "fmt" "github.com/nats-io/nats.go" "robot-pcshare/model" ) var natsConn *nats.Conn type MsgData struct { FileData []byte `json:"file_data"
前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。 http包建立Web服务器 package main import ( "fmt" "net/http" "strin
本文向大家介绍go语言实现简单http服务的方法,包括了go语言实现简单http服务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现简单http服务的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。
本文向大家介绍Go语言实现简单Web服务器的方法,包括了Go语言实现简单Web服务器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言实现简单Web服务器的方法。分享给大家供大家参考。具体分析如下: 包 http 通过任何实现了 http.Handler 的值来响应 HTTP 请求: package http type Handler interface { ServeHTTP
本文向大家介绍Go语言实现的一个简单Web服务器,包括了Go语言实现的一个简单Web服务器的使用技巧和注意事项,需要的朋友参考一下 Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。 http包建立Web服务器 上
问题内容: 我想用Go实现一个webdav服务器,并在这里找到一个新的“ x”包: 但是我不知道如何使用这个包来完成它。有人可以帮我解决这个问题吗? 我尝试了这个: 如果我尝试连接到服务器,则会收到内部服务器错误。 我究竟做错了什么? 谢谢你的帮助。 问题答案: x / net / webdav仍处于开发的早期阶段。许多关键部分仍在实施中,目前无法使用。看一下源代码,仍然有一半以上的必要结构和功能
主要内容:Go语言工程结构简单,Go语言编译速度快Go语言语法简单易懂,学习曲线平缓,不需要像 C/ C++ 语言动辄需要两到三年的学习期。Go语言被称为“互联网时代的C语言”。互联网的短、频、快特性在Go语言中体现得淋漓尽致。一个熟练的开发者只需要短短的一周时间就可以从学习阶段转到开发阶段,并完成一个高并发的服务器开发。 Go语言是 Google 公司开发的一种静态型、编译型并自带垃圾回收和并发的编程语言。所以它是一门类型安全的语言,加上通过构