微服务架构基础之轻量级部署

栏目: 服务器 · 发布时间: 6年前

内容简介:-- Josh Long

在J2EE开发中,通常将应用部署到Tomcat或者Jetty等Servlet容器中。而在SpringBoot中则提供了更加轻量级的方案,就是将应用打包成内嵌Servlet容器的jar包,可以直接通过 java -jar  app.jar 命令运行。因为在微服务架构中,会涉及大量服务的部署,这种轻量级方案无疑会简化部署,并且极大提高微服务的部署效率。

1 可执行的jar包

make Jar, not War      

-- Josh Long

将应用打包成*.jar包,需要使用SpringBoot的maven插件:

1<plugin>
2    <groupId>org.springframework.boot</groupId>
3    <artifactId>spring-boot-maven-plugin</artifactId>
4</plugin>

直接使用 mvn package 命令进行打包,此时,得到的jar包,我们可以通过 java -jar  app.jar 命令运行。

Linux 系统中,我们还可以进一步打成可执行的jar包,可以直接通过 ./app.jar 命令直接运行,只要只要配置maven插件:

1<plugin>
2    <groupId>org.springframework.boot</groupId>
3    <artifactId>spring-boot-maven-plugin</artifactId>
4    <configuration>
5        <executable>true</executable>
6    </configuration>
7</plugin>

打包:

微服务架构基础之轻量级部署

在每个模块的 target 目录下,生成可行执行的jar包。

2 部署

对于SpringBoot应用打成的jar包,可以方便的进行部署,很多Paas平台都是支持的,这里还是用一台Linux虚拟机进行部署,Ubuntu16 64位系统,并且只要安装好JDK1.8即可。

将打包好的jar包,比如上图中的 user-service/target/user-service-1.0-SNAPSHOT.jar ,上传到服务器的 opt/app 目录,运行:

./user-service-1.0-SNAPSHOT.jar

这种运行比较简单,同时,也会缺乏对应用进程的控制。为了更好的控制应用程序的进程,方便启动,重新,停机等操作,可以使用进程的管理工具。

3 管理应用进程

可以使用 supervisor 等第三方工具,不过,SpringBoot更加推荐集成到系统自带的 init.d 或者 systemd 中。Ubuntu16已经支持 systemd ,所以,我们将应用集成到 systemd 中。

创建配置 /etc/systemd/system/user.service

 1[Unit]
 2Description=user service
 3After=syslog.target
 4
 5[Service]
 6User=noone
 7ExecStart=/opt/app/user-service-1.0-SNAPSHOT.jar
 8SuccessExitStatus=143
 9
10[Install]
11WantedBy=multi-user.target

使用systemd启动:

sudo systemctl daemon-reload
sudo systemctl start user.service

首先刷新一下配置,然后启动服务。对于配置文件发生的更改,需要使用此命令。

启动完成后,使用命令查看服务状态:

1noone@ubuntu:/opt/app$ sudo systemctl status user.service
2● user.service - user service
3   Loaded: loaded (/etc/systemd/system/user.service; disabled; vendor preset: enabled)
4   Active: active (running) since Sat 2018-09-01 18:38:14 PDT; 6min ago
5 Main PID: 10819 (user-service-1.)
6   CGroup: /system.slice/user.service
7           ├─10819 /bin/bash /opt/app/user-service-1.0-SNAPSHOT.jar
8           └─10833 /usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /opt/app/user-service-1.0-SNAPSHOT.jar

停止服务:

1noone@ubuntu:/opt/app$ sudo systemctl stop user.service
2noone@ubuntu:/opt/app$ sudo systemctl status user.service
3● user.service - user service
4   Loaded: loaded (/etc/systemd/system/user.service; disabled; vendor preset: enabled)
5   Active: inactive (dead)

也可以将该服务设置开机启动,如果出现服务器重启,那应用可以自动重启。

sudo systemctl enable user.service

4 设置应用启动参数

对于 Java 应用,通常都需要设置一些JVM参数,特别是堆栈空间大小等参数。SpringBoot也支持设置参数,我们只需要遵循约定进行配置即可。

在服务的同目录下,添加配置文件 user-service-1.0-SNAPSHOT.conf ,注意配置文件名要和服务保持一致,如下:

noone@ubuntu:/opt/app$ tree
.
├── user-service-1.0-SNAPSHOT.conf
└── user-service-1.0-SNAPSHOT.jar

配置文件内容:

1JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"

5 小结

使用基于jar包的部署方式更加简单,很多Pass平台也都是支持这种方式。同时,如果在公司内部的部署平台集成,这种方式也比较简单。进一步,如果使用 Docker 或者K8等技术,这种部署方案也可以很容易集成。所以,在微服务架构中,轻量级的部署方案,可以让服务的发布更加高效。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Concepts, Techniques, and Models of Computer Programming

Concepts, Techniques, and Models of Computer Programming

Peter Van Roy、Seif Haridi / The MIT Press / 2004-2-20 / USD 78.00

This innovative text presents computer programming as a unified discipline in a way that is both practical and scientifically sound. The book focuses on techniques of lasting value and explains them p......一起来看看 《Concepts, Techniques, and Models of Computer Programming》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具