Tomcat

三分钟读懂TT猫分布式、微服务和集群之路

拈花ヽ惹草 提交于 2020-10-31 18:53:31
针对新手入门的普及,有过大型网站技术架构牛人路过,别耽误浪费了时间,阅读之前,请确保有一定的网络基础,熟练使用Linux,浏览大概需要3-5分钟的时间,结尾有彩蛋。 目录 分布式 微服务 负载均衡集群 高可用集群 弹性云 故障转移 分布式 小马正在经营一个在线购物网站,名叫TT猫,有商品管理、订单管理、用户管理、支付管理、购物车等等模块,每个模块部署到独立的云服务主机。 现在,程序员小明同学浏览TT猫,想买一款牛逼的cherry机械键盘来提升自己的工作效率。小明打开TT猫首页、搜索商品、浏览详情以及评论、添加购物车、下单、支付等等一系列操作。小明同学一气呵成,流畅的完成了购物,当然也花费了不少银子。 但是系统又是如何对这一系列操作,如下图错综复杂的调用关系(自行忽略部分细节)。用户看不见,模不着,整个下单过程却行走在网络之间。 TT猫把所有功能模块分布部署在不同的地方,最终完成了用户一系列的请求,这大概就是一个分布式系统吧。 微服务 博主认为微服务是一种架构,也是在分布式范畴之内的。多微才叫微?在分布式系统中,微服务更加强调单一职责、轻量级通信(HTTP)、独立性并且进程隔离。 好了,没什么好说的了,实践出真知,建议大家多多了解 spring-cloud相关微服务组件。 TT猫,每年都会搞一些活动,比如女生最爱的光棍节(双11),夜深人静的时候会瞬间涌入大量用户

Linux下部署java web项目

假如想象 提交于 2020-10-31 02:51:40
首先安装mysql 服务,可以参考我另外的一篇博客 centos7下部署mysql服务 Linux下的mysql是区分数据库表名的大小写的 修改 /etc/my.cnf 文件 在 [mysqld] 节中添加: lower_case_table_names=1 Linux 系统为Centos 7.4 下载部署 jdk 下载jdk 链接 jdk8下载 #解压 tar -zxvf jdk-8u211-linux-i586.tar #移动和重命名 cp -r jdk-8u211 /opt/java/java1.8 #配置环境变量 #vim /etc/profile export JAVA_HOME=/opt/java/jdk1.8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH PATH #检查java是否安装成功 java -version java javac 下载 部署 tomcat, tomcat下载 #解压 tar -zxvf apache-tomcat-8.5.40.tar.gz #移动和重命名 cp -r apache-tomcat-8.5.40 /usr/local

Nginx 出现504 Gateway Time-out的解决方法

我怕爱的太早我们不能终老 提交于 2020-10-30 08:54:59
nginx+tomcat 后端为tomcat,nginx代理报504超时错误。 问题处理: 1、修改/etc/nginx/nginx.conf,添加如下信息: http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; #用于tomcat反向代理,解决nginx 504错误 proxy_connect_timeout 300; #单位秒 proxy_send_timeout 300; #单位秒 proxy_read_timeout 300; #单位秒 proxy_buffer_size 16k;

微服务架构10条最佳实践

南笙酒味 提交于 2020-10-30 08:08:51
转载自公众号: SpringForAll社区 确保你在分布式系统中,努力实现这些微服务的最佳实践,例如监控和REST成熟度。 使用微服务架构可以解决所有的软件架构的问题,对吗?当然,这是不对的。但是,使用微服务架构是有价值的。 Hüseyin Babal 最近发表了一个观点,即微服务架构是无法解决所有的问题的。但是,使用微服务架构是构建现代软件架构的坚实基础。在过去的许多年里,我们都知道维护单体应用而带来的挑战,所以 我们寻找一个新的选择来实现可持续,可扩展,易于集成的软件架构。以最佳实践为基础来实现微服务架构可以大幅度的改善你的软件架构。 Hüseyin 是aurea的首席软件架构师和Kloia的咨询师。他最近的演讲, 微服务架构终极指南 涵盖了他每天工作的大部分的经验和展现了实现微服务架构的最佳实践。 在他的演讲中,它使用Spring Boot来进行应用开发,Consul作为服务发现,Elasticsearrch 和Kibana作为监控,Docker和Jenkins作为持续交付。演讲中包含了十条最佳实践的代码示例演示。 最佳实践1 -- 尝试达到真正的REST 在意识到REST API的好处之后,我们可以查看上图的Leonard Richardson's 的成熟度模型,对于REST的使用有四个级别的定义。 级别0:使用一个端点来访问软件资源 级别1

solr的安装(windows)和使用

