个人比较推荐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, 一个 >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)