当前位置: 首页 > news >正文

h5界面设计seo全称

h5界面设计,seo全称,分析网站统计对网络营销的价值,多用户旅游网站开发听说ES网络层很难?今天来卷它😄 前言 ES网络层比较复杂,分为两个部分: 基于HTTP协议的REST服务端基于TCP实现的PRC框架 插件化设计的网络层模块(NetworkModule) 入口还是上一章的创建Node构造方法的地方…

听说ES网络层很难?今天来卷它😄

前言

ES网络层比较复杂,分为两个部分:

  1. 基于HTTP协议的REST服务端
  2. 基于TCP实现的PRC框架

插件化设计的网络层模块(NetworkModule)

入口还是上一章的创建Node构造方法的地方:
image.png
一直往下会找到之前说的加载module和服务的地方:
image.png

NetworkModule:

NetworkModule属性

image.png
有两个map,一个map存放tcp层的实现,一个map存放http层的实现

NetworkModule构造方法

image.png
上面的参数分别为:

  1. settings:settings配置
  2. transportClient: 一般为false
  3. plugins:NetworkPlugin 提供了获取TCPTransport和HTTPTransport的接口,NetworkModule通过遍历全部networkPlugin来加载所有的网络层实现,也就说说,ES的网络层不一定就是一种实现。你也可以通过实现NetworkPlugin去提供网络层实现。我们主要看的网络层是Netty4Plugin
  4. threadPool:线程池
  5. bigArrays:大数组,通信的时候会使用它的空间
  6. pageCacheRecycler:和核心流程没关系,跳过
  7. circuitBreakerService:和核心流程没关系,跳过
  8. namedWritableRegistry:
  9. xContentRegistry:
  10. networkService:网络服务,主要是将host地址转换为 Java Network地址对象,解析地址使用
  11. dispatcher:它的实现是RestController,RestController内部注册了很多处理器,对外提供访问路由的功能,也就说Http请求会转换为RestRequest,RestRequest最终会交给RestController去找到合适的handler,然后去访问最终的义务层逻辑,(后面源码会分析到)
  12. clusterSettings:集群配置

image.png
我们来看这里做了几件事(我们这里看的是Netty4Plugin):

  1. plugin.getHttpTransports:获取Http网络层的实现,这里返回的是一个map,key是netty4,value是一个Netty4Plugin lambda表达式

image.png
image.png

  1. 遍历httpTransportFactory,将key和value值放到之前的transportHttpFactories

image.png

  1. 后面的RPC逻辑类似,直接过😄


HTTP通信层**(Netty4HttpServerTransport)**

Netty4HttpServerTransport构造方法

image.png
和之前NetworkModule的参数基本差不多,多了一个sharedGroupFactory:这里是一个netty NioEventGroup。学过netty源码应该都懂,如果不懂,可以看我写的netty源码解析。

Netty4HttpServerTransport.doStart方法

入口:

Node->start() => injector.get(HttpServerTransport.class).start()=>Netty4HttpServerTransport.doStart
在node节点启动的时候,会存在image.png,这个httpServerTransport实现了AbstractLifecycleComponent,在它的start最终会调用到子类Netty4HttpServerTransport的doStart方法
image.png
image.png

doStart方法

image.png
image.png
都是netty服务端常规的配置,如果看不懂,还是要学一下netty源码的。学过netty的都知道,肯定是有一个服务端的请求入口Handler类的,这个类才是我们最要注意看的:Netty4HttpRequestHandler

Netty4HttpRequestHandler.channelRead0

请求处理入口:Netty4HttpRequestHandler->channelRead0(ctx, httpRequest)
image.png
又把请求转接给了Netty4HttpServerTransport.incomingRequest

Netty4HttpServerTransport.incomingRequest

请求处理入口: Netty4HttpServerTransport->incomingRequest(httpRequest, httpChannel
image.png
image.png

这里的核心逻辑就是:解析HttpRequest为RestRequest,包装HttpChannel为RestChannel。包装之后,最终交给 Dispatcher 方法


RestController.dispatchRequest

image.png
会接着调用RestController.tryAllHandlers方法
image.png
image.png
总结一下一共做了这几件事:

  1. �读取RestRequest请求路径(rawPath)及Method(GET、POST、DELETE…)等信息
  2. 根据rawPath等信息到PathTrie(字典树结构)中找到提供服务的Handler
  3. 调用BaseRestHandler->handleRequest(restRequest, restChannel, nodeClient) (BaseRestHandler为所有Rest*Action的父类…),比如我这里debug用的是写索引数据的rest请求,实际请求到的是RestIndexAction

#### BaseRestHandler.handleRequest ![image.png](https://img-blog.csdnimg.cn/img_convert/4415eb016166c65ad43bc4a09b57ef01.png)
![image.png](https://img-blog.csdnimg.cn/img_convert/7ce72cd7f91d788b21329c44389f03b0.png)
总结一下这里做了几件事:
  1. BaseRestHandler的prepareRequest是模版方法,最终会调用到RestIndexAction里面的prepareRequest方法,里面就是负责解析restRequest请求为具体的 业务请求对象,并生成一个lambda表达式
  2. BaseRestHandler调用action.accept 调用之前的lambda表达式

TCP通信层(ES内置RPC 实现,Netty4Transport)

http://www.yayakq.cn/news/942828/

相关文章:

  • 免费企业信息查询网站付费推广渠道有哪些
  • 个人做地方民生网站阿里巴巴外贸网站论坛
  • 如何建设和优化一个网站步骤房产类网站开发
  • 兴义 网站建设做购物网站怎拼找商家
  • 西安官网优化技术搜索引擎关键词优化有哪些技巧
  • 政务内网网站群建设深圳黑马程序员培训机构地址
  • 手机wap网站建设多少钱广告素材网站都有哪些
  • 企业网站建设问题研究开发平台有什么
  • 嘉兴建站模板系统天津电商网站建设
  • 绵阳市做公司网站北京影视宣传片拍摄公司
  • 做暧暧暖网站欧美网站扒皮下载后怎么做
  • 企业网站建设经济效益分析wordpress 上传图片 500
  • 大气金融网站四川seo哪里有
  • iis网站的建设设置wordpress上传文件大小
  • 企业网站建设费用 珠海godady怎么做网站
  • 如何提升网站的流量建设工程八大员考试网站
  • 网站绑定微信公众号织梦网站版权
  • 易语言可以做网站了吗wap网站制作动态
  • 网站空间管理信息网站建设项目报告总结报告
  • ppt哪个网站质量高在家开网店怎么开
  • 单纯做网站的公司网络结构图怎么画
  • 常州做企业网站的公司移动网站怎么登录
  • 网站的栏目和板块设计重庆整合营销网站建设
  • 电子商务网站建设投资预算网站多快能收录seo
  • 网站的站点地图设计网站建设公司宣传语
  • 织梦网站修改教程视频教程啊里网站制作
  • 网站页面设计公司推荐广西城乡和建设厅网站首页
  • 想学网站建设与设计的书籍昆明网页设计培训机构
  • 网站的类型和特色河南 网站开发
  • 宿迁市住房城乡建设局网站网页打不开但是qq能上是怎么回事