Tomcat

打造java高性能,高可用,高复用的大型分布式项目

廉价感情. 提交于 2020-08-07 11:25:19
大型网站的特点 大型网站一般有如下特点: 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络*** 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 大型网站架构目标 大型网站的架构目标有如下几个: 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少,提高/降低处理能力。 扩展性:方便地通过新增/移除方式,增加/减少新的功能/模块。 安全性:提供网站安全访问和数据加密、安全存储等策略。 敏捷性:随需应变,快速响应。 大型网站架构模式 如上图是大型网站的架构模式: 分层:一般可分为应用层、服务层、数据层、管理层与分析层。 分割:一般按照业务/模块/功能特点进行划分,比如应用层分为首页、用户中心。 分布式:将应用分开部署(比如多台物理机),通过远程调用协同工作。 集群:一个应用/模块/功能部署多份(如:多台物理机),通过负载均衡共同提供对外访问。 缓存:将数据放在距离应用或用户最近的位置,加快访问速度。 异步:将同步的操作异步化。客户端发出请求,不等待服务端响应,等服务端处理完毕后,使用通知或轮询的方式告知请求方。一般指:请求——响应——通知模式。 冗余:增加副本,提高可用性、安全性与性能。 安全:对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。 自动化:将重复的

IDEA创建maven的web工程

自闭症网瘾萝莉.ら 提交于 2020-08-07 11:23:59
一、准备 下载安装 Apache-maven-3.5.2 下载地址:http://archive.apache.org/dist/maven/maven-3/ 在IDEA中配置maven环境 以上配置只对模块起作用,在新建项目后得重新配置,这是第一个坑,也是不好搞~~~ 二、创建maven的web项目 1.选中maven 2.填写项目坐标和名称 3.再次确认环境配置 4.完成创建 三、开始编写项目 在pom.xml 配置文件中导入jar包 < dependencies > < ! -- 放置Servlet -- > < ! -- maven没有自带Servlet项目 -- > < dependency > < groupId > jstl < / groupId > < artifactId > jstl < / artifactId > < version > 1.2 < / version > < / dependency > < dependency > < groupId > javax . servlet < / groupId > < artifactId > javax . servlet - api < / artifactId > < version > 3.0 .1 < / version > < scope > provided < / scope > < !

Tomcat源码分析笔记-2

五迷三道 提交于 2020-08-07 10:48:34
1. 生命周期的接口 Lifecycle 所有组件的类都实现了这个接口(Container、server) 使用模板模式进行初始化和启动 2. 启动脚本 Apache-Tomcat bin startup.sh -> catalina.sh(start方法) eval 最后执行了:(程序入口 + 参数) java ****.jar org.apache.catalina.startup.Bootstarp start 启动流程分析: CatalinaDaemon = Catalina对象; daemon = Bootstrap对象; daemon.load(args); // 加载初始化 catalinaDaemon.load(); daemon.start(); // 启动 catalinaDaemon.start(); 来源: oschina 链接: https://my.oschina.net/Sheamus/blog/4310631

Deploying Spring Boot in Production

对着背影说爱祢 提交于 2020-08-07 09:23:43
问题 We have a Spring Boot + Angular application. Currently we are packaging it as a jar and running it. Is it ok to use the packaging as a JAR? Or should we move to a WAR type packaging. What would be the difference? 回答1: The difference is nothing else apart from the deployment style. When using a JAR, the fat JAR that spring boot creates contains embedded tomcat. If your team's deployment environment has a Application server like WebLogic or Websphere etc., which most enterprise environment try

linux 自定义小助手

