ego-go 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
ego-go 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
ego-go 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
ego-go 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
ego-go 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

EGO是一个集成里各种工程实践的框架。通过组件化的设计模式,保证了业务方能够统一的调用方式启动各种组件。

使用EGO的优势:

  • 配置化驱动组件

  • 屏蔽底层组件启动细节

  • 微服务组件的可观测、可治理

  • 可插拔的Ego-Component组件

  • Fail Fast理念和错误友好提示

提升组件熟练度

我们工程师要想提升组件熟练度,首先要大量看开源组件文档和代码,然后坚持长时间使用,才能形成肌肉记忆,提升我们做业务的速度。而这一切所投入的时间和精力是非常大的。

要减少这个投入成本,让更多开发者使用好优秀的开源组件,EGO的做法是标准化所有开源组件,对其做一层封装,统一各种行为。

  • 统一组件文件名

  • 统一组件配置参数

  • 统一组件调用API

  • 统一组件错误行为

  • 统一组件监控行为

让人掌握了一种组件,就可以举一反三使用其他组件。

提升故障排查效率

  • 统一错误码

  • 组件错误、慢响应、链路、常规请求拦截器埋点(服务端、客户端均会拦截)

  • 收敛错误字段

  • 注入组件关键信息、包名、配置名、地址等

  • 调试阶段,错误高亮、格式化友好提示

  • 调试阶段,组件内置debug拦截器

自动生成重复代码

  • 生成代码,配置、数据解析、模版分离

  • 不依赖于语言,构建项目代码

  • 利用Go1.16特性embed,启动web,生成代码

  • 项目地址: https://github.com/gotomicro/egoctl

EGO框架分层

我们框架分为三个层次

  • 核心层提供配置、日志、监控和链路,是其他组件的基石

  • 组件层提供客户端、服务端、任务端里的各种组件

  • 胶水层控制了各种组件的生命周期,错误处理

组件分层

我们认为一切均是组件,我们将组件分为四个部分:

  • Container 处理组件类型、组件配置、组件启动

  • Config 配置参数

  • Component 组件的调用方法

  • Options 配置和组件可选项

功能

server HTTP

server gRPC

task job

task cron

client HTTP

client gRPC

client mysql

client redis

client mongo

client kafka

client wechat

client dingding

更多组件请查看:https://github.com/gotomicro/ego-component

特性介绍

  • 配置驱动

所有组件启动方式为组件名称.Load("配置名称").Build(),可以创建一个组件实例。如以下http serveregin是组件名称,server.http是配置名称


egin.Load("server.http").Build()

  • 友好的debug

可以看到所有组件的请求参数和响应参数信息

  • 链路

使用opentrace协议,自动将链路加入到日志里

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2011/11/23 17:33

Better world? Or just their ego?

转基因生物的安全性问题: http://wenku.baidu.com/view/fbd97ea2b0717fd5360cdc2e.html 我的问题是: 谁能保证实质性等同原则的贯彻. 一个"实质性", 里面到底包含了多少东西? 毕竟, 对与错本身并不存在. 存在的永远都是事实. 他们改变了这个世界. 他们成功了. 但愿他们的自负不会威胁到人类的根本.

0
0
发表了博客
2014/01/12 11:16

ego network 介数中心性计算

下面是求节点介数的代码,介数就是指经过一个点的最短路径的比例,在计算复杂网络中节点重要性的时候会用到。 /** * 用来计算介数 * 要计算所有的最短路径,用DIJ计算最短路径的时候我们可以发现一个规律:最后生成的结果是最小生成树,而一棵树是可以用一个一维数组表示的。 * 所以本代码在计算介数的时候具有和DIJ相同的时间复杂度。 */ public class Betweeness { private double[][] dis; private int ...

3
0
发表了博客
2019/04/10 10:10

SfMLearner论文笔记——Unsupervised Learning of Depth and Ego-Motion from Video

#1. Abstract 提出了一种无监督单目深度估计和相机运动估计的框架 利用视觉合成作为监督信息,使用端到端的方式学习 网络分为两部分(严格意义上是三个) 单目深度估计 多视图姿态估计 解释性网络(论文后面提到训练了第三个网络) #2. Introduction 计算机几何视觉难以重建真实的场景模型 由于非刚性、遮挡、纹理缺失等情况的存在 人类在很短的时刻可以推断自我运动以及三维场景的结构,为什么? 一个假设就是人类在移动中通过...

0
0
2018/10/12 19:39

find no Route:select * from `ego`.`tb_content_category` limit 0, 1000

mycat可以连接,但是在查看表数据的时候异常 find no Route:select * from `ego`.`tb_content_category` limit 0, 1000 解决: vi /mycat/conf/schema.xml 修改checkSQLschema="true" 问题解决 <schema name="ego" checkSQLschema="true" sqlMaxLimit="100" >...

0
0
2020/12/22 17:04

appi-这是一个由antoinepinsard创建的python模块,它支持ego查询命令。-Daniel Robbins, Antoine Pinsard Why not portage? ...

appi-这是一个由antoinepinsard创建的python模块,它支持ego查询命令。-Daniel Robbins, Antoine Pinsard 发布:2020-12-22 17:04:54.863746 作者:Daniel Robbins, Antoine Pinsard ### 作者邮箱:drobbins@funtoo.org ### 首页:https://code.funtoo.org/bitbucket/projects/CORE/repos/appi/browse ### 文档:None ### 下载链接 ==== appi Another Portage Python Interface |rtd0.2| |ci| |coverage| Why not portage? Ma...

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