Tomcat

揭开 Raft 的神秘面纱,和ApacheRatis 了解Raft 组件的使用

扶醉桌前 提交于 2020-08-16 20:19:19
相比 Paxos, Raft 一直以来就是以易于理解著称。今天我们以一年 Raft 使用者的角度,来看一下,别人根据 Raft 论文实现了之后,我们一般要怎么样使用。 俗话说,要想知道梨子的味道,就要亲口尝一尝,没吃过猪肉,也要见一见猪跑。否则别人再怎么样形容,你可能还以为是像猫狗一类毛茸茸。 在 Raft 官网里长长的列表就能发现,实现 Raft 的框架目前不少。Java 里我大概看了蚂蚁的 SOFARaft 和 Apache 的 Ratis。这次我们以 Ratis 为例,揭开面纱,来看看到底要怎样使用。 当然,下面具体提到的例子,也是这些组件中自带的 example。 一、编译 github下载 Ratis 直接 mvn clean package 即可,如果编译过程中出错,可以先clean install ratis-proto 二、示例 Ratis 自带的示例有三个: arithmetic counter filestore 在 ratis-examples 模块中,对于 arithmetic 和 filestore比较方便,可以通过main/bin目录下的 shell 脚本快速启动 Server 和 Client 来进行测试。 对于Raft,咱们都知道是需要多实例组成集群才能测试,你启动一个实例没啥用,连选主都成问题。Bin 目录下的 start-all 支持

社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低

冷暖自知 提交于 2020-08-16 19:28:15
作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者 导读: 什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 QCon 上海 2019 重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM)开源项目 。 OAM 的核心关注点 关注点分离: 开发者关注应用本身,运维人员关注模块化运维能力,让应用管理变得更轻松、应用交付变得更可控; 平台无关与高可扩展: 应用定义与平台层实现解耦,应用描述支持任意扩展和跨环境实现; 模块化应用运维特征: 可以自由组合和支持模块化实现的运维特征描述。 OAM 的核心模块 1. 应用组件(Components) 在 OAM 中,“应用”是由多个概念共同组合而成。第一个概念是:应用组件(Components),它是整个应用的重要组成部分。应用组件既可以包括应用运行所依赖的服务:比如 MySQL 数据库,也包括应用服务本身:比如拥有多个副本的 PHP 服务器。开发者可以把他们写的代码“打包”成一个应用组件,然后编写配置文件来描述该组件与其他服务之间的关系。 应用组件的概念让平台架构师等能够将应用分解成一个个可被复用的模块,这种模块化封装应用组成部分的思想,代表了一种构建安全

Docker中级篇|深入探究Docker

£可爱£侵袭症+ 提交于 2020-08-16 19:20:54
简介: 深入探究Docker Docker镜像理解 Docker镜像是什么 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件 Docker镜像加载原理 UnionFs:联合文件系统 UnionFs(联合文件系统):Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,UnionFs联合文件系统是Docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录 Docker镜像加载原理 Docker的镜像实际上由一层一层的UnionFs文件系统组成 bootfs:主要包含 bootloader和 Kernel,bootloader主要是引导加 kernel,Linux刚启动时会加bootfs文件系统,在 Docker镜像的最底层是bootfs,这一层与我们典型的Linux/Unix系统是一样的,包含bootfs加载器和内核,当bootfs加载完成之后整个内核就都在内存中了

TCP的半连接队列和全连接队列