三世轮回 提交于 2020-08-07 09:14:02
前言 撸主的记忆力比较差,英语也不行。有句古话说的好, 好记性不如烂笔头 。linux上的有些命令,我根本记不住,像什么开启端口,关闭端口,添加定时任务等命令。 自定义shell脚本 date.sh 关于时间的 docker.sh docker命令 du.sh 查看文件或文件目录大小的命令 find.sh 查找命令 install.sh 安装常用软件命令,比如java、redis、nginx port.sh 对于端口的开启或关闭 system.sh 查看系统信息、磁盘容量大小、cpu信息 task.sh 对于定时任务的操作 tomcat.sh tomcat的启动、关闭、查看日志的命令 如何安装脚本 wget http://hntool.vip/sh/install.sh 下载好后执行脚本 sh install.sh 如何使用 时间 查看当前时间 hntool date now 输出: 2020-07-21 20:49:19 查看时区 hntool date zone 输出: CST +0800 系统信息 hntool sys -v 输出: LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.4.1708 (Core)

Java 类在 Tomcat 中是如何加载的?

落爺英雄遲暮 提交于 2020-08-07 08:55:03
作者 :xingoo https://www.cnblogs.com/xing901022/p/4574961.html 说到本篇的Tomcat类加载机制,不得不说翻译学习Tomcat的初衷。 之前实习的时候学习JavaMelody的源码,但是它是一个Maven的项目,与我们自己的Web项目整合后无法直接断点调试。 后来同事指导,说是直接把Java类复制到src下就可以了。很纳闷....为什么会优先加载src下的Java文件(编译出的class),而不是jar包中的class呢? 现在了解Tomcat的类加载机制,原来一切是这么的简单。 一、类加载 在JVM中并不是一次性把所有的文件都加载到,而是一步一步的,按照需要来加载。 比如JVM启动时,会通过不同的类加载器加载不同的类。当用户在自己的代码中,需要某些额外的类时,再通过加载机制加载到JVM中,并且存放一段时间,便于频繁使用。 因此使用哪种类加载器、在什么位置加载类都是JVM中重要的知识。 二、JVM类加载 JVM类加载采用: 父类委托机制 ,如下图所示: JVM中包括集中类加载器: BootStrapClassLoader 引导类加载器 ExtClassLoader 扩展类加载器 AppClassLoader 应用类加载器 CustomClassLoader 用户自定义类加载器 他们的区别上面也都有说明。需要注意的是

一对一直播系统,开发一对一视频交友系统源码的解决方案

女生的网名这么多〃 提交于 2020-08-07 08:02:18
近年来,网络直播行业呈现高速发展趋势,由于其操作便利、门槛低、收益暴利等特点导致网络直播行业刚一兴起就吸引了无数从业者。时至今日,直播平台内容同质化现象严重,竞争尤其激烈,而新兴的一对一直播软件如“雨后春笋”般进入了人们的视野。一对一直播软件源码开发核心业务模块是一对一语音聊天和一对一视频聊天,同时需要兼顾传统直播平台的互动打赏等功能。 那么一对一直播系统该怎么开发呢? 一对一的模式,其实和传统的直播搭建形式相同,也要通过一套功能全面的一对一直播源码才能完成直播平台的搭建部署。对于直播平台的搭建,可以从环境部署开始。其中包括两个方面:即服务端和客户端。 1.服务端:在部署服务端环境包含最常用的web服务nginx,MySQL、Nosql,api开发最多的三种选择:java环境,需要jdk,tomcat/jboss;php环境,需要安装php,odp;lua环境,需要安装lua、luajit 2.客户端:相比起服务端环境部署,客户端环境部署复杂很多,简单说,分为三步走: 第一步,分解一对一直播系统开发功能,了解你所需要的直播功能。 第二步,寻找合适的云服务SDK进行嵌入,在APICloud的聚合API中可以轻易找到以上的功能模块,挑选合适的模块封装到自己的App中。 第三步: App框架搭建,在APICloud Studio中直接创建应用框架,有三个常用页面框架备选; 2.积木式拼装

硬核干货合集!500+篇Java干货技术文章整理|资源|书单|工具|面试指南|强烈建议打开!

