bullet-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-parent</artifactId>
<version>2.0.0-RELEASE</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-parent</artifactId>
<version>2.0.0-RELEASE</version>
<packaging>pom</packaging>
<name>bullet-rpc</name>
<description>Bullet RRC 是基于Netty NIO 的私有协议RPC框架。Bullet RPC 能够独立或 者集成到SpringCloud当中使用。通过基准测试 Bullet RPC 性能效率远超基 于HTTP的RPC请求,甚至性能比gRPC与Dubbo还要更快。Bullet RPC 不仅仅对SpringCloud与SpringBoot集成友好,对于RPC请求的安全性上,基于握手请求扩展点能够做到连接的握手时的安全校验,避免未授权的设备接入并访问未授权的系统资源。Bullet RPC 对于SpringCloud的集成也是⾮常全⾯,包括⽀持 SpringCloud 所有的服务注册与发现中间件以及LoadBalancer的完美接⼊。为什么我们要开发 Bullet RPC 和使⽤ Bullet RPC ? 在RPC选型的过程当中我们尝试了很多框架包括 gRPC、Dubbo、 OpenFeign 等。 OpenFeign ⽬前已经在睿本云系统上⼴泛使⽤,优点是SpringCloud的集成 性好,使⽤简单。其通讯是基于HTTP实现,相对简单与通⽤。但是缺点也⾮常明 显,就是慢。由于HTTP的特性问题,每次请求都需要建⽴TCP连接,对于频繁的 RPC请求显然⼒不从⼼。 gRPC 与 Dubbo 性能接近,gRPC使⽤的是基于HTTP2.0作为底层通讯协 议,⽽dubbo则使⽤dubbo协议作为底层通讯协议(dubbo 3.x 已经开始推⼴使⽤ tuple协议其协议是基于HTTP2.0,相对dubbo协议⽽⾔性能稍差)。gRPC由于使⽤了HTTP2.0通⽤性⽽⾔会⽐Dubbo好。但是两者都是同样的问题,对Spring Cloud的集成不够友好(例如不⽀持Eureka),扩展也相对麻烦。由于gRPC的序列化与接⼝定义都 是通过protobuf来定义,使⽤上对于JAVA⽽⾔会不够友好(对于夸语⾔来说是⼀个 不错的选择)。 最后⽆论是什么RPC框架都没有办法提供很好的灵活性,例如你没有办法对 ⼀个RPC接⼝修改他的超时时间与重试次数。⽽且你没有办法让Dubbo 或者 gRPC 很好的兼容Eureka(因为SpringCloud的老项目都深度使用了Eureka)。虽然OpenFeign 能够提供很好的扩展能⼒,但是基于HTTP的 RPC实在是太慢了,在⾯对⽇益增加的业务量每次都优化都显得⾮常⽆⼒。 Bullet RPC 就是基于以上的种种原因提上了开发⽇程。Bullet RPC 不仅仅解决了 上述的所有问题,⽽且同时满⾜了“快”这个必然需求。Bullet RPC 不仅仅⽐ OpenFeign 要快,甚⾄性能也明显超越了gRPC 与 Dubbo。</description>
<url>https://github.com/TonyYan666/Bullet-RPC</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<fastjson.version>1.2.76</fastjson.version>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- Test libs -->
<junit.version>4.12</junit.version>
<!-- Build -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<java.encoding>UTF-8</java.encoding>
<maven.compiler.version>3.8.0</maven.compiler.version>
<maven.surefire.version>2.22.1</maven.surefire.version>
<maven.source.version>3.0.1</maven.source.version>
<maven.javadoc.version>3.0.1</maven.javadoc.version>
<maven.deploy.version>2.8.2</maven.deploy.version>
<maven.gpg.version>1.6</maven.gpg.version>
<maven.jacoco.version>0.8.3</maven.jacoco.version>
<maven.jar.version>3.1.0</maven.jar.version>
<maven.pmd.version>3.8</maven.pmd.version>
<lombok.version>1.18.22</lombok.version>
<netty.version>4.1.75.Final</netty.version>
<hutool.version>4.6.4</hutool.version>
<projectreactor.version>2022.0.5</projectreactor.version>
</properties>
<modules>
<module>bullet-rpc</module>
<module>bullet-dependencies</module>
<module>bullet-transport-server</module>
<module>bullet-transport-common</module>
<module>bullet-transport-client</module>
<module>bullet-rpc-spring-boot-starter</module>
<module>bullet-rpc-spring-cloud-starter</module>
<module>bullet-rpc-old-version-spring-cloud-starter</module>
<module>bullet-rpc-demo</module>
</modules>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>ZHICHAO YAN</name>
<email>tony308001970@gmail.com</email>
<organization>smile framework</organization>
</developer>
</developers>
<scm>
<url>
https://github.com/TonyYan666/Bullet-RPC
</url>
<connection>
scm:git@github.com:TonyYan666/Bullet-RPC.git
</connection>
<developerConnection>
scm:git@github.com:TonyYan666/Bullet-RPC.git
</developerConnection>
</scm>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>${projectreactor.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-transport</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-transport-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-transport-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-transport-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-rpc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-rpc-spring-boot-starter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.smileframework.bullet</groupId>
<artifactId>bullet-rpc-spring-cloud-starter</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${java.encoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</project>