/mini-platform

Mini-Platform致力于更简洁易用的轻量级微服务治理平台。

Primary LanguageJavaMIT LicenseMIT

Mini-Platform轻量级微服务治理平台

  • Mini-Platform致力于打造更简洁易用的轻量级微服务治理平台,更易于实施与运维;
  • 核心技术:SpringBoot、Spring Cloud、Apollo、OAuth2(自研)、MyBatis、Redis、MySQL;
  • 核心功能:服务注册与发现、服务网关、负载均衡、统一认证、配置中心、异常处理等;

Discovery

  • 采用Eureka做服务自动注册与发现;
  • 支持Apollo的MetaService,可以让Apollo共享该Eureka;配置说明
  • 可按配置简单的进行高可用部署;

Gateway

  • 采用Zuul做服务网关;
  • 支持Apollo进行动态路由配置:
  • 支持基于service-id的动态路由策略,支持负载均衡,支持服务的自动注册与发现,当服务地址变化后无需手动配置,当后端服务引入SpringCloud时可选用;
  • 支持基于url的动态路由策略,支持负载均衡,支持服务的手动注册与发现,当服务地址变化后需要手动配置,当后端服务基于传统HTTP调用时可选用;
  • 支持基于默认url的动态路由策略,不支持负载均衡,后端服务需要单独处理负载均衡(如Nginx),支持服务的手动注册与发现,配置简单,可在测试中使用;
  • 支持服务异常重试,建议只开启GET的重试,且确保GET的幂等,否则建议关闭;

Gateway - OAuth

  • Gateway中集成的OAuth2模块

  • 为了更简单易用,OAuth Server采用自研实现。

  • GrantType支持password、client_credentials、refresh_token。

  • Token支持延迟吊销、滑动过期和绝对过期。

  • 用户名密码验证支持直连用户中心数据库验证和调用远程服务验证两种方式。

  • 密码模式授权,用于客户端与服务器之间的授权,流程如下: oauth-password-flow 注:图例为三次请求,1.1-1.3为首次认证;2.1-2.5为通过Access Token访问后端资源;3.1-3.3为使用Refresh Token获取新的Access Token,可用于Access Token过期前刷新Token; 红色字体是Password与Client授权方式不同的地方。

  • 客户端模式授权,用于服务器与服务器之间的授权,流程如下: oauth-client-flow

  • 微服务模式授权示例,是获取到Access Token后请求后端资源的流程细化,如下: oauth-multi-services-flow


Gateway - ACL

  • Gateway中集成的ACL(访问控制列表)模块,对API进行权限控制。
  • 待实现

Gateway - RateLimiting

  • Gateway中集成的限流模块,对API进行流量控制。
  • 待实现

Gateway - Other

  • Gateway中的Log、Metrics、Trace、Alert、Security、Canary等模块。
  • 待实现

OAuth-Client

  • 使用OAuth的客户端使用;
  • 客户端引用后,只需要继承BaseController便可方便的获取用户信息;
  • 参考示例:UserController.java

项目中使用的其他技术介绍

欢迎Star和Fork,微信号:HilingWang,欢迎交流!