getty icon indicating copy to clipboard operation
getty copied to clipboard

一个完全基于java的,类似netty的高性能网络框架A fully Java-based, netty - like high-performance networking framework

getty

一个完全基于java 实现的高性能网络框架。

A high-performance networking framework based entirely on Java implementations.

简介 brief introduction

1、getty是完全基于java nio封装的高性能网络框架。

Getty is a high-performance networking framework based entirely on Java NIO encapsulation.

2、getty可在项目中使用,也可以用于帮助你更好的学习java nio

Getty can be used in a project or to help you learn Better about Java NIO

3、getty完全开源,基于 Apache License 2.0 开源协议。

Getty is fully open source, based on the Apache License 2.0 open source License.

4、getty的目的是为了降低对java socket nio的使用成本,帮助提高工作效率。

Getty aims to reduce the cost of using Java Socket NiO and help improve productivity.

getty名称的由来 Origin of the name

取名getty主要是作者过去使用netty比较多,对netty表示尊敬,以及getty本身借鉴了netty的设计思想。

然后作者本人姓氏的拼音首字符是“G”,因而取名getty。

The name Getty is mainly due to the author's use of Netty in the past, which shows respect for Netty, and the fact that Getty itself borrows from Netty's design ideas.

Then the author's surname began with the alphabet character "G", hence the name Getty.

写这个框架的原因: The reason for writing this framework

1、作者是一名程序员,平时喜欢写写代码,特别是网络通讯方面。

The author is a programmer, usually like to write code, especially network communication.

2、JDK 提供了强大的NIO类库,并且提供了与UNIX网络编程事件驱动I/O对应的AIO。使得实现一套网络通讯框架变得相对简单。

The JDK provides a powerful NIO class library and provides AIO, which corresponds to UNIX network programming event-driven I/O.It makes it relatively simple to implement a network communication framework.

3、作者喜欢netty,无论是其性能还是编程思想(JBOSS提供的一个java开源网络框架,提供了稳定和强大的性能)

The author likes Netty, both for its performance and programming ideas (JBOSS provides an open source Java networking framework that provides stable and powerful performance).

4、有了netty为何还要自己造轮子?这里有两个原因,其一是本人喜欢造轮子,这是病,改不了。其二,netty经过多年的发展,其生态体系已经比较庞大,其代码比较臃肿,再者其高深的设计哲学我等凡夫俗子很难悟其精髓。因而索性造一个。

Why build your own wheels when you have Netty? There are two reasons. One is that I like to build wheels. It's a disease that I can't change. Second, after many years of development, Netty's ecosystem has become relatively large, its code is relatively bloated, and its profound design philosophy is hard for ordinary people to understand. So just make one.

getty的特点: The characteristics of the getty

1、完全基于java nio,基于nio1以及nio2(aio)做了实现,整体代码代码结构很轻量,非常简单易用。

Completely based on Java NIO, based on NIO1 and NIO2 (AIO) to do the implementation, the overall code structure is very lightweight, very easy to use.

2、借鉴了Netty和其他框架的一些优秀设计思想,如责任链、内存池、零复制等优秀设计模式。

Some of the good design ideas of Netty and other frameworks are borrowed, such as responsibility chain, memory pooling, zero copy and other excellent design patterns.

3、Getty为大多数开发场景提供了常用的插件(字符串编解码器,Protobuf编解码器,WebSocket编解码器,MQTT编解码器,心跳超时处理器,IP过滤等)。

Getty provides commonly used plug-ins (String codec, Protobuf codec, WebSocket codec, MQTT codec, heartbeat timeout processor, IP filtering, etc.) for most development scenarios.

4、Getty可在android环境中直接使用(兼容Android4.4或以上版本)

Getty can be used directly in an android environment (compatible with Android4.4 or above)

5、Getty同时提供TCP和UDP支持,并以几乎相同的方式使用它们,极大地提高了易用性。

Getty provides support for both TCP and UDP and USES them in much the same way, greatly improving ease of use.

5、Getty的内置处理器在使用期间支持热交换设计,每个处理器可以灵活组合。

Getty's built-in processor supports the hot-swap design during use, and each processor can be combined flexibly.

6、框架拥有非常好的拓展性,处理器拓展非常简单,大大降低了拓展开发成本。

The framework has a very good scalability, processor scalability is very simple, greatly reducing the cost of expansion development.

7、高效和稳定性能,相同条件下同时发送百万消息的耗时居然比netty还少。

High efficiency and stable performance, it takes less time than netty to send millions of messages simultaneously under the same conditions.

8、使用方式与netty非常相似,只要有netty是使用经验,使用getty几乎不需要额外学习。

Much like Netty, using Getty requires little extra learning as long as Netty is experienced.

简单使用 Simple to use

Maven

在项目的pom.xml的dependencies中加入依赖:

Dependencies are included in the Projects Pom.XML dependencies

        <dependency>
            <groupId>com.gettyio</groupId>
            <artifactId>getty-core</artifactId>
            <version>2.0.0-beta4</version>
        </dependency>

Gradle

compile group: 'com.gettyio', name: 'getty-core', version: '2.0.0-beta4'

本次更新

新增

1、内存池的重新实现优化,大大降低了内存的占用和减少内存碎片产生,提高了缓冲区分配的效率

2、新增channel流量控制,新增最高水位和最低水平的配置

优化

1、nio性能优化

2、加强启动时配置检查,提高健壮性

3、优化了若干代码,提高易用性

4、去除了部分冗余,提高代码可读性

修复

1、修复了超高并发时,可能出现消息丢失的bug

2、修复DelimiterFrameDecoder 消息截取不对的问题

3、修复http 偶尔握手失败问题

4、修复websocket握手失败问题

5、修复其他若干bug

非Maven项目 (No Maven)

到中央仓库下载jar包导入到工程中

Go to the central repository and download the JAR package into the project

链接(link):https://mvnrepository.com/artifact/com.gettyio/getty-core

点击跳转到中央仓库 jump to the central

更多详情与文档 More details and documentation

更多详情,请点击( For more details, click here) wikiwiki

提供bug反馈或建议 Provide bug feedback or Suggestions

create by

gogym

email:[email protected]

getty交流群1 :708758323

进群先star一下哦