蹲街弑〆低调 提交于 2020-08-07 07:57:53
   今天给大家推荐一位在阿里做Java的朋友给大家,他是公众号【程序员书单】的作者黄小斜。   他的公众号【程序员书单】这两年来累积了200多篇优质原创文章,独家原创的系列文章有《五分钟学编程》系列,以及最近在大量创作的《程序员书单》系列文章,黄小斜在公众号里也写了很多使用的技术干货,他将其中的精华内容都整理到了这篇文章里。   该公众号专注于IT技术,致力于为程序员推荐好书。作者黄小斜是非科班出身的程序员,在自学编程的路上读过很多书,踩过很多坑,现在在阿里做研发,一直认为读书是程序员必不可少的好习惯之一。    该公众号专注于分享Java、Python、大数据、人工智能等多个领域的优质学习资源,每天为你pick精品书单,优质学习资源和软件工具。关注前沿技术与行业资讯,更关注你的自我提升。    关注公众号【程序员书单】回复“book”领取30+本Java工程师精品电子书   程序员不止需要阅读技术书籍,更需要阅读更多其他领域的书籍,比如如何思考,如何阅读,如何管理时间和提供工作效率的书籍,在程序员不断精进的路上,需要更多书籍的陪伴。不管你是刚入门,在求职面试或者已经在工作,相信本公众号推荐的一些书籍都会帮助到你!    公众号里会不定期分享电子书、技术资料、源码等干货,同时也会经常进行送书活动,回馈一直支持本号的粉丝!   同时,他也在运营一个个人网站

新特性:这招牛逼,Spring Boot 2.3.0 如何优雅停机?

半腔热情 提交于 2020-08-07 07:06:46
原文: https://mp.weixin.qq.com/s/uvNkdcmwkd6lcSRDhjPUJQ 1.什么是优雅停机 先来一段简单的代码, 如下: @RestController public class DemoController { @GetMapping("/demo") public String demo() throws InterruptedException { // 模拟业务耗时处理流程 Thread.sleep(20 * 1000L); return "hello"; } } 当我们流量请求到此接口执行业务逻辑的时候, 若服务端此时执行关机 (kill), spring boot 默认情况会直接关闭容器(tomcat 等), 导致此业务逻辑执行失败。在一些业务场景下:会出现数据不一致的情况, 事务逻辑不会回滚。 2.graceful shutdown 在最新的 spring boot 2.3 版本, 内置此功能, 不需要再自行扩展容器线程池来处理, 目前 spring boot 嵌入式支持的 web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及反应式和基于 Servlet 的 web 应用程序都支持优雅停机功能。我们来看下如何使用: 当使用 server.shutdown=graceful 启用时, 在

打造java高性能,高可用,高复用的大型分布式项目

白昼怎懂夜的黑 提交于 2020-08-07 06:14:37
大型网站的特点 大型网站一般有如下特点: 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络*** 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 大型网站架构目标 大型网站的架构目标有如下几个: 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少,提高/降低处理能力。 扩展性:方便地通过新增/移除方式,增加/减少新的功能/模块。 安全性:提供网站安全访问和数据加密、安全存储等策略。 敏捷性:随需应变,快速响应。 大型网站架构模式 如上图是大型网站的架构模式: 分层:一般可分为应用层、服务层、数据层、管理层与分析层。 分割:一般按照业务/模块/功能特点进行划分,比如应用层分为首页、用户中心。 分布式:将应用分开部署(比如多台物理机),通过远程调用协同工作。 集群:一个应用/模块/功能部署多份(如:多台物理机),通过负载均衡共同提供对外访问。 缓存:将数据放在距离应用或用户最近的位置,加快访问速度。 异步:将同步的操作异步化。客户端发出请求,不等待服务端响应,等服务端处理完毕后,使用通知或轮询的方式告知请求方。一般指:请求——响应——通知模式。 冗余:增加副本,提高可用性、安全性与性能。 安全:对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。 自动化:将重复的