…衆ロ難τιáo~ 提交于 2020-10-30 07:47:32
介绍 Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码, Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如 Nutch、 Luke)也可以使用Solr 创建的索引。 总结一下:solr是一个java搜索引擎服务器(是一套war程序),内部集成了Lucene(apache提供的一些对搜索引擎做支持的jar包)。 Solr服务搭建 官网下载solr4.9.1的程序安装包。 下载地址: http://archive.apache.org/dist/lucene/solr/ 解压solr的zip包 将dist\solr-4.9.1.war文件复制到tomcat的webapps目录下,并将文件命名为solr.war 复制solr解压包下example\lib\ext 下所有的jar 到tomcat

Spring Boot 2.0 新特性

旧街凉风 提交于 2020-10-29 21:00:46
这是一篇总结文章,主要收集 Spring Boot 2.0 相对于 Spring Boot 1.x 的新特性,本章节并不提供实践性质的源代码。在 Spring Boot 系列文章中会持续退出实践章节。 从 Spring Boot 1.5 开始升级 如果要从 Spring Boot 1.5 升级到 Spring Boot 2.0 可能要花费一些实际,可以参考 官方迁移指南 , 中文版本迁移指南 如果是更老的版本,请参考 Upgrading from Spring Boot 1.4 迁移指南 当然,你可以从谷歌或百度搜索到中文翻译版本。 本文主要来源于 spring-boot-2.0-release-notes 基于 Java 8 支持 Java 9 Spring Boot 2.0 要求 Java 的最低版本是 Java 8,从 Spring Boot 2.0 版本开始许多 APIs 使用了 Java 8 的特性。当然你也可以选择 Java 9。 Spring Boot 2.0 不在支持 Java 6 和 Java 7。 第三方依赖库 首先 Spring Boot 2.0 是基于 Spring 5 的。那么所有的 Spring 5 的新特性 在 Spring Boot 2.0 中都有体现。 其中主要的依赖变更包括 Tomcat 8.5 Flyway 5 Hibernate 5.2

Java码农的10年的技术生涯和技术成长,值得借鉴,启发篇!

混江龙づ霸主 提交于 2020-10-29 18:05:04
先简单分享自己这10年在技术上曾经感觉到明显迷茫的阶段: 阶段1:只会增删改查: 时间:大学期间(2008年-2009年) 学习的方式:看视频、看书。(学会了使用控件的增删改查,和写SQL语句)。 自我感觉:XX管理系统已不在话下,反正网站弄来弄去也是增删改查,这大概就是无知者无畏。 如何破:(走出社会去就好了)。 阶段2:能快速实现功能,却不会思考: 时间:(2009年-20012年) 学习的方式:看博客、大量的编码(第1年,封闭式开发(1天敲15个小时代码),第二年后:每周六天,每天到夜里3点)。 感觉:大量的编码,做了大量的不同类型的系统,已练就成一个高级代码工:(CodeSmith代码生成器+批量生成增删改查)。 如何破:(让自己静下来)。 阶段3:学会了分享、安全、性能、底层原理 时间:(20012年-2016年) 学习的方式:写博客、看博客、写框架(CYQ.Data V-V4系列、QBlog)。 感觉:为某个框架代码而自我得意。 如何破:不断重复的将自己归零(把自己的认为得意的东西开源出去,如果要保留一点感觉,可阶段性开源)。 阶段4:领悟了抽象思维、面向对象、写框架、用户体验 时间:(2016年-至今) 学习的方式:看书、写框架(CYQ.Data V5系列、ASP.NET Aries系列、Taurus.MVC系列)。 感觉:也许我懂的很多,但是我不懂的更多。 如何破:

006-Java Web学习之Servlet原理

允我心安 提交于 2020-10-29 16:22:41
声明:我的所有文章,都是对网上教学视频的整理,包括狂神说、尚硅谷、黑马程序员等等,用来作为参考资料,无任何商业使用,请广大网友参考,不喜勿喷,谢谢。 1、Servlet工作原理 Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会进行如下处理: 2、Mapping问题 一个Servlet可以指定一个映射路径 <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/dark1</url-pattern> </servlet-mapping> 一个Servlet可以指定多个映射路径 <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/dark1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/dark2</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>

DNS域名解析

≯℡__Kan透↙ 提交于 2020-10-29 06:14:56
DNS: 域名系统( 英文 :Domain Name System, 缩写 :DNS)是 互联网 的一项服务。它作为将 域名 和 IP地址 相互 映射 的一个 分布式数据库 ,能够使人更方便地访问 互联网 。DNS使用 TCP 和 UDP 端口 。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 域名解析: 域名 解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。 IP地址 是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由 DNS服务器 完成。 域名解析也叫 域名指向 、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。 DNS域名解析目的:将域名转化为ip地址。互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。 DNS域名解析过程: 客户端发送请求(www.baidu.com)-----》查找本地的host文件(C:\Windows\System32\drivers\etc),如果本地host存在则访问的ip地址(www.baidu.com)和域名,则直接访问本地ip和域名映射的服务