Skip to content
This repository has been archived by the owner on Jul 17, 2019. It is now read-only.

gudaoxuri/ez-framework

Repository files navigation

EZ.F - Scala中功能全面、使用简单的服务框架

ez framework

设计理念

从第一个版本发展到现在,期间换过多个基础类库、也在异步与同步编程之间不断地尝试,这是个全新的版本,也这几年工程实践的最佳方案。

与其让用户选择不如不给用户选择

世面上有很多技术都可以解决同一个问题,EZ之前的版本的好些服务都提供了多种实现技术,但一方面这增加了架构的复杂度,另一方面往往也会让用户难以选择,从这个版本起我们只提供经验证的最佳实践组合,使用单一技术解决同一个场景!比如上一版EZ提供了对JDBC与Mongo的全面支持,意图让用户可以在不怎么改变原有代码的情况下可以方便地来回切换,但从我们实践来看,Mongo虽有众多优势,但对于绝大部分的系统而言它并不适合存储核心业务,所以这一版我们将只对JDBC提供全面支持(ORMapping、事务等)对Mongo只提供简单地封装,并且不再强调两者API的一致性。

同步 VS 异步

同步开发效率高,排错方便,但性能低,异步反之。为平衡开发与运行效率,这一版本决定加入API网关组件,API网关组件为全异步模式,用于分发API请求,其它组件均使用同步模式。

做真正的微服务框架

微服务很热,但并不是说一个轻量化的HTTP框架就可以自称“微服务”的,以前的某个版本有API网关组件,但后来应该考虑服务要轻量化去掉了,回归初心,EZ要做的不是一个类库,也不是一个单一的Web框架,EZ要解决不是小项目快速开发,它面对的是中大型项目,是起码有10个以上独立服务组成的大服务集群。所以这一版本将在服务治理是投入更多精力。

功能列表

  1. 核心服务

    1. 支持自定义拦截器栈处理

    2. 支持I18N

    3. 支持自定义服务管理

    4. 支持Metrics采集定义

  2. API网关

    1. 支持全局认证

    2. 支持常用安全管理(Anti-DDOS,IP黑名单等)

    3. 支持服务转发

  3. RPC服务

    1. 支持HTTP(s)和WebSocket服务

    2. 基于注解服务发现

    3. Restful风格,支持GET POST PUT DELETE等常用方法

    4. 支持Json跨域请求

    5. 支持拦截器栈,可适配权限认证等服务

    6. 提供HTTP客户端

    7. 提供CRUD脚手架服务

    8. 支持HTML与XML处理

  4. 存储服务

    1. 支持关系型数据库

    2. 轻量级ORMapping,无Session处理

    3. 注解支持

  5. 调度服务

    1. 支持cron表达式的调度任务

    2. 支持按模块调度

    3. 支持持久化

  6. Redis缓存服务

    1. 支持Redis的常用操作

  7. 基于RBAC的基础HTTP认证

    1. 支持RBAC的认证服务

    2. 支持菜单级和资源级(action)的授权

    3. 支持自助注册及密码找回

  8. 邮件服务

    1. 支持同步或异步的邮件发送服务

    2. 支持添加附件

  9. 常用分布式服务

    1. 分布式计数

    2. 分布式锁

    3. 分布式Map

    4. 分布式阻塞和非阻塞队列

    5. 分布式消息发布订阅

    6. 分布式服务监控

    7. 分布式追踪日志

License

Under version 2.0 of the Apache License.