基于netty实现的服务端Nio MVC业务开发 ketty

码农软件 · 软件分类 · 日志工具(Logging) · 2019-09-20 09:59:23

软件介绍

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

headerbody



sizelenurimsgIdparamsMapbody
short(2byte)short(2byte)stringint(4byte)mapJSONString

KettyResponse

headerbody


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

ketty-router模块

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

ketty-monitor模块

性能监控 报警

ketty-analysis模块

接口统计分析 智能推荐

本文地址:https://codercto.com/soft/d/14996.html

读屏时代

读屏时代

(美)Naomi S. Baron(内奥米·S.巴伦) / 庞洋 / 电子工业出版社 / 2016-7 / 55.00

书中作者探讨了技术如何重塑人们对阅读的定义。数字阅读越来越受欢迎,更便利、节约成本、并把免费书籍提供给全世界的读者。但是,作者也指出其弊处在于读者很容易被设备上的其他诱惑分心、经常走马观花而非深入阅读。更重要的是,人们阅读方式的变化会影响了作者的写作方式。为了迎合人们阅读习惯的转变,许多作家和出版商的作品越来越短小和碎片化,或者更青睐无需思考和细读的作品。作者比较了纸质阅读和在线阅读的重要性,包括......一起来看看 《读屏时代》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具