对于大厂的IT技术人员来说,微服务架构是天天都在使用,滚瓜烂熟了。而对小厂的菜鸟程序员来说,我们天天做的都是CRUD,对我们来说集群、分布式、微服务也只是头脑中一个模糊的概念。我们写的大多是单体架构的系统,运行在一台服务器上,如果用户量增加了,服务器撑不住了,我们就加配置吧,反正阿里云腾讯云现在加配置也很容易。但是如果有一天(希望所有菜鸟都有这么一天),我们的用户数增加太快太多,使用最高配置的服务器还是撑不住,对我们来说这算不算是幸福的烦恼?――幸福的是老板,烦恼的却是我们。
这种情况下,我们想到了使用微服务,于我们开始学习spring cloud alibaba,就是不知道在我们学会之前,我们的服务器要崩溃多少次,就怕老板一生气把我们杀了祭天。所以说临时抱佛脚是不行的,学习要趁早!那么这时候,什么才是比较快的解决方法呢?我想可能就是使用集群架构。集群架构学起来相对容易,代码修改量也会少一些。
今天我们首先来建一个简单的集群,如下图所示:
总共三台电脑,一台安装NGINX,两台安装TOMCAT。这两个TOMCAT运行我们的单体应用程序,NGINX接受浏览器发来的请求,再把请求轮流转发给其中一台TOMCAT处理。如果您不理解这段话,也没关系,咱们开始动手操作,做完之后,你就明白了。没有三台电脑的同学,可以用虚拟机。要么就在一台电脑上操作也行,这时两个IP都要改成127.0.0.1
GitHub: GitHub - Dengxd/JavaCluster 所有源码都在这里,GitHub经常连不上,要多刷新几次
因为所有程序员都会用WINDOWS,而有部分程序员不会用LINUX,所以我选择了WINDOWS7来安装。
NGINX下载地址:nginx: download
Stable version是稳定版,选择这个版本。下载下来是一个文件nginx-1.22.1.zip,解压之后,如下图所示:
打开文件夹conf里面的nginx.conf文件,找到这几行:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
改成这样:
upstream mytomcat {
server 192.168.1.200:8000;
server 192.168.1.201:8001;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://mytomcat;
}
保存一下,NGINX就配置好了。
在这几行代码里
server 192.168.1.200:8000;
server 192.168.1.201:8001;
这两行就是我们两个TOMCAT的IP和端口,如果你要多加几个TOMCAT,直接多加几行就可以了。如果你没有三台电脑,只在一台电脑上操作,就把两个IP地址都改成127.0.0.1
注意事项:在生产环境,server_name localhost; 这一行要把localhost改成您的域名
mytomcat其实就是给集群起个名字,可以按自己的习惯取名,这个名字会用在这一行:proxy_pass http://mytomcat;
改完之后要测试配置文件nginx.conf是否正确
使用nginx –t 命令进行测试:
如上图,出现“syntax is ok”,“test is successful”就说明测试成功,如果没出现这两行,就说明nginx.conf有错误,要修改错误直至测试成功。
这个程序使用Spring boot框架,这货自带了TOMCAT,省了不少麻烦。程序的功能是在网页上显示端口号,要么显示8000,要么显示8001
主要代码如下:
static String port;
public static void main(String[] args) throws Exception{
SpringApplication app = new SpringApplication(MainApplication.class);
Environment env = app.run(args).getEnvironment();
port=env.getProperty("server.port");//获取端口号
System.out.println(port);
}
@RequestMapping("/")
@ResponseBody
public String test(HttpServletRequest request, HttpServletResponse response){
return port;//返回端口号
}
main方法在启动程序的时候获取端口号,test方法在用户访问时返回端口号
我们把程序打包,复制到两台Tomcat业务服务器上。
IP为182.168.1.200那台服务器用命令:java -jar ShowPort-1.0-SNAPSHOT.jar --server.port=8000 启动程序。然后在服务器上用浏览器访问:http://localhost:8000/ ,如果网页显示8000,就说明程序正常:
IP为182.168.1.201那台服务器用命令:java -jar ShowPort-1.0-SNAPSHOT.jar --server.port=8001 启动程序。然后在服务器上用浏览器访问:http://localhost:8001/ ,如果网页显示8001,就说明程序正常。
使用命令nginx启动服务:
注意:如果您想停止NGINX,不能直接关掉这个CMD窗口。您得再开一个CMD窗口,然后用命令nginx -s stop才能能关闭NGINX:
现在我们在NGINX那台服务器上启动浏览器,输入网址:http://localhost/ ,
可以看到网页显示8001 :
我们在浏览器里多开几个标签页,就会看到有的显示8000,有的显示8001
这样,我们的集群就配置成功了。下回我们来实现session共享。