耗尽温柔 提交于 2020-08-16 17:48:34
本文全文转载于: https://blog.csdn.net/russell_tao/article/details/9111769 1、网络编程模型: 首先看一张网络编程的模型图: 编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目的。学习复杂的通讯框架、底层细节,在习惯于使用OO语言的程序员眼里是绝对事倍功半的。以上做法无可厚非,但有一定的局限性,本文讲述的网络编程头前冠以“高性能”,它是指程序员设计编写的服务器需要处理很大的吞吐量,这与简单网络应用就有了质的不同。因为:1、高吞吐量下,容易触发到一些设计上的边界条件;2、偶然性的小概率事件,会在高吞吐量下变成必然性事件。3、IO是慢速的,高吞吐量通常意味着高并发,如同一时刻存在数以万计、十万计、百万计的TCP活动连接。所以,做高性能网络编程不能仅仅满足于学会开源组件、中间件是如何帮我实现期望功能的,对于企业级产品来说,需要了解更多的知识。 编写高性能服务器的关注点有3个: (1)如果基于通用组件编程,关注点多是在组件如何封装套接字编程细节。为了使应用程序不感知套接字层

Centos7部署Nginx负载均衡Tomcat服务器及session共享架构

99封情书 提交于 2020-08-16 16:50:59
简介 负载均衡 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 session共享 Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息 由于负载均衡会把任务分摊到不同的机器上,因此当用户进行页面刷新时会从机器A跳转到机器B,此时用户所进行的所有操作数据可能会丢失,因此需要通过集群的session共享机制来实现数据跟踪 前期准备 准备Centos7服务器,同步系统时间,配置IP地址和hostname,关闭防火墙和selinux 安装openjdk [root@localhost ~]# yum install java -y #查看安装情况 [root@localhost ~]# java -version openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

Tomcat9 Error: Could not find or load main class org.apache.catalina.startup.Bootstrap

孤者浪人 提交于 2020-08-16 16:03:11
今天因为同事要求,希望安装一个Tomcat9给他,结果发现一个问题: 首先我登录的是tomcat官网,选择source包下载,wget http://apache.fayea.com/tomcat/tomcat-9/v9.0.0.M26/src/apache-tomcat-9.0.0.M26-src.tar.gz tar -xf apache-tomcat-9.0.0.M26-src.tar.gz mv apache-tomcat-9.0.0.M26-src /mnt/tomcat cd /mnt/tomcat/bin 执行./startup.sh 结果显示,启动正常 Using CATALINA_BASE: /mnt/tomcat Using CATALINA_HOME: /mnt/tomcat Using CATALINA_TMPDIR: /mnt/tomcat/temp Using JRE_HOME: /usr/java/jdk1.8.0_77 Using CLASSPATH: /mnt/tomcat/bin/bootstrap.jar:/mnt/tomcat/bin/tomcat-juli.jar Tomcat started. 但是用netstat -lntp|grep 8080会发现tomcat根本没有启动,查看 /mnt/tomcat/logs/catalina

JNPF.java前后端分离框架,SpringBoot+SpringCloud开发微服务平台

∥☆過路亽.° 提交于 2020-08-16 14:48:54
JNPF.java 版本采用全新的 前后端分离 架构模式。前后端分离已成为互联网项目开发的业界标准开发方式,通过 nginx+tomcat 等方式有效的进行解耦合,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务打下坚实的基础。 技术选型: SpringBoot SpringCloud Mybatis-Plus Redis jquery vue Bootstrap ElementUI Uniapp h5 微服务开发: JNPF.java采用 SpringBoot框架 和 SpringCloud框架 ,springboot框架的特点在于简化配置,快速开发,再在搭配上代码生成器,让不懂代码的人也能做到快速开发软件。Springboot也有良好的扩展性,可以将springboot项目拆分为springcloud微服务,springcloud是一套目前完整功能的微服务框架。 微服务已经成为未来开发的大趋势之一了,越来越多的企业开始转型微服务架构,使用微服务架构的项目更加易于开发和维护,并且突破了技术栈的限制,在JNPF.java项目中,已经不限制开发语言了,你可以使用c#语言来开发java项目。 功能模块: 代码生成器 数据连接 功能管理 系统配置 菜单导航 组织管理 岗位管理 用户管理 权限管理 工作流引擎 流程委托 流程设计 报表设计 知识管理等多种原生组件

