使用 Spring Boot 构建微服务

Spring Boot 为所有这些阶段提供开箱即用的支持,并提供插件和模块形式的专用组件。 

打包 - 它提供自己的 Maven 支持,将代码和所有依赖项打包为 Uber jar,包括容器本身。为此,您需要添加以下构建插件和一个简单的重新打包目标,该目标重新打包在正常 Maven 打包阶段构建的二进制文件。

部署 - 它配备了不同类型的 Web 容器来支持 servlet/JSP 等 Web 资源的嵌入式部署。最重要的是,它提供了一个可以部署 RESTful 资源的 Jersey 容器。

最新的 DZone 参考卡

GitOps 的要点


Launcher  - Spring Boot 使启动应用程序就像运行 Hello World 程序一样简单。只需一行代码即可触发依赖管理、包扫描和容器初始化。

参考代码:  microservice-starter-springboot

在研究了所有这些方面之后,可以使用不同的工具和框架来制作这些制品。让我们讨论每个网络服务器和平台。 

Tomcat
Tomcat 通常用作部署 Web 应用程序的 Web 容器,但它也可以用作运行打包的微服务的嵌入式容器。为此,需要满足以下条件才能创建包含的微服务。

打包 - 与 Spring Boot 不同,它不提供开箱即用的解决方案来打包您的微服务,但您可以使用 Maven 标准插件(如 assemble 和 Shade)来构建包含所有依赖项并支持主类的 Uber jar体现出来。

部署 - 所有 Tomcat 运行时模块都可以提供一个可以部署和运行 Jersey 容器的依赖项。

启动器 - Tomcat 允许您以编程方式配置端点和容器,并且您可以在控制范围内启动和停止实例。

参考代码:  microservice-starter-tomcat

Jetty
Jetty 非常适合部署和运行微服务,因为它主要使用嵌入式容器来运行 Web 应用程序。它也遵循与 Tomcat 相同的模式来运行微服务。

打包 - 它可以利用 Maven 标准插件将代码和依赖项打包到单个 Uber jar 中。

部署 - Jetty 提供了一个 servlet 容器,可以通过 Jersey 容器来填充该容器来提供 Web 服务。

Launcher  - 与 Tomcat 一样,它提供了类似的编程 API 来部署 Jersey 容器和 REST 端点。

参考代码:  microservice-starter-jetty

Grizzly
Grizzly 是一种不太流行的 Web 容器,但它为 JEE 社区提供了最标准的应用程序服务器。是的,它是 Glassfish 服务器背后的引擎。它确实为构建微服务提供了开箱即用的功能。

打包 - 我们可以使用 Maven 标准插件(例如 assembly 和 Shade)来打包 Web 服务及其依赖项。

部署 - 与 Tomcat 和 Jetty 不同,它为部署使用 Jersey 构建的 Web 服务提供内置支持,并提供标准的基于容器的 Grizzly HTTP 服务。

Launcher  - 与 Spring Boot 一样,它提供了一个非常抽象的 API,用于配置 REST 服务并在一行代码中运行容器本身。

参考代码:  microservice-starter-grizzly

Netty
Netty 是一个著名的异步和事件驱动的客户端/服务器框架,支持 FTP、SMTP 和 HTTP 等大多数协议,并为 UDP 和 TCP 应用程序提供低级编程。最重要的是,Glassfish 提供了一个特殊的 Jersey 容器,它使用非阻塞 IO 和 HTTP 服务。它可以像 Grizzly 一样用作 Web 服务容器。

打包 - 我们可以使用 Maven 标准插件(例如 assembly 和 Shade)来打包 Web 服务及其依赖项。

部署 - 与 Grizzly 一样,它为部署使用 Jersey 构建的 Web 服务提供开箱即用的支持,并提供基于 Netty HTTP 服务的标准容器。

Launcher  - 与 Grizzly 一样,它提供了一个非常抽象的 API,用于配置 REST 服务和运行容器。

参考代码:  microservice-starter-netty

Undertow
Undertow 是一个 Web 服务器,为流行的 JBoss AS 提供支持,并且能够作为嵌入式容器运行。它提供精细的 HTTP 和非阻塞 IO 服务。除此之外,它还提供 Servlet 和 Web Socket 实现。它可以用于以类似的方式构建微服务。

打包 - 我们可以使用 Maven 标准插件(例如 assembly 和 Shade)来打包 Web 服务及其依赖项。

部署 - Undertow 提供了一个可与 Jersey Servlet 容器一起使用的 HTTP Servlet 容器。

Launcher  - 它还提供了一个编程 API 来部署 Jersey 容器和 REST 端点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型开启人工智能的新时代

大模型是指具有非常大的参数数量的人工神经网络模型。在深度学习领域,大模型通常是指具有数亿到数万亿参数的模型。这些模型通常需要在大规模数据集上进行训练,并且需要使用大量的计算资源进行优化和调整。 大模型通常用于解决复杂的自然语言处理、计算…

前端接口请求支持内容缓存和过期时间

前端接口请求支持内容缓存和过期时间 支持用户自定义缓存时间,在规则时间内读取缓存内容,超出时间后重新请求接口 首先封装一下 axios,这一步可做可不做。但是在实际开发场景中都会对 axios 做二次封装,我们在二次封装的 axios …

pt权重转onnx记录

方法: 1.一般YOLO 会自带一个权重pt转onnx模型的代码 export.py 2.打开export.py ,我们运行该文件可以通过命令行运行,对照修改argument参数即可 3.运行命令行如下: python ./models/export.py --weights ./models/best.pt weights&#x…

【Androidstudio学习笔记】设计引导页功能

