[编织消息框架][优化系统]突破连接上限(中)

接下来突破65000连接,因为要模拟大规模情况,测试机子有限,所以最好每台机子分配65000*2+以上

这里突破指的是单台机子client超过65000端口限制,当然最终也要server支撑得起

解决思路是添加虚拟IP,添加好后 ping 成功证明生效了,然后执行client测试,结果突破65000+

ifconfig eth0:0 ip netmask 255.255.255.0 up

或用脚本生成:

for i in `seq 1 9`; do ifconfig eth0:$i 192.168.56.121$i up ; done
./java8.sh -cp testaio.jar com.eyu.onequeue.demo.aio.ClientAio 192.168.56.121
./java8.sh -cp testaio.jar com.eyu.onequeue.demo.aio.ClientAio 192.168.56.122
时间: 2024-10-24 22:34:05

[编织消息框架][优化系统]突破连接上限(中)的相关文章

[编织消息框架]前言

出书缘由 本项目名叫onequeue意为一流消息队列,参考对象为kafka 虽然最终结果可能达不到一流水准,但那不是主要的,主要是做的心态保持一流的态度 为什么作为kafka参考,又为什么自己重新做? 我在预研kafka发现在发送消息时网络断开会造成消息丢失,而底层没有提供失败回调给开发者使用,在某些场景来讲不允许丢消息的 进一步深入看下源码,虽然某些领域kafka开者人员很熟悉但综合水平觉得不如我,所以产生写消息框架的想法 面向读者 如果你喜欢网络传输,数据存储方向,那么本书会非常适合你,但你

[编织消息框架]数值与逻辑分离

为什么要分离? 业务需求是不停地变,如果把条件写进代码里,当用户需求变时要改代码发版本更新才能生效,这过程无疑是漫长的 就算是在开发期,不停的变开发者精力耗光在沟通,小修改上,无法专注逻辑部分 分离的根本目的是让开发者专注写引擎部分,无需关注太多业务上的边界,条件等 需要分离什么类型数值? 如活动开启时间,购买满足条件,购买上限等 这些不确定用户具体需求,全都可以弄成动态获取 分离技术实现有很多 如使用数据库mysql等 linux 常用的配置文本config 表格csv,json文件等 本项目

[编织消息框架][netty源码分析]4 eventLoop 实现类NioEventLoop职责与实现

NioEventLoop 是jdk nio多路处理实现同修复jdk nio的bug 1.NioEventLoop继承SingleThreadEventLoop 重用单线程处理 2.NioEventLoop是组成 pool EventLoopGroup 基本单元 总之好多边界判断跟业务经验之类的代码,非常烦碎 重要属性 public final class NioEventLoop extends SingleThreadEventLoop { //绑定 selector Selector sel

[编织消息框架][设计协议]bit基础

理论部分 1字节等于8比特,也就是8个二进数,如下面公式 1Byte = 8bits = 0111 1111 1Short = 2Btye 1Int = 4Byte 那学这些有什么用呢? 可以用来做数据存储,如状态,操作类型 如:拿1Byte演示 操作数据 状态数据 小结:1个Byte可以存储 -127~127 个数,也就是有256个标识可以使用 我们可以用4bits做状态,4bits做操作,1Byte容量组合成两种数据 小提示:可以用计算器来计算转换,window系统在附件里能找到 有的状态是

[编织消息框架][netty源码分析]14 PoolChunk 的 PoolSubpage

final class PoolSubpage<T> implements PoolSubpageMetric { //该page分配的chunk final PoolChunk<T> chunk; //内存使用记录 private final long[] bitmap; //该page是否已释放 boolean doNotDestroy; //该page在chunk中的id,通过区段计算偏移 private final int memoryMapIdx; //该page在chu

[编织消息框架][设计协议]解决粘包半包(下)

接下来介绍netty如何切割分包 学习目的,了解处理业务,方便以后脱离依赖 读者如果不感兴趣或看不懂可以先忽略,难度比较大 LengthFieldBasedFrameDecoder.class public LengthFieldBasedFrameDecoder( ByteOrder byteOrder, //大小端模式 默认大端 ByteOrder BIG_ENDIAN int maxFrameLength, //包Frame netty叫帧概念 最大上限 int lengthFieldOf

[编织消息框架][netty源码分析]7 Unsafe 实现类NioSocketChannelUnsafe职责与实现

Unsafe 是channel的内部接口, 负责跟socket底层打交道.从书写跟命名上看是不公开给开发者使用的,直到最后实现NioSocketChannelUnsafe也没有公开出去 public interface Channel extends AttributeMap, ChannelOutboundInvoker, Comparable<Channel> { interface Unsafe { RecvByteBufAllocator.Handle recvBufAllocHand

[编织消息框架][JAVA核心技术]动态代理应用7-实现设计

根据设计生成两个接口,IRpcSend send方法返回数据要求包装成QResult对象 public interface IRpcSend { public <T> QResult<T> send(byte command, Object... args); } public interface IRpcReceive { public <T> T receive(byte command, Object... args); } public interface IR

[编织消息框架][分层模型设计]会话与节点

1 public class QNode implements IRecycle { 2 /** 3 * session会话,记录通信层属性 4 **/ 5 private QSession session; 6 /** 7 * message cb 维护消息回调 8 **/ 9 private QCallbackManager callbackManager; 10 /** 11 * netty channel 12 **/ 13 private Channel channel; 14 15