Mina+Config(分布式配置)+Hystrix(线程隔离)+Eureka(服务注册和调用)+Zuul(权限控制)的架构:

对mina的商用化处理思路

package com.cloud.mina.server;

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.executor.ExecutorFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

import com.cloud.mina.component.filter.ComponentIOFilter;
import com.cloud.mina.component.filter.MHRootComponent;
import com.cloud.mina.component.filter.MilinkBPComponent;
import com.cloud.mina.component.filter.MilinkSportComponent;
import com.cloud.mina.component.milink.bp.BPNo1LoginParer;
import com.cloud.mina.component.milink.bp.BPNo4SynsTimeParer;
import com.cloud.mina.component.milink.bp.BPNo8DataParer;
import com.cloud.mina.component.milink.sport.No8OneWayParser;
import com.cloud.mina.component.milink.sport.No8ThreeWayParser;
import com.cloud.mina.component.milink.sport.No8TwoWayParser;
import com.cloud.mina.component.milink.sport.SportLoginParser;
import com.cloud.mina.component.milink.sport.SportLogoutParser;
import com.cloud.mina.milink.strategy.StrategyFactroyHandler;

public class MinaServer {
    
    private static Logger log = Logger.getLogger(MinaServer.class);
    public static void  main(String[] args) throws IOException
    {

  • 线程隔离

        IoAcceptor sportAcceptor = new NioSocketAcceptor(Runtime.getRuntime().availableProcessors()+1);

        IoAcceptor BPacceptor = new NioSocketAcceptor(Runtime.getRuntime().availableProcessors()+1);

  • 构建业务树,实现可扩展

        MilinkSportComponent milinkSportsComponent = new MilinkSportComponent();
        milinkSportsComponent.add(new SportLoginParser());
        milinkSportsComponent.add(new No8OneWayParser());
        milinkSportsComponent.add(new SportLogoutParser());
        milinkSportsComponent.add(new No8TwoWayParser());
        milinkSportsComponent.add(new No8ThreeWayParser());

    
        MilinkBPComponent milinkBPComponent = new MilinkBPComponent();
        milinkBPComponent.add(new BPNo1LoginParer());
        milinkBPComponent.add(new BPNo4SynsTimeParer());
        milinkBPComponent.add(new BPNo8DataParer());
        
        
        MHRootComponent compent=new MHRootComponent();
        compent.add(milinkSportsComponent);
        compent.add(milinkBPComponent);
        
        //在解码器链上 添加解码器
        sportAcceptor.getFilterChain().addLast("milinkSportsComponent", new ComponentIOFilter(milinkSportsComponent));
        BPacceptor.getFilterChain().addLast("milinkBPComponent", new ComponentIOFilter(milinkBPComponent));


        //业务逻辑处理线程池
        acceptor.getFilterChain().addLast("executors", new ExecutorFilter()); 
        
    
        //若30s无读写操作  则session进入空闲状态
        acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,40); 
        
        //设置业务处理逻辑
        acceptor.setHandler(new StrategyFactroyHandler());

        acceptor.bind(new InetSocketAddress(8888));

        log.info("Server is running...listening port 8889...");
    }
}
 

相关文章:

  • 2022-01-10
  • 2021-09-09
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2023-02-23
  • 2021-10-19
猜你喜欢
  • 2021-12-01
  • 2021-08-08
  • 2021-10-16
  • 2022-12-23
  • 2022-03-02
  • 2021-12-24
相关资源
相似解决方案