设计引导页功能 主目录功能描述大致思路准备工作代码ActivityAdapter滑动动画 总结 主目录 功能描述 此功能用于新用户第一次进入应用时在部分较为复杂的功能使用前展示的操作流程,当然也可以在后续的其他功能键重新查看引导流程 展示指定数量的引导页&#xff0…

欧盟商标如何注册 欧盟商标申请流程 马德里商标注册

注册欧盟商标的优势 1、 注册费用低 只须申请注册一次,即可在整个欧盟的二十七个成员国使用该注册商标,比逐一国家的相关费用便宜很多。 2、申请人无限 制 欧盟商标的申请人不限于欧盟成员国的国民,其他如《巴黎公约》、《世界知识产权组织》&#x…

ssh登录界面变成vim提示,进不去系统

是ubuntu系统 使用远程连接root,进去后发现界面变成vim编辑器的介绍界面了 使用普通用户登录 查询用户的登录shell是不是有问题 sudo vim /etc/passwd 发现用户shell变成了vim编辑器 修改为/bin/bash就可以正常登录了 重新登录测试就正常了

【k8s】pod进阶

一、资源限制 1、资源限制的概念 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上…

《AI时代架构师修炼之道:ChatGPT让架构师插上翅膀》

本专注于帮助架构师在AI时代 实现晋级、提高效率的图书 书中介绍了如何使用 ChatGPT 来完成架构设计的各个环节 并通过实战案例展示了ChatGPT在实际架构设计中的应用方法 关键点 1.架构设计新模式:让架构设计更高效、更快捷、更完美。 2.全流程解析:涵盖…

Azure - 机器学习:使用 Apache Spark 进行交互式数据整理

目录 本文内容先决条件使用 Apache Spark 进行交互式数据整理Azure 机器学习笔记本中的无服务器 Spark 计算从 Azure Data Lake Storage (ADLS) Gen 2 导入和整理数据从 Azure Blob 存储导入和处理数据从 Azure 机器学习数据存储导入和整理数据 关注TechLead,分享AI…

京东h5st逆向 python代码算法还原逆向分析 h5st代码

废话不多说直接开干! 知识点 node python 上才艺 京东抓包遇到h5st算法 # codingutf-8 import json import math import random import time from tkinter import filedialog, messagebox, ttk import urllibfrom urllib.parse import quote, unquote from urllib …

“Lazada API揭秘:按关键字搜索商品,轻松掌握电商未来!“

Lazada的API可以按关键字搜索商品。请求参数包括: key:调用key,必须以GET方式拼接在URL中。secret:调用密钥。qshoe&:要搜索的关键字。start_price&end_price&:价格范围,可按价格筛…

【vtk学习笔记1】编译安装vtk9.2.6,运行官方例子

一、编译安装vtk-9.2.6 1. 下载VTK。推荐从github下载。目前从VTK官网只能下载最新的RC版或者以前的老版本,我是在github上下载的vtk9.2.6 tag版本。 2. 用Cmake-gui配置Visual Studio工程。主要注意配置VTK安装的路径、是否支持QT,需要的话正确配置Qt5…

编译时库的顺序影响编译的结果:动态库libxxxx.so:undefined reference to `Json::Value::operator[](c

文章目录 问题产生分析解决 问题产生 问题的起因是,我在使用自己打包的动态库的时候,编译时提示动态库里指向的另一个库找不到… 分析 当编译器进行链接时,它按照从左到右的顺序解析源文件和库文件。如果在链接过程中遇到未解析的符号&…

【NLP】什么是语义搜索以及如何实现 [Python、BERT、Elasticsearch]

语义搜索是一种先进的信息检索技术,旨在通过理解搜索查询和搜索内容的上下文和含义来提高搜索结果的准确性和相关性。与依赖于匹配特定单词或短语的传统基于关键字的搜索不同,语义搜索会考虑查询的意图、上下文和语义。 语义搜索在搜索结果的精度和相关…

微信小程序导入js使用时候报错

我是引入weapp库时候,导入js会报错。 需要在小程序开发工具里面配置 就可以了。

20231028-黑马web进阶-平面转换

文章目录 位移:translate案例-双开门旋转案例多重转换缩放渐变background-image:linear-gradient(颜色1,颜色2,...); 位移:translate 语法:transform:translate(水平移动距离,垂直移动距离); 取值(正负均可)&#xff…

使用StompProtocolAndroid连接MQ通信

Android开发遇到需要和MQ队列通信,使用StompProtocolAndroid可以实现。 StompProtocolAndroid官网:GitHub - NaikSoftware/StompProtocolAndroid: STOMP protocol via WebSocket for Android 首先app的build.gradle添加依赖 implementation "com.…

DHorse改用fabric8的SDK与k8s集群交互

现状 在dhorse 1.4.0版本之前&#xff0c;一直使用k8s官方提供的sdk与k8s集群交互&#xff0c;官方sdk的Maven坐标如下&#xff1a; <dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifactId><version>18.0.0…

layui form表单 label和input宽度

情况是这样的&#xff0c;表单里有多个输入框&#xff0c;只有个别label 是长的&#xff0c;我就想调整一下个别长的&#xff0c;其它不变 <div class"layui-form-item"><label class"layui-form-label">是否分标分量:</label><div …

医学AI智能导诊系统源码

医院智能导诊系统是一款基于人工智能和大数据技术开发的医疗辅助软件&#xff0c;旨在为患者提供更加便捷、精准的医疗服务。 一、什么是智能导诊系统&#xff1f; 智能导诊系统是一种基于人工智能和大数据技术开发的医疗辅助软件&#xff0c;它能够通过对患者的症状、病史等信…