使用Spring-Boot快速搭建一个后台服务器

使用Spring-Boot快速搭建一个后台服务器,第1张

        在后台业务快速增长的时代,如何快速构建api以及能够以最小的影响去部署服务是设计的一个趋势,SpringBoot就给开发者们这样一种能力。

       个人比较推荐IntelliJ,破解请自行百度。这款ide提供了更加炫酷的界面效果,能够更加方便的去调试管理项目。我是使用mac201933版本的,ide自带了springboot库。下面我们先使用SpringBoot官网创建一个项目。打开>简述:Spring boot+Vue 前后端分离项目部署,主要采用docker容器部署方式。

Springboot项目部署:docker构建mysql环境+docker构建项目自身环境。

Vue项目:使用docker启动nginx服务器方式代理部署。

项目使用mysql80作为数据源,所以部署时需要使用docker构建mysql环境及项目自身环境。

连接出现1251错误时:

首先将项目进行打包:mumu-001-SNAPSHOTjar

到此,springboot项目采用docker方式运行部署结束。

使用docker容器方式运行nginx服务器。

对于nginx服务器,重要的两个 *** 作是:

所以我们在配置启动nginx容器的时候,需要将对应的目录及文件进行宿主机挂载,方便后续更新资源及 *** 作

启动命令:

本文主要介绍如何搭建个人网站,并将项目部署到腾讯云。
前端:React,
后端:SpringBoot,
云服务:centos7

建议使用create-react-app创建react项目包,简单快捷。

进入项目路径,开始运行

直接使用项目自身的build指令进行打包,完成后会在项目根目录多出一个build文件夹

build文件中包含项目打包后的js、css、html等资源。下一步的部署,就是将这一build文件上传到云服务器,并通过nginx指向build。

将上一过程中的build文件上传到云服务器,推荐使用ForkLift, 使用教程 。

进入云服务器,找到nginx文件,修改root指向build路径, nginx配置教程 。

上述 *** 作完成后,打开域名后,页面即为react项目的首页。

建议使用idea进行springboot项目的开发(专业的事情交给专业的工具,简单些)。

idea搭建一个springboot项目

mysql: 官方地址
mysql管理工具Navicat: 官网地址
如果本地不想安装mysql,也可以直接在服务器上进行安装,然后在本地访问, 服务器安装mysql并实现远程访问 。

将本地springboot项目打包后,上传到云服务器并启动, Spring boot项目部署到腾讯云服务器 。
关于项目的启动并保持一致运行:可以在控制台输入

回车,nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&”可以让你的命令在后台运行。

至此,前后端项目都已安装在云服务器上。

原文地址: react+springBoot 项目部署到腾讯云

实际生产中,我们经常会碰到这样的场景: 业务方触发了某些预料之中的bug,(比如项目中调用了第三方的服务,但是第三方的服务出问题导致无法访问,这类错,我们往往不会直接提示用户,而是选择屏蔽此类错误,写入错误日志),我们处理此类bug往往需要去生产导出日志记录,然后排查,最后找到第三方服务的提供者去解决问题

那么,与其等“被动”业务反馈,能不能让这类问题“主动”推送给开发呢 我们能不做个“错误预警”的服务

消息推送技术,即是解决这类问题的良方

消息队列,一般我们会简称它为MQ(Message Queue),再介绍消息队列前,我们还是先简单解释一下队列这种数据结构

队列是一种先进先出的数据结构

如图,数据从队尾(右)进,从队头(左)出

消息队列可以简单的理解为:把要传输的数据放在队列中。
当我们需要使用消息的时候可以取出数据供自己使用。

从以上概念中我们不难看出有两个角色对队列至关重要,一个是放数据的,一个是取数据的
当然,这两个角色都有是有规范的名字的,同时,消息队列有两种场景,在这两种不同的场景里,这两个角色名字是不同的:

包括三个角色:

生产消费者模式特点:

包括三个角色:

发布订阅模式特点:

消息队列为了实现实现高性能,高可用,可伸缩和最终一致性架构,主要可以解决如下问题:

场景举例:
用户注册后,需要发注册邮件和注册短信

传统的做法有两种

场景举例:
银行身份z人脸识别系统,用户上传身份z,人脸识别系统会对该进行人脸识别

一般的做法是:
服务器接收到后,上传系统立即调用人脸识别系统,调用完成后再返回成功

该方法有如下缺点:

为了解决以上缺点,我们采用消息队列解决应用间的耦合问题:

消息队列的做法:
用户上传后,上传系统将信息顺序写入消息队列,直接返回成功;
人脸识别系统则定时从消息队列中取数据,完成对的识别。

上传系统并不需要关心人脸识别系统是否对这些信息的处理、以及何时对这些信息进行处理。事实上,由于用户并不需要立即知道人脸识别结果,人脸识别系统可以选择不同的调度策略,按照闲时、忙时、正常时间,对队列中的信息进行处理。

场景举例:
电商秒杀活动,常见的形式是数量极少的热门商品让大量的用户抢购
传统的做法是用户直接请求业务系统,但往往因为并发用户过大,或导致业务系统崩溃,或着出现超卖等等现象

采用消息队列后,系统可以从消息队列中取数据,相当于消息队列做了一次缓冲

采用消息队列处理秒杀有如下优点:

使用消息队列有如下优点:

消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ,这些消息中间件我们暂时不讲,本章,我们使用最为简单的方式REDIS来实现消息队列的发布订阅模式

Redis从2X版本开始,就支持一种基于非持久化消息的、使用发布/订阅模式实现的事件通知机制
所谓基于非连接保持,是因为一旦消息订阅者由于各种异常情况而被迫断开连接,在其重新连接后,
其离线期间的事件是无法被重新通知的(一些Redis资料中也称为即发即弃)
而其使用的发布/订阅模式,意味着其机制并不是由订阅者周期性的从Redis服务拉取事件通知,
而是由Redis服务主动推送事件通知到符合条件的若干订阅者

通俗的来讲,Redis实现的发布订阅模式有如下注意点:

以上已经实现了基于redis简单的发布订阅了

那么,在此之上我们多做一点来更好的理解发布订阅这块的内容

>本文通过一个实际的场景来介绍在前后端分离的项目中通过 WebSocket 来实现服务器端主动向客户端发送消息的应用。主要内容如下

Websocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 连接成功后,服务端与客户端可以双向通信。在需要消息推送的场景,Websocket 相对于轮询能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

具体如下特点

在客户端的列表数据中有个 status 字段,服务器端需要花费较长的时间进行处理,处理完成后才会更新对应数据的 status 字段值,通过 Websocket 的处理流程如下:

通过注入 ServerEndpointExporter 类,用于在项目启动的时候自动将使用了 @ServerEndpoint 注解声明的 Websocket endpoint 注册到 WebSocketContainer 中。

为什么增加一个 ServerEndpointExporter Bean,并通过在一个类上增加 @ServerEndpoint 和 @Component 注解就可以实现服务器端 Websocket 功能,这里简单解析一下。

java 定义了一套 javaxservlet-api, 一个 >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13486705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-16
下一篇 2023-08-16

发表评论

登录后才能评论

评论列表(0条)

保存