weblogic和tomcat培训整理

WorkFlowy分享链接:https://workflowy.com/s/weblogictomcat/LMZWgQF4zBXUEceU

**************************************************************************************************************************************************

以下为WorkFlowy笔记中的无格式内容:

 

weblogic和tomcat培训学习整理

  • welogic #weblogic
    • 美国BEA公司出品的基于JavaEE的Java应用服务器
      因基于JavaEE,所以支持所有符合JavaEE规范的技术,如EJB等(区别于tomcat)
      • EJB,Java企业bean,服务端组件,核心应用是部署分布式应用程序
        组件是存放在容器中,容器起到提供环境和管理的作用 调用组件的被称为EJB客户端,客户端可运行在Web容器中,如jsp,servlet,we'b
        • EJB的基础是基于RMI技术,通过RMI,JavaEE将EJB组件创建为远程对象,客户端通过RMI技术在服务器上调用,实现了分布式调用
          • RMI技术--远程方法调用
            通过RMI技术,将实现不同模块的服务器相互连接通信,实现一个完整的功能---即实现了服务器集群
      • 重量级,支持的技术很多,还原生支持集群和session共享、
    • 应用部署
      • 安装成功后,登陆weblogic控制台,按界面提示逐步部署(手动)
      • 将应用(或是war包、jar包等)拷贝到weblogic下的一个autodeploy目下下,重启weblogic即可实现自动部署(自动)
    • weblogic中集群相关概念
      • 服务器
        • AdminServer
          只负责管理
          • 用于管理。包括应用部署,动态创建server、各种服务配置
          • 充当管理者,监控其他服务器状态
        • ProxyServer
          负责受理分配--类似nginx的负载均衡
          • 处理外部请求,将工作分配给具体服务器
          • 客户端访问的地址就是ProxyServer提供的ip和端口
        • ManagedServer
          真的部署应用干活的
          • 接受来自ProxyServer的请求,处理后返回客户端
      • 集群
        • 设置各个Server间多播通信,看是否可用,是否可以将请求分配给该Server
      • 计算机
        • 受管服务器的ip、端口(即集群中的ManagedServer),配合节点管理器使用
      • 节点管理器
        • 将受管服务器的真实物理机和服务器以及AdminServer绑定
          达成在控制台控制集群中Managed Server的重启、关闭等功能,大大节省时间
  • tomcat #tomcat
    • Apache旗下的一款开源的实现Jsp规范的Servlet容器
      也可以处理传统的静态Html页面,但效率不如Apache,因此也就引入了动静分离的概念(tomcat配合nginx) 也是基于Java架构
      • 轻量级,要达到集群,需要其他的组件支持(如,nginx实现负载均衡,redis等缓存数据库实现session共享)
        • 注:由于tomcat的支持并发量不高,在高并发和大型项目中不适合
          linux系统中一个进程最大支持线程数不超过1000,因此,一个tomcat容器下的应用最大并发量不会超过1000
          • 经常采用集群来处理高并发场景
    • tomcat服务器结构
      Ref:https://blog.csdn.net/xlgen157387/article/details/79006434 (大神写的,通俗易懂)
      • 一个Server
        控制tomcat的生命周期
        • 多个Service
          用于对外具体提供服务
          • 多个Connector
            因为一个服务可以有多个链接)(同时提供http和https连接,提供相同协议不同端口的链接等) 用于处理连接相关的事情,并提供Socket与Request和Response相关的转化
            • Connector的结构
              • ProtocolHandler
                使用它来接受请求
                • Endpoint
                  处理底层Socket的网络连接 实现TCP/IP协议
                  • 实现AbstractEndpoint定义的Acceptor和AsyncTimeout两个内部类和一个Handle接口
                  • Acceptor
                    • 监听请求
                  • AsyncTimeout
                    • 检查异步Request的超时
                  • Handle
                    • 处理接受到的Socket,在内部调用Processor处理
                • Processor
                  将Endpoint接受的Socket封装成Request 实现HTTP协议
                • Adapter
                  将Request交由Container进行具体的处理
            • Connector如何接受请求
              • 1.通过Acceptor监听到请求后
              • 2.通过AsyncTimeout处理请求是否超时
              • 3.未超时的请求,Socket被Handle接受,在内部调用Processor封装成Request
            • 如何将请求封装成Response和Request
              • 由Endopoint中的Handle接受Socket,并调用Processor进行封装
            • 封装完的Response和Request怎么交由Container
              • 由Adapetr交由Container进行具体的处理
            • Container处理完后怎么交由Connector并返回给客户端
              • 经由Pipeline-Valve管道模式从最上层容器Engine到最底层Wrapper依次执行后,请求处理完成,并将返回结果返回给Connector,Connector通过Socket方式返回给客户端
          • 一个Engine(Container)
            封装和管理Servlet,处理具体的Request请求 管理多个站点(Host)
            • 多个Host
              代表一个站点(虚拟主机) 类似于文件目录中的webapps
              • 多个Context
                代表一个应用程序 类似于文件目录下的webapps下的子目录(如ROOT,默认主应用)
                • 多个Wrapper
                  每个Wrapper封装着一个Servlet
            • Container怎么处理请求
              • 利用Pipeline-Valve管道来处理
                • Pipeline-Valve---责任链模式
                • 责任链模式
                  • 一个请求处理过程,被多个处理者以此进行处理,没个处理者负责自己的部分,处理接受后返回请求给下一个处理者
                • Pipeline-Valve不同于普通的责任链模式
                  • 在每层容器的管道的最后一步,必会执行一个Valve,叫做BaseValve,BaseValve是不可删除的
                  • 上层容器的管道的BaseValve会调用下层容器的管道
                    类似链表一样将整个处理流程连接起来
                • container由四层容器,因此有四个管道,每层容器的管道会以此执行Vavle,并在BaseVavle调用下一层容器的管道
                  • 当到了最后一层,Wrapper时,会在其BaseVavle创建FilterChain,并调用其doFilter方法来处理请求,此doFilter方法会调用所有Fileter的doFilter方法和Servlet的service方法,至此,请求处理完成
          • Connector和Container的关系
            • 1.当一个请求到达tomcat时,首先经由Service交由Connector
            • 2.Connector接受请求并封装成Response和Request,封装完后,交由Contatiner处理
            • 3.Container处理完后返回Connector,
            • 4.Connector通过Socket将处理的结果返回给客户端
              Connector底层是通过Socket来进行连接的,封装Request和Response又是按照HTTP协议进行的 Connector需实现TCP/IP协议和HTTP协议
    • tomcat的简单优化
      • 运行方式优化
        • tomcat的三种运行方式
          • BIO--阻塞式
            • tomcat 7 及以下版本默认为此方式
            • 阻塞运行线程,导致进行IO时,cpu一直在等待,浪费资源,一个线程只能去处理一个请求
              1000并发时,会开启1000线程,在linux下达到了进程的最大线程数
          • NIO--非阻塞式
            • tomcat 8 及以上版本默认此方式,区别于BIO,可以用少量线程去处理大量并发的请求
          • APR--操作系统层面解决io阻塞问题
            • tomcat 7或tomcat 8 在win7及以上win系统中启动默认为此方式
            • linxu下,需安装apr和native依赖
          • APR时在高并发下最优的选择
      • 线程池优化
        • 可以适当的加大线程池的最大线程数、最小线程数、最大空闲线程数
        • 由于tomcat的限制,但tomcat应用注定不适合高并发场景
          • 解决方案:nginx负载均衡,构建集群
      • Jvm优化
        • 可适当调整Xms、Xmx和PermSize、MaxPermSize大小
          • Xms与Xmx大小最好一致,否则GC后会重新分配内存空间
          • 永久代的常见内存溢出
            • 当jsp预编译时,如果应用中存在大量的第三方jar,可能会超出一定一的4m内存,导致报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值