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

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

内容简介: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 高手前来助阵。


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

查看所有标签

猜你喜欢:

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

程序员的思维修炼

程序员的思维修炼

Andy Hunt / 崔康 / 人民邮电出版社 / 2010-12-10 / 39.00元

本书解释了为什么软件开发是一种精神活动,思考如何解决问题,并就开发人员如何能更好地开发软件进行了评论。书中不仅给出了一些理论上的答案,同时提供了大量实践技术和窍门。 本书供各层次软件开发人员阅读。一起来看看 《程序员的思维修炼》 这本书的介绍吧!

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

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具