3位1体学习法(smart哥)

血红的双手。 提交于 2020-08-16 12:13:39
3位1体学习法(码农最正确的学习姿势) 文章目录 3位1体学习法(码农最正确的学习姿势) 前言 讲师介绍 何为3位1体打法? 1、第1位 2、第2位 3、第3位 结语 前言 3位1体这个概念来源于刘慈欣的科幻小说《三体》,smart哥本人非常喜欢这部小说,感叹作者作为一个技术狂,他这种技术狂特有的冷酷具有非凡的吸引力,更关键的是他天马行空的想象。 基于这个概念smart哥独创了3位1体的码农学习法,该学习法是码农在浩瀚的技术海洋中的指南针,面对浩瀚的技术和自己有限的职业生涯,那么码农如何自处?35岁后被淘汰还是继续保持优良的竞争力? 996,007等冷酷的数字将天朝猿浪们拍死在一个又一个的滩头,前不久某宁公司又猝死一个。smart哥感叹码农的无奈和麻木,以及被摧残的体无完肤的肉体和摇摇欲坠的意志。 讲师介绍 smart哥,互联网悍将,历经从传统软件公司到大型互联网公司的洗礼,入行即在中兴通讯等大型通信公司担任项目leader,后随着互联网的崛起,先后在美团支付等大型互联网公司担任架构师,公派旅美期间曾与并发包大神Doug Lea探讨java多线程等最底层的核心技术。对互联网架构底层技术有相当的研究和独特的见解,在多个领域有着丰富的实战经验。 何为3位1体打法? 所谓3位1体说白了其实很简单,就是把我们所学的技术专题分为 快速入门篇,实战进阶篇,源码解析篇 这3位

集群与分布式,你们知道有什么区别吗?

廉价感情. 提交于 2020-08-16 11:27:55
用一个例子介绍集群与分布式: 小餐馆原来只有一个厨师,切菜洗菜备料炒菜他都全干。后来餐馆的客人多了,厨房里一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关 系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜 师,两个配菜师关系是集群。 一、分布式: 分布式是指将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情。并且每台服务器都缺一不可,如果某台服务器故障,则网站部分功能缺失,或导致整体无法运行。存在的主要作用是大幅度的提高效率,缓解服务器的访问和存储压力。 分布式的优点是细化了应用程序的功能模块,同时也减轻了一个完整的应用程序部署在一台服务器上的负担,用了分布式拆分后,就相当于把一个应用程序的多个功能分配到多台服务器上去处理了。 注意:该图中最大特点是:每个Web服务器(Tomcat)程序都负责一个网站中不同的功能,缺一不可。如果某台服务器故障,则对应的网站功能缺失,也可以导致其依赖功能甚至全部功能都不能够使用。 二、集群: 集群是是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。可以利用一些廉价的符合工业标准的硬件构造高性能的系统。实现:高扩展

Docker 安装tomcat

点点圈 提交于 2020-08-16 10:29:15
这里来记录下tomcat的安装 拉取镜像 https://hub.docker.com/_/tomcat?tab=tags 这里有各种版本的 docker pull tomcat: 8.5 -jdk14-openjdk-oracle 本地安装: docker run --name tomcat-test -d -p 8080 : 8080 tomcat: 8.5 . 55 -jdk14-openjdk-buster 这里安装后,一般会访问不了, 因为进来发现其实webapps目录里面是空的,什么都没有 docker exec -it tomcat- test bash root@61a753d0ed78: /usr/local/ tomcat# cd webapps root@61a753d0ed78: /usr/local/tomcat/webapps# ls 这里把webapp.dist的文件拷贝过来 root@61a753d0ed78:/usr/local/tomcat# cp -r webapps.dist /* webapps root@61a753d0ed78:/usr/local/tomcat# cd webapps root@61a753d0ed78:/usr/local/tomcat/webapps# ls ROOT docs examples host