813 Star 4.3K Fork 1.1K

GVPsmartboot / smart-socket

 / 详情

smart-socket 需求收集

已完成
拥有者
创建于  
2021-01-22 11:38

为了充分了解 smart-socket 在实际应用中存在的用户痛点,欢迎大家在评论中反馈你对 smart-socket 的意见和建议。

包括且不限于功能增强、文档完善、示例补充等方面,凡是共性的问题我会统一安排处理。

当然,希望你描述的内容最好具体一些,太笼统的建议我也不知道该怎么做 :stuck_out_tongue_winking_eye:

评论 (28)

三刀 创建了任务
三刀 负责人设置为三刀
三刀 置顶等级设置为
三刀 优先级设置为主要
三刀 关联仓库设置为smartboot/smart-socket
三刀 修改了描述
展开全部操作日志

添加各种plugin的使用示例,包括但不限于ReconnectPlugin、HeartPlugin、MonitorPlugin等 :heart_eyes:

三刀大佬,smart-socket有没有netty的网速限制的功能呢?例如可以对上传速率,下载速率以及单个客户端可用的最大流量限制等功能
感谢解答~

三刀大佬,smart-socket有没有netty的网速限制的功能呢?例如可以对上传速率,下载速率以及单个客户端可用的最大流量限制等功能
感谢解答~

@何好听 现在还不支持精准限速。后续会考虑通过插件化来实现。

添加各种plugin的使用示例,包括但不限于ReconnectPlugin、HeartPlugin、MonitorPlugin等 :heart_eyes:

@wujiawei0926 收到

socket或websocket单机应用比较简单,但是分布式或集群的难度就比较大了,现有的单机要改造都比较麻烦,方案也有多种,像tio集群版还是收费的,可想而知集群的麻烦。如何简单的配置就能实现高可用是比较多的需求

既然要面对集群这种更加专业性的领域,对应的人也得具备同等的能力。不要指望能找到现成的解决方案,这类解决方案不一定能贴合你的实际场景,又或者有各种限制条件。
这类问题对于懂得人而言就是很简单,对于不懂的人,做的再简易还是会不懂。关键在于这个“人”,面对问题的态度。

我是看这里是叫需求收集,顺手提了下,并非要求

请问下 现在是否有tcp和udp转发功能

能描述的再详细些吗?

client->server -> server node1
-> sever node2

就是类似nginx那样,客户端上报数据到server 但是server不做处理,而是直接把数据转发到其他的 节点再做处理 类似这样的负载均衡

目前没有现成的,需要定制开发

期望增加类似netty的最通用的解码器: LengthFieldBasedFrameDecoder

在aio-pro包中有一个 FixedLengthFrameDecoder

这个不通用, LengthFieldBasedFrameDecoder是基于长度字段解码器,长度字段的在协议头的位置和长度可以自己定义

支持 这个用的很广泛 频繁

可以增加软负载均衡及服务端熔断和熔断自恢复功能吗?

这种需要基于特定协议和场景订制的

请问如何写成同步的调用方式,目前只有 message processor 来接受回调通知,那么就无法把代码写成同步调用返回形式,请教一下大佬,第一天使用,下面是现在使用的情况:

  @Override
  public void req(
      @NonNull final AbstractTcpClientParamsETO reqData,
      @NonNull final Class<T> toClazz,
      @NonNull final ServiceInfo serviceInfo,
      @NonNull final TcpRespListenerI<T> respListener) {
    // step1
    reqData.validate();
    try {
      // step2
      // 启动客户端
      final MessageProcessor<String> clientProcessor =
          (session, res) -> {
            // step5
            // TODO zhaojun 三方返回数据报文记录
            SystemRuntimeLogUtils.info(
                "external online send tcp req, The response data received is {}", res);
            // step6
            final T respData = respListener.parseRespData(res, toClazz);
            // 在这里可以对外部服务的一些状态码进行校验,如果校验失败直接抛出异常即可
            // step7
            respListener.bizCodeValidate(respData);
            final AbstractRespETO respPojo = (AbstractRespETO) respData;
            // step8
            respPojo.validate();
            // step9
            // 会在自定义响应对象 T 自身的validate 方法调用后执行,即如果第三方返回的数据本身有问题在 validate进行字段校验的时候就会 fast fail
            respPojo.desensitized();
            // step10
            respListener.success(respData);
          };
      final AioQuickClient aioQuickClient =
          new AioQuickClient(
              clientProps.getHost(), clientProps.getPort(), new StringProtocol(), clientProcessor);
      final AioSession session = aioQuickClient.start();
      // 请求参数对象ETO 自行判断如何转换提交参数数据报文格式类型
      // step3
      final String reqParams = reqData.toParams();
      final byte[] bytes = reqParams.getBytes();
      // encode
      session.writeBuffer().writeInt(bytes.length);
      session.writeBuffer().write(bytes);
      // step4
      // flush data
      session.writeBuffer().flush();
    } catch (final IOException e) {
      SystemRuntimeLogUtils.error("发送 tcp 请求出现 IO 错误", e);
      throw new TcpInvokeException(serviceInfo, TcpInvokeExceptionDesc.TCP_IO_ERR, e);
    } finally {
    }
  }

目前只有在上面的 自定义 resp listener的 success 回调接口客户端程序能获取到数据,但是如果在 DDD 分层模型,势必要把调用到基础设施层(TCP 外联其他 tcp server,我们目前的场景)的这个监听器一致传到请求入口层。这种耦合太严重了。

可以参考下smart-socket的 RPC 示例程序:org.smartboot.socket.example.rpc.rpc.RpcConsumerProcessor

谢谢 但是太复杂了。哈哈

可以在安卓开发中使用吗

可以的,满足jdk版本即可

建议把在TcpAioSession的WriteCompletionHandlerwrite在不破坏原有能力的情况下,类似completed的回调方法可以拓展开放成类似servlet的filter chain的回掉链,供用户可以参与这个事件.

不太理解。或者你提交个pr,我看看是个怎样的能力

类似netty的ChannelPipeline

我对于netty不了解,要么看看aio-pro中的AsynchronousSocketChannelProxy能否满足你的需求

好的,我去看看。

三刀 任务状态待办的 修改为已完成
三刀 置顶等级 修改为不置顶

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(11)
1157021 wujiawei0926 1578943322 351975 smartdms 1578921064 86359 weng gh 1632452855 401622 aprilyu 1652947067 607165 arvinlovegood admin 1578929022 7449541 yn zhao jun 1688707362 1682497 slientes 1709971033
Java
1
https://gitee.com/smartboot/smart-socket.git
git@gitee.com:smartboot/smart-socket.git
smartboot
smart-socket
smart-socket

搜索帮助