ketty

基于netty实现的服务端Nio MVC业务开发
授权协议 GPL
开发语言 Java
所属分类 程序开发、 日志工具(Logging)
软件类型 开源软件
地区 国产
投 递 者 蓬野
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Ketty

基于 netty 实现的服务端 Nio MVC 业务开发平台,提供性能监控,日志分析,动态扩展的功能。

ketty-srv模块

基于netty实现支持自定义协议扩展的Nio MVC高性能业务框架

协议

  • Http

  • Ketty(自定义私有协议)

基于注解的 mvc

  • @Inject注入

  • @Path 路径支持

  • @Param参数自动注入value

支持方法调用频率限制RateLimiter

@Actionpublic class SimpleAction {

    @Inject
    private UserService userService;

    // 每秒最多可调用100次,超过100次丢弃,
    @Rate(value=100)
    @Interceptor(id = "echoInterceptor")
    @Path
    public User getUserByUid(@Param String uid) {
        return userService.getUserByUid(uid);
    }}

拦截器 example

@Aroundpublic class EchoInterceptor extends BaseInterceptor {

    private final static Logger LOGGER = LoggerFactory.getLogger(EchoInterceptor.class);

    @Override
    public boolean before() {
        LOGGER.info("==============EchoInterceptor before=========");
        return true;
    }

    @Override
    public boolean after() {
        LOGGER.info("==============EchoInterceptor after=========");
        return true;
    }}

KettyServer example

// nio mvc 业务server启动类examplenew KettyServer.Builder()
                .tcpNoDelay(true)
                .soKeepAlive(true)
                .setHttpProtocol()
                .host("localhost")
                .port(8888)
                .build()
                .start();// 测试jetty客户端public class JettClientTest {
    public static ClientSender clientSender = new ClientSender("localhost", 8888);
    public static void main(String[] args) throws Exception {
        KettyRequest request = new KettyRequest();
        request.setUri("/simpleAction/getUserByUid");
        JSONObject params = new JSONObject();
        params.put("uid", "12345677");
        request.setParameter(params);
        String result = clientSender.sendAndWait(request);
        System.out.println("result : " + result);
    }}

HttpServer example

// nio mvc 业务server启动类examplepublic class SimpleServer {
    public static void main(String[] args) throws Exception {
         new KettyServer.Builder()
                        .setKettyProtocol()
                        .port(8888)
                        .build()
                        .start();
    }}

TODO

  • 支持自定义协议扩展

  • 安全验证

  • 性能优化

  • WebSocket协议的实现

ketty-client模块

KettyServer高可用NIO客户端

High availability

支持多个节点,节点不可用自动移除

Client pool

支持连接池

断链自动重连

自动维护心跳

ketty-codec模块

编解码框架

KettyRequest

header body



size len uri msgId paramsMap body
short(2byte) short(2byte) string int(4byte) map JSONString

KettyResponse

header body


size len msgId(消息id) resCode(消息返回码) body
short(2byte) short(2byte) int(4byte) short(2byte) JSONString

ketty-router模块

服务代理模块,提供路由分发功能

ketty-monitor模块

性能监控报警

ketty-analysis模块

接口统计分析智能推荐

  • <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>Html5 - 小猫咪</title> <link rel="stylesheet" type="text/css" href="css/common/reset.css"/> <style> body{t

 相关资料
  • 关于netty的第二个问题。我们只是从它开始。我们有一个设计,我们需要使用 <罢工> 具有长轮询的HTTP HTTP流。我们估计5k-50k连接的用户打开连接。我们知道tomcat不会处理,所以我们看着netty完成任务。 设计应该足够简单,但我们不能使用websocket(我们希望在netty上使用hornetQ,并提供websocket/stomp支持),但我们不能。 因此,基本上,我们将在连

  • 有一个现有的服务,我想写一个虚拟服务(使用Netty)。它将用于测试目的。 该服务的现有客户端代码片段如下所示: Netty是为java.net.Socket连接创建服务器的正确框架吗?(如果不是,应该使用哪个框架,如果有的话?) 我试图找到一种使用QuoteOfTheMoment示例从Netty开始的方法。QuoteOfTheMomentServerHandler基本上做了我想要的事情,在收到消

  • 本文向大家介绍Python基于twisted实现简单的web服务器,包括了Python基于twisted实现简单的web服务器的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python基于twisted实现简单的web服务器,分享给大家供大家参考。具体方法如下: 1. 新建htm文件夹,在这个文件夹中放入显示的网页文件 2. 在htm文件夹的同级目录下,建立web.py,web.py的内

  • 本文向大家介绍PHP基于socket实现客户端和服务端通讯功能,包括了PHP基于socket实现客户端和服务端通讯功能的使用技巧和注意事项,需要的朋友参考一下 本文主要介绍了PHP基于socket实现的简单客户端和服务端通讯功能,可实现服务端接收客户端发送的字符串进行翻转操作后返回客户端的功能,需要的朋友可以参考下 服务端: 客户端: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多

  • 问题内容: 最近,我在我的应用程序的最新版本中集成了FCM,但是我以前的应用程序版本使用的是GCM。关于是否需要分隔GCM和FCM的编写背景cron的任何想法? 我的先前版本为My App 4.0,并使用了GCM;当前版本为My App 4.1,并集成了FCM。我想同时发送版本和用户的推送通知。那么我们是否需要为GCM和FCM编写服务器端程序对吗?关于此集成的任何想法。 FCM服务器端API:ht

  • ComplexTypeService是一个WebService类,该类的代码如下: import java.io.FileOutputStream; import data.DataForm; public class ComplexTypeService{ //  上传图像,imageByte参数表示上传图像文件的字节, //  length参数表示图像文件的字节长度(该参数

  • 主要内容:编写时间客户端本教程中实现的协议是TIME协议。 它与先前的示例不同,时间服务器只发送包含位整数的消息,而不接收任何请求,并在消息发送后关闭连接。 在本示例中,您将学习如何构造和发送消息,以及在完成时关闭连接。 因为时间服务器将忽略任何接收到的数据,但是一旦建立连接就发送消息,所以我们不能使用方法。而是覆盖方法。 以下是代码的实现: 下面我们来看看上面代码的一些解释分析: 如上所述,当建立连接并准备好生成流量时

  • 本文向大家介绍基于C#实现Windows服务状态启动和停止服务的方法,包括了基于C#实现Windows服务状态启动和停止服务的方法的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式展示了基于C#实现Windows服务状态启动和停止服务的方法。非常实用。分享给大家供大家参考之用。具体方法如下: 首先先引用: 然后在引用命名空间: 建立服务对象: 服务运行则停止服务: 服务停止则启动服务: 希望