smart-socket v1.3.25 发布,企业级通信框架

栏目: 软件资讯 · 发布时间: 7年前

内容简介:smart-socket是一款国产开源的Java AIO框架,追求代码量、性能、稳定性、接口设计各方面都达到极致。如果smart-socket对您有一丝帮助,请Star一下我们的项目并持续关注;如果您对smart-socket并不满意,那请多一些...

smart-socket是一款国产开源的Java AIO框架,追求代码量、性能、稳定性、接口设计各方面都达到极致。如果smart-socket对您有一丝帮助,请Star一下我们的项目并持续关注;如果您对smart-socket并不满意,那请多一些耐心,smart-socket一直在努力变得更好。

背景

在阿里云上部署了smart-socket服务,SLB会通过建立一次TCP连接来监测应用服务是否存活,之后立即断开链接。此类心跳探测都会触发AioSession的创建与销毁,导致一些无意义的资源消耗。(感谢群友洋洋得意的反馈)

更新内容

  1. 网络监测器NetMonitor新增接口acceptMonitor用以决策是否接受此连接,被拒绝的连接会由框架自行关闭,降低无谓的资源开销。
  2. 新增状态机REJECT_ACCEPT,便于用户感知到拒绝接受连接请求的事件。
  3. 在NetMonitor.acceptMonitort基础上提供黑名单插件功能,黑名单规则以接口的形式暴露给开发人员自行实现。此插件支持且不仅限于IP层面的监控,并且服务运行期间可以动态调整黑名单规则。

插件示例

public class IPBlackListPluginDemo {
    public static void main(String[] args) throws IOException {
        AbstractMessageProcessor processor = new AbstractMessageProcessor() {
            @Override
            public void process0(AioSession session, Object msg) {
            }

            @Override
            public void stateEvent0(AioSession session, StateMachineEnum stateMachineEnum, Throwable throwable) {
                switch (stateMachineEnum) {
                    case REJECT_ACCEPT:
                        System.out.println("连接被拒绝,session:" + session);
                        break;
                    case NEW_SESSION:
                        System.out.println("建立连接,session:" + session);
                        session.close();
                    default:
                        System.out.println("状态机:" + stateMachineEnum + " ,session:" + session);
                }
            }
        };
        BlackListPlugin ipBlackListPlugin = new BlackListPlugin();
        //注册黑名单规则
        ipBlackListPlugin.addRule(new BlackListPlugin.BlackListRule() {
            @Override
            public boolean access(InetSocketAddress address) {
                String ip = address.getAddress().getHostAddress();
                return !"127.0.0.1".equals(ip);
            }
        });
        processor.addPlugin(ipBlackListPlugin);
        AioQuickServer aioQuickServer = new AioQuickServer(8080, new NullProtocol(), processor);
        aioQuickServer.start();
    }
}

运行后可在控制台分别输入“curl 127.0.0.1:8080”、“curl 192.168.0.1:8080(本机局域网IP)”观察效果,其中“127.0.0.1”的连接请求会被黑名单拦截并拒绝连接。

Maven

<dependency>
    <groupId>org.smartboot.socket</groupId>
    <artifactId>aio-core</artifactId>
    <version>1.3.25</version>
</dependency>

项目分支:https://gitee.com/smartboot/smart-socket/tree/1.3.25/

Help!!!

感谢各位朋友一直以来对smart-socket的支持以及诸位大佬提供的宝贵意见,帮助smart-socket 1.3系列稳定运行于生产环境。然而作者水平其实一般,非要去开发1.4版本,现在遇到技术瓶颈,急需精通内存池调优算法、网络通信编程的 Java 高手前来助阵。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Learning Vue.js 2

Learning Vue.js 2

Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99

About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具