服务器网站源码分享是什么?web服务器源码

大家好,今天小编来为大家解答以下的问题,关于服务器网站源码分享是什么,web服务器源码这个很多人还不知道,现在让我们一起来看看吧!

摘要:原创出处http://www.iocoder.cn/SkyWalking/collector-server-component/「芋道源码」欢迎转载,保留摘要,谢谢!

本文主要基于SkyWalking3.2.6正式版

1.概述2.接口2.1Server2.2ServerHandler3.gRPC实现3.1GRPCServer3.2GRPCHandler4.Jetty实现4.1JettyServer4.2JettyHandler666.彩蛋

1.概述

本文主要分享SkyWalkingCollectorServerComponent服务器组件。Collector通过服务器,提供API接口给调用方,例如Agent、WebUI。

ServerComponent在SkyWalking架构图处于如下位置(红框):

FROMhttps://github.com/apache/incubating-skywalking

下面我们来看看整体的项目结构,如下图所示:

OK,我们从接口到实现的顺序进行分享。

2.接口

2.1Server

org.skywalking.apm.collector.server.Server,服务器接口。其实现子类,如下类图:

serverClassify()接口方法,获得服务器分类。

start()接口方法,启动服务器。

hostPort()实现方法,获得服务器地址。

initialize()实现方法,调用io.grpc.netty.NettyServerBuilderstart()实现方法,创建io.grpc.Server对象,并启动服务器。

addService(…)方法,添加gRPC请求处理器(GRPCHandler)。

目前,GRPCServer使用在collector-agent-grpc-provider/collector-remote-grpc-provider项目。

3.2GRPCHandler

org.skywalking.apm.collector.server.grpc.GRPCHandler,gRPC请求处理器接口。其实现子类,如下类图:

GRPCHandler无任何接口方法。

4.Jetty实现

3.1JettyServer

org.skywalking.apm.collector.server.jetty.JettyServer,基于Jetty的服务器实现。

serverClassify()实现方法,获得服务器分类为”Jetty”。

start()实现方法,启动服务器。

addServlet(servlet,pathSpec)方法进行添加。

目前,JettyServer使用在collector-agent-jetty-provider/collector-ui-jetty-provider项目。

3.2JettyHandler

org.skywalking.apm.collector.server.jetty.JettyHandler,继承javax.servlet.http.HttpServlet抽象类,Jetty请求处理。

doGet(HttpServletRequest)抽象方法,处理Get请求,并返回com.google.gson.JsonElement对象。

该抽象方法会被`reply(HttpServletResponse,JsonElement)`方法,返回JSON。错误时,调用`doPost(HttpServletRequest)抽象方法,处理Post请求,并返回com.google.gson.JsonElement对象。

该抽象方法会被`#doPost(HttpServletRequest,HttpServletResponse)`方法调用。

HttpServlet所有方法被重写,并标记final修饰符,不允许子类重写

搜索微信号(ID:芋道源码),可以获得各种Java源码解析。

并且,回复【书籍】后,可以领取笔者推荐的各种Java从入门到架构的书籍。

来吧,骚年~

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平