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

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

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


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

查看所有标签

猜你喜欢:

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

图解HTTP

图解HTTP

【日】上野宣 / 于均良 / 人民邮电出版社 / 2014-4-15 / 49.00元

本书对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。本书的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后......一起来看看 《图解HTTP》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

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

在线图片转Base64编码工具

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

在线 XML 格式化压缩工具