An open API service indexing awesome lists of open source software.

https://github.com/spring-avengers/saluki

Spring Boot starter module for gRPC framework.
https://github.com/spring-avengers/saluki

grpc grpc-discovery grpc-extend grpc-registry http2 micro-service oop-service spring-boot spring-boot-grpc

Last synced: 11 days ago
JSON representation

Spring Boot starter module for gRPC framework.

Awesome Lists containing this project

README

          

# 概述

* saluki是以Grpc作为底层,提供一套高性能、易于使用的服务化治理框架
* 对Grpc的开发进行扩展,支持java开发服务端,其他语言(php、go、c++)做客户端语言,不会对Grpc原生开发方式产生破坏

# 功能

* 服务注册及发现,提供集群环境的服务发现及治理能力
* 服务路由,基于javascript路由规则配置及host的路由规则配置(路由规则示例)
* 熔断及隔离,基于hystrix来进行的熔断、隔离、服务降级
* 简化开发方式,对于Grpc原生stub方式进行封装,提供了使用interface和java Bean作为服务契约的方式
* 与spring-boot进行集成,提供了autoconfig的方式
* ha重试功能,针对幂等服务可以开启ha功能,当前服务实例存在问题,会剔除当前实例,选择另外实例进行负载均衡
* 可以自由选择三种模式,genric、Stub、proxy,其中泛化在框架集成上,原生Stub模式针对原生已有的Grpc服务、普通代理模式推荐使用

# 详细说明

* saluki-plugin提供的插件可以在grpc插件基础上生成interface及java bean
* saluki-serializer提供了将protobuf与java bean两者对象互相转换
* saluki-registry提供了服务注册,可以在此扩展,目前仅支持consul

# Compile
```
mvn install -Dmaven.test.skip=true

```
# 关于服务调用Sample
 详细请查看 sample

# Quick Start

* 首先在proto文件工程配置grpc提供的gradle或maven插件生成stub

示例: api

```



kr.motd.maven
os-maven-plugin
1.4.1.Final




org.xolstice.maven.plugins
protobuf-maven-plugin
0.5.0

com.google.protobuf:protoc:3.0.2:exe:${os.detected.classifier}
grpc-java
io.grpc:protoc-gen-grpc-java:1.2.0:exe:${os.detected.classifier}




compile
compile-custom




```
* 再次添加saluki提供的gradle或maven插件根据protoc文件生成interface及pojo模型

```

io.github.saluki
saluki-core
1.5.7.RELEASE
provided

io.github.saluki
saluki-maven-plugin
1.5.7.RELEASE

src/main/proto
target/generated-sources/protobuf/java




proto2java


```

添加后在生成Grpc的相关类之后,同时会生成interface及bean
![interface](./doc/interface.jpeg)
![bean](./doc/bean.jpeg)

* 应用上两步生成的artifactId,添加spring-boot-saluki依赖

```

io.github.frostingwolf
spring-boot-starter-saluki
1.5.7.RELEASE

io.github.frostingwolf
spring-boot-starter-saluki-monitor
1.5.7.RELEASE

```

* 启动spring boot main,并访问localhost:8080/doc,可进行服务测试
![login](./doc/service.jpeg)

# 关于网关
网关有一个新项目独立出来支撑grpc和dubbo,将在个人项目中孵化:gateway