Golang微服务框架。目标是能够方便快捷的开发golang微服务。提供了组件,插件,中间件的功能。并支持代码自动生成。使得在微服务的开发过程中,减少框架类代码开发,更多的精力用在业务层面上。rninet既是一个微服务相关的工具,又是微服务开发的SDK。
提供基础组件功能,把常用的,基础的组件封装起来,方便程序开发时调用。
Redis:封装了redis的客户端和操作。
Etcd:封装了etcd的客户端和操作。
Elasticsearch:封装了elasticsearch的客户端和操作。
Mongo: 封装了mongo客户端。
把服务中某些共性的功能抽象出来,以插件的形式提供给服务。
服务注册与发现(多注册中心,提供多种服务注册发现机制,以适用更多的场景)
Etcd:使用etcd,实现服务的注册与发现。etcd是一个Go语言编写的分布式,高可用的一致性键值存储系统,用于配置共享和服务发现等。本项目利用etcd的K/V存储,租约和监控机制,实现了服务的注册和动态发现功能。
Consul:使用consul,实现服务的注册与发现。consul是一个分布式,高可用的服务注册发现系统。本项目利用consul的服务发现以及健康检查,实现了服务的注册与发现功能。
zookeeper
eureka
发布订阅功能(支持多种消息队列)
rabbitmq
nsq
kafka
redis
处理请求路由过程中,可加入前置或后置的中间件,可进行前置或后置的过滤,拦截等操作。
prometheus中间件,可在服务前后加入metrics打点,对服务调用监控或统计。
ratelimit
hystrix
zipkin
opentracing
自定义中间件。
根据不同的参数,创建新的服务时自动生成相应的服务端,客户端代码。尽可能减少服务开发过程中框架类代码的编写。
server/client代码生成。
router代码生成。
handler代码生成。
middleware代码生成。
rninet基本框架已搭好
组件功能:简单封装了redis,elasticsearch,etcd。
插件功能:服务注册发现插件(etcd,consul)。
中间件功能:增加了prometheus中间件。
代码生成功能:可生成server/client代码,router代码,handler代码,middleware代码。
添加更多的组件封装。
添加broker插件。
添加限流熔断中间件,调用链追踪中间件。
客户端负载均衡功能。
多维度配置功能。
完整的示例代码
详细的操作文档