54lyll / cooser

基于Netty+Protobuf+Disruptor+SpringBoot开发的高性能、可扩展Tcp应用服务器。实现channel生命监听、前后置拦截器、服务器上下文注入等插拔API,业务处理类SpringMVC,可URL路由。提供支持同步与异步双工通信的客户端。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

https://blog.csdn.net/qq_42022528/article/details/109387773

1服务器架构

1.1简介

frame Cooser是基于Netty框架搭建的Reactor模式高性能,可扩展的网络服务器。基于Netty对NIO的多路复用机制,高效利用cpu硬件资源,优化服务器并发连接性能,达到伸缩性要求。我司业务场景为常量连接(十百千),大量请求,作为底层TCP服务器,从数据传输体量、解析性能考虑,采用Google Protobuf通信协议,自定义传输数据结构。Disruptor是一款极速并发框架,Cooser引入它作为中间消息队列,将网络数据接收和业务处理逻辑单元解耦,极大提升服务器吞吐性能,同时保持低延迟。在网络请求处理链路的多个环节,开发了插拔组件API,如Channel生命周期监听,请求事件的前后置拦截器,业务处理类MVC模式,使cooser成为一个在业务上具有高扩展性的服务器开发框架。

1.2 Quick start

代码方式
ChannelFuture future = CooServer.newInstance(ProtocolMessage.DEFAULT_PROTOCOL)
                .maxConnection(1024)
                .componentScan("com.wonderzh.cooser.example")
                .performance(CooServer.Performance.NORMAL)
                .enableAnonymous(true)
                .bind(8090);
注解方式

基于springboot启动,在@SpringBootApplication启动类上使用@EnableCooser。 Apllication.yml文件配置参数

cooser:
  server:
    port: 8090  #端口号
    max-connection: 5000   #最大连接数
    heart-time: 300  #心跳监听时间,单位秒
    component-scan: com.smartwater.data   #组件扫描包路径
    performance: normal   #服务器业务消费侦听线程性能
    anonymous-enable: false  #是否允许匿名访问

2服务器详细设计

2.1服务器初始化详细设计

服务器初始化主要做三件工作

  1. 解析配置,创建服务器上下文CooserContext
  2. 初始化服务器功能组件,并注册到Dispatcher调度器
  3. 启动Netty Server,监听端口 server

2.2服务器网络请求处理详细设计

服务器对网络请求处理的主要由三个功能模块承载,分别为请求消息生产MessageDuplexHandler、请求业务处理MessageProcessor以及综合调度FrameDispatcher。 server-process

About

基于Netty+Protobuf+Disruptor+SpringBoot开发的高性能、可扩展Tcp应用服务器。实现channel生命监听、前后置拦截器、服务器上下文注入等插拔API,业务处理类SpringMVC,可URL路由。提供支持同步与异步双工通信的客户端。


Languages

Language:Java 100.0%