大家好,今天小编来为大家解答以下的问题,关于服务器网站源码分享是什么,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从入门到架构的书籍。
来吧,骚年~
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
