learner

learner 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

learner 发布了文章 · 11月14日

Redis的持久化操作

1.Redis持久化策略

1.1 什么是持久化

说明:Redis运行环境在内存中,如果redis服务器关闭,则内存数据将会丢失.
需求: 如何保存内存数据呢?
解决方案: 可以定期将内存数据持久化到磁盘中.
持久化策略规则:
当redis正常运行时,定期的将数据保存到磁盘中,当redis服务器重启时,则根据配置文件中指定的持久化的方式,实现数据的恢复.(读取数据,之后恢复数据.)

1.2 RDB模式

1.2.1RDB模式特点说明

1).RDB模式是Redis默认的策略.
2).RDB模式能够定期(时间间隔)持久化. 弊端:可能导致数据的丢失.
3).RDB模式记录的是内存数据的快照.持久化效率较高. 快照只保留最新的记录.

1.2.2 RDB模式命令

1.save命令: 将内存数据持久化到磁盘中 主动的操作 会造成线程阻塞
2.bgsave命令: 将内存数据采用后台运行的方式,持久化到文件中. 不会造成阻塞.
3.默认的持久化的机制
save 900 1 如果在900秒内,执行了1次更新操作,则持久化一次
save 300 10 如果在300秒内,执行了10次更新操作,则持久化一次
save 60 10000 如果在60秒内,执行了10000次更新操作,则持久化一次

1.2.3 持久化文件配置

1).指定持久化文件
image.png
2).指定持久化文件目录
image.png

1.3 AOF模式

1.3.1 AOF模式特点

1).AOF模式默认条件下是关闭的.需要手动开启
2).AOF模式记录的是用户的操作过程,所以可以实现实时持久化操作.
3).AOF模式由于记录的是实时的操作过程,所以持久化文件较大.需要定期维护.

1.3.2 启动AOF模式

说明:如果一旦开启AOF模式,则以AOF模式为准.
image.png

1.4 关于持久化操作总结

1.当内存数据允许少量丢失时,采用RDB模式 (快)
2.当内存数据不允许丢失时,采用AOF模式(定期维护持久化文件)
3.一般在工作中采用 RDB+AOF模式共同作用,保证数据的有效性.

1.5 面试题

问题: 如果小李(漂亮妹子)在公司服务器中执行了flushAll命令,问怎么办?
答: 需要找到aof文件之后,删除flushAll命令 之后重启redis,执行save命令即可.

2.内存优化策略

2.1 为什么需要内存优化

说明: 由于redis在内存中保存数据.如果一直存储,则内存数据必然溢出.所以需要定期维护内存数据的大小.
维护策略: 删除旧的不用的数据,保留新的常用的数据

2.2 LRU算法

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
计算维度: 时间T
注意事项: LRU算法是迄今为止内存中最好用的数据置换算法.

2.3 LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
维度: 使用次数

2.4 随机算法

随机算法.

2.5 TTL算法

根据剩余的存活时间,将马上要超时的数据提前删除.

2.6 配置内存优化策略

image.png
3.volatile-lfu 在设定了超时时间的数据中,采用lfu算法
4.allkeys-lfu 所有数据采用lfu算法
5.volatile-random 设置超时时间数据的随机算法
6.allkeys-random 所有数据的随机
7.volatile-ttl 将设定了超时时间的数据,提前删除.
8.noeviction 默认规则 如果设定noeviction 则不删除数据,直接报错返回.

手动修改redis内存优化策略:
image.png

3.关于缓存面试问题

问题出发点:
由于缓存失效,导致大量的用户的请求,直接访问数据库服务器.导致负载过高,从而引发整体宕机的风险!!!

3.1 缓存穿透

说明: 用户频繁访问数据库中不存在的数据,可能出现缓存穿透的现象.如果该操作是高并发操作,则可能直接威胁数据库服务器.
解决方案:
1.采用IP限流的方式 降低用户访问服务器次数. IP动态代理(1分钟变一次)
2.微服务的处理方式: 利用断路器返回执行的业务数据即可不执行数据库操作 从而保护了数据库.
3.微服务处理方式: API网关设计. 不允许做非法操作

3.2 缓存击穿

说明: 由于redis中某个热点数据由于超时/删除等操作造成数据失效.同时用户高并发访问该数据,则可能导致数据库宕机.该操作称之为 缓存击穿.
解决方案: 可以采用多级缓存的设计. 同时数据的超时时间采用随机数的方式.
image.png

3.3 缓存雪崩

说明: 由于redis内存数据大量失效.导致用户的访问命中率太低.大量的用户直接访问数据库,可能导致数据库服务器宕机. 这种现象称之为缓存雪崩.
解决:
1.采用多级缓存.
2.设定不同的超时时间
3.禁止执行 flushAll等敏感操作.

4.Redis分片机制

4.1 Redis分片说明

说明: 如果需要Redis存储海量的内存数据,使用单台redis不能满足用户的需求,所以可以采用Redis分片机制实现数据存储.
注意事项:
如果有多台redis,则其中的数据都是不一样的…
image.png

4.2 Redis部署

搭建端口:6379/6380/6381

4.2.1 准备配置文件:

6379.conf 6380.conf 6381.conf
image.png

4.2.2 修改端口号

只修改80/81的端口即可
image.png

4.3 Redis分片测试

image.png

4.4 一致性HASH算法

4.4.1 概念

一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题
[1] 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题 [2] 。

4.4.2 原理说明

知识复习:

  1. 常规hash由多少位16进制数组成??? 8位16进制数组成 2^32次方
  2. 如果对相同的数据进行hash计算问结果是否相同??? 结果必然相同.

image.png

4.4.3 特性一平衡性

①平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题.
实现平衡性的方案: 引入虚拟节点
image.png

4.4.3 特性二单调性

②单调性是指在新增或者删减节点时,不影响系统正常运行 [4] 。
特点:在进行数据迁移时,要求尽可能小的改变数据.
image.png

4.4.4 特性三分散性

③分散性是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数据 [4] 。
俗语: 鸡蛋不要到放到一个篮子里

4.5 SpringBoot整合Redis分片

4.5.1 编辑properties配置文件

image.png

4.5.2 编辑配置类

image.png

4.5.3 修改AOP缓存注入

说明:将AOP中的注入对象切换为分片对象
image.png

5 Redis哨兵机制

5.1 分片机制存在的问题

说明: redis分片主要的作用是实现内存数据的扩容.但是如果redis分片中有一个节点宕机,则直接影响所有节点的运行. 能否优化?
实现策略: 采用Redis哨兵机制实现Redis节点高可用.

5.2 Redis节点主从配置

5.2.1 准备主从节点

1).关闭redis分片的节点,之后复制配置文件准备哨兵的配置.
image.png
2).复制分片的目录 改名为sentinel
image.png
3).删除多余的持久化文件,保存redis配置文件
image.png
4).启动3台Redis服务器
image.png

5.2.2 实现redis主从

命令: info replication 检查redis节点的状态信息
image.png
节点划分: 6379 当主机 6380/81 当从机

命令2: 实现主从挂载 slaveof host port
image.png
image.png
3).检查6379主机的状态
image.png
结论: redis所有节点都可以相同通信.并且路径当前的主从的状态.

数据主从同步的状态
image.png

5.3 哨兵机制工作原理

1).当哨兵启动时,会链接redis主节点,同时获取所有节点的状态信息
2).当哨兵连续3次通过心跳检测机制(PING-PONG),如果发现主机宕机,则开始选举.
3).哨兵内部通过随机算法筛选一台从机当选新的主机.其他的节点应该当新主机的从.
image.png

5.4 哨兵机制配置

image.png

5.4.1 关闭保护模式

image.png

5.4.2 开启后台运行

image.png

5.4.3 配置投票机制

image.png

5.5 哨兵高可用测试

1.启动哨兵 redis-sentinel sentinel.conf
image.png
2).检查哨兵配置
image.png
3)将主机宕机,之后检查从机是否当选主机
image.png
4).启动之前的主机,检查是否当选新主机的从
image.png
5).如果搭建异常 则删除重做
关闭所有redis服务器.
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月14日

SpringBoot整合Redis

1.Redis命令

1.1 入门案例操作

image.png

2 SpringBoot整合Redis

2.1 编辑pro配置文件

由于redis的IP地址和端口都是动态变化的,所以通过配置文件标识数据. 由于redis是公共部分,所以写到common中
image.png

2.2 编辑配置类

image.png

3 对象与JSON串转化

3.1 对象转化JSON入门案例

image.png

3.2 编辑ObjectMapper工具API

image.png

4 实现商品分类缓存实现

4.1 编辑ItemCatController

说明: 切换业务调用方法,执行缓存调用
image.png

4.2 编辑ItemCatService

image.png

5. AOP实现Redis缓存

5.1 现有代码存在的问题

1.如果直接将缓存业务,写到业务层中,如果将来的缓存代码发生变化,则代码耦合高,必然重写编辑代码.
2.如果其他的业务也需要缓存,则代码的重复率高,开发效率低.
解决方案: 采用AOP方式实现缓存.

5.2 AOP

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

5.3 AOP实现步骤

公式: AOP(切面) = 通知方法(5种) + 切入点表达式(4种)

5.3.1 通知复习

1.before通知 在执行目标方法之前执行
2.afterReturning通知 在目标方法执行之后执行
3.afterThrowing通知 在目标方法执行之后报错时执行
4.after通知 无论什么时候程序执行完成都要执行的通知

上述的4大通知类型,不能控制目标方法是否执行.一般用来记录程序的执行的状态.
一般应用与监控的操作.

5.around通知(功能最为强大的) 在目标方法执行前后执行.
因为环绕通知可以控制目标方法是否执行.控制程序的执行的轨迹.

5.3.2 切入点表达式

1.bean(“bean的ID”) 粒度: 粗粒度 按bean匹配 当前bean中的方法都会执行通知.
2.within(“包名.类名”) 粒度: 粗粒度 可以匹配多个类
3.execution(“返回值类型 包名.类名.方法名(参数列表)”) 粒度: 细粒度 方法参数级别
4.@annotation(“包名.类名”) 粒度:细粒度 按照注解匹配

5.3.3 AOP入门案例

image.png

5.4 AOP实现Redis缓存

5.4.1 业务实现策略

1).需要自定义注解CacheFind
2).设定注解的参数 key的前缀,数据的超时时间.
3).在方法中标识注解.
4).利用AOP 拦截指定的注解.
5).应该使用Around通知实现缓存业务.

5.4.2 编辑自定义注解

image.png

5.4.3 方法中标识注解

image.png

5.4.4 编辑CacheAOP

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月14日

数据库的高可用

1.实现数据库高可用

1.1 搭建策略

1.1.1 问题说明

说明:如果根据如下的配置实现数据库的代理,如果数据库主库宕机,则直接影响整个程序的执行.所以需要实现高可用机制.
高可用实现的问题:
如果实现了数据库高可用,可以自动的切换数据库,由于用户直接操作了从库,当主库启动时发现数据不一致时,主从同步的状态将会终止.
image.png

1.1.2 双机热备(双主模式)

说明:可以通过数据库双主模式实现数据库高可用.
双主模式实质都是主机,互相备份.
image.png

1.1.3 双机热备的实现

之前的配置:
主机: 192.168.126.129
从库: 192.168.126.130
现在的配置:
主机: 192.168.126.130
从库: 192.168.126.129
1).检查主库状态
image.png
2).实现数据库主从搭建
image.png

1.2 数据库高可用实现

1).编辑配置文件
image.png
2).上传配置文件:
image.png
3).重启mycat服务器

1.3 数据库高可用实测试

1.启动服务器,测试mysql数据库是否正常.
image.png
image.png
image.png
3).修改数据库中的内容,重启主数据库,检查数据是否同步
image.png
image.png
image.png

1.4 检查端口占用情况

image.png
image.png

2 Redis缓存学习

2.1 优化现有架构

说明:通过缓存服务器可以有效的提升用户的访问的效率.
注意事项:
1.缓存的数据结构 应该选用 K-V结构 只要key唯一 那么结果必然相同…
2.缓存中的数据不可能一直存储,需要定期将内存数据进行优化 LRU算法…
3.缓存要求运行速度很快, C语言实现… 运行在内存中.
4.如果缓存运行的数据在内存中,如果断电/宕机,则内存数据直接丢失. 实现内存数据的持久化操作(磁盘).
image.png

2.2 Redis缓存服务器

网址: http://www.redis.cn/

2.2.1 Redis介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
nginx: 3-5万/秒
redis: 读: 11.2万/秒 写: 8.6万/秒 平均10万/秒
吞吐量: 50万/秒

2.2.2 Redis安装

1).解压redis文件
image.png
2).移动文件/修改文件
image.png
3).安装Redis
命令1: make
命令2: make install
image.png

2.2.3 修改redis.conf配置文件

1.修改IP绑定
image.png
2.关闭保护模式
image.png
3.开启后台启动
image.png

2.2.4 Redis命令

1.启动redis redis-server redis.conf
image.png
2.检查redis服务项
image.png

  1. 进入redis客户端

image.png
4.关闭redis
1).命令 redis-cli -p 6379 shutdown
2).kill命令 kill -9 pid号
image.png

2.3 SpringBoot整合Redis

2.3.1 导入jar包

image.png

2.3.2 入门案例

image.png

2.3.3 构建项目结构

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月14日

Linux安装Nginx步骤

1. Nginx安装步骤

1.1 官网介绍

image.png
image.png

1.2 上传安装包

上传到指定目录中 /usr/local/src
image.png

1.3 解压Nginx 压缩文件

image.png
1.移动安装目录到指定文件
image.png
2.修改文件名称
image.png

1.4 关于nginx 目录说明

image.png

1.5 安装nginx服务器

说明:在源文件中执行如下命令

  1. ./configure

image.png
直接结果:
image.png
2.make
image.png
3.make install
image.png

1.6 nginx命令说明

说明: nginx工作目录说明
路径:
image.png
命令:
1.windows命令:
1.启动命令: start nginx
2.重启命令: nginx -s reload
3.关闭命令: nginx -s stop
image.png

1.7 修改nginx配置文件

image.png
需求说明:
1.实现图片反向代理
2.实现tomcat负载均衡实现

具体实现:
修改完成之后,重启nginx服务器.
image.png

1.8.修改hosts文件

说明:由于没有购买image/manage.jt.com的域名,所以需要通过hosts文件修改转向.
修改windows中的hosts文件:
image.png

1.9效果展现

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月14日

Linux安装部署的常见问题及解决

1.代码还原

1.1 IP地址问题

问题描述:windows的IP链接不通Linux中的IP地址
image.png
image.png
问题说明:当虚拟机启动时,虚拟网卡没有正常的工作导致的,只需要重启网卡即可
image.png
重启网卡命令:
image.png

1.2 还原hosts文件

image.png

1.3 还原图片路径

image.png

1.4 还原nginx配置

让域名访问8091服务器。
image.png

2.数据库相关学习

2.1 数据库备份策略

2.1.1 数据库冷备份

说明:通过数据库工具,定期将数据库文件进行转储,保证数据的安全性(一般2~3天)
缺点:
1.备份由于突发的情况,可能导致备份失败,需要反复备份
2.由于冷备份是定期备份,所以可能导致数据的丢失

核心:
数据必须备份,备份的数据是恢复的最后有效的手段。
image.png
image.png

2.1.2 数据库热备份

说明:可以通过数据库机制,自动的实现数据的备份操作
优点:可以实现自动化的操作,并且是实时备份
image.png
备份实现原理:
1.当数据库主机的数据发现变化时,会将修改的数据写入二进制日志文件中。
2.从库通过IO线程,读取主库的二进制日志文件,获取之后,将数据保存到中继(临时存储)日志中
3.从库中开启Sql线程,之后读取中继日志中的数据,之后将数据同步到从库中。

2.2 准备多台服务器

2.2.1 修改虚拟机名称

说明:把之前的虚拟机的压缩包重新解压一份新的虚拟机,并且改名为JT_LINUX_S之后启动即可
image.png

2.2.2 修改Linux从机的mac地址

为了保证2台虚拟机正常稳定的运行,需要修改mac地址
image.png

2.2.3 安装数据库从库

具体参见此文档,网址如下(安全网站):
https://segmentfault.com/a/11...

2.3 数据库主从搭建

2.3.1 开启主库二进制文件

说明:主库的二进制日志文件,默认条件下是关闭的,需要手动的开启.
命令: vim /etc/my.cnf
编辑二进制日志文件:
image.png
重启数据库,检查二进制日志文件,是否可用.
image.png
重启之后,生成二进制文件
image.png

2.3.2 开启从库二进制配置文件

修改文件: vim /etc/my.cnf
添加的操作和主库一致,之后重启数据库服务器,效果如下:
image.png

2.3.3 数据库主从搭建

1).检查主库的状态
image.png
2). 实现数据库主从挂载
image.png
3).主从状态的校验
image.png

2.3.4 数据库主从测试

注意事项:
1.修改主库的数据,从库会跟着同步数据.
2.如果修改从库数据,则主从的关系将会终止.

2.4 数据库读写分离/负载均衡实现

2.4.1 数据库优化策略

说明:通过代理数据库可以实现数据库的读写分离/数据库负载均衡操作,进一步的提升了整体架构的能力.
image.png

2.4.2 Mycat

image.png

2.4.3 Mycat特性

支持SQL92标准
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
基于Nio实现,有效管理线程,解决高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
支持多租户方案。
支持分布式事务(弱xa)。
支持XA分布式事务(1.6.5)。
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的web,命令行监控。
支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支持密码加密
支持服务降级
支持IP白名单
支持SQL黑名单、sql注入攻击拦截
支持prepare预编译指令(1.6)
支持非堆内存(Direct Memory)聚合计算(1.6)
支持PostgreSQL的native协议(1.6)
支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
支持库内分表(1.6)
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

2.5 部署步骤

2.5.1 上传myCat服务器

image.png

2.5.2 解压Mycat

image.png
移动安装文件:
image.png

2.5.3 server.xml配置文件说明

注意事项: 默认条件下的端口号8066端口
image.png

2.5.3 schema.xml配置

image.png

2.5.4 实现配置文件上传

image.png

2.5.5 Mycat命令

Usage: ./mycat { console | start | stop | restart | status | dump }
image.png

2.5.6 检查mycat日志

image.png

2.5.7 Mycat负载均衡测试

修改从库中的数据库.刷新列表页面.检查是否有负载均衡的效果.
注意事项: 如果测试完成,记得将数据修改 保证一致.

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月14日

Linux安装MariaDB数据库

1.下载MariaDB数据库

测试:当前虚拟机是否可以正常的链接外网。
image.png
命令:
image.png
image.png

2 确认下载

image.png

3 安装完成提示

image.png

4 数据库启动

命令:
image.png

5. 数据库初始化操作

命令: mysql_secure_installation
image.png

6.测试数据库用户名和密码是否有效

image.png

7.导入数据表

说明:如果mysql数据库需要导入数据表命令如下:
命令: source /xxx/xxxx/xxxx/jtdb.sql
image.png

8.Mysql数据库远程访问配置

image.png

8.1 关于链接数据库的说明

说明:

  1. 如果需要远程链接数据库必须通过防火墙
  2. 如果远程链接数据库,数据库中必须开启远程访问权限才行,否则拒绝链接.

8.2 配置数据库权限配置说明

image.png

8.3 配置Linux数据库权限

8.3.1 切换数据库mysql

image.png
切换Mysql数据库
image.png

8.3.2 修改数据库表

1)。检查数据表
image.png
2).查询user表中的host/root/password
image.png
3).将host="localhost"改为"%"
image.png
4).刷新数据库权限
image.png

9. 配置Linux防火墙策略

9.1 检查防火墙状态

命令: firewall-cmd --state
image.png

9.2 防火墙配置

说明:防火墙中有一个配置文件,表示当Linux系统启动时防火墙应该如何操作!!!
需求: 告诉linux系统以后开机不需要启动防火墙
命令: systemctl disable firewalld.service
systemctl enable firewalld.service
image.png

9.3 手动关闭防火墙

说明:通过命令手动将防火墙关闭
命令:

  1. systemctl stop firewalld.service
  2. systemctl start firewalld.service

image.png

9.4 手动开放防火墙端口

1). 检查防火墙开放的端口
image.png
2).检查端口是否开放
image.png
image.png
3). 开启防火墙
image.png
image.png
4).移除端口
image.png
image.png
5).关于防火墙操作的解释
–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–remove-port=80/tcp #移除端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

6).重启防火墙
image.png

9.4 数据库远程测试

image.png

9.5 导入jtdb.sql

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月9日

Linux部署及Mysql,tomcat安装配置

1. Linux项目部署说明

1.1 部署流程图

image.png

1.2 Linux安装Mysql数据库

具体参见博客文档 ,数据库安装.

1.3 修改jt-manage的配置

1.3.1 修改图片上传地址

说明:在Linux目录中指定一个图片存储的目录
image.png

1.3.2 项目打包及发布

image.png

1.3.3 上传war包文件

image.png

1.3.4 代码修改

遗留问题:
image.png

1.3.5 项目发布

image.png
通过IP地址访问即可.
image.png

1.4 tomcat集群部署

1.4.1 war包部署说明

image.png

1.4.2 如何执行多个命令

  1. 可以利用&符 连续执行命令

image.png

1.4.3 如何关闭服务器

命令: ps -ef | grep java
命令2: 只检索java服务 jps
image.png

命令说明:
1."|" 管道 管道之前查询的结果,当做管道之后的参数(条件)进行操作.

  1. kill 杀死进程

kill PID号 普通关闭进程 (弱关闭)
kill -15 PID号 必须关闭,但是可以执行后续操作.
kill -9 PID号 强制关闭, 不给任何时间执行后续任务.
image.png

1.4.4 关于Linux后台启动

说明: 通过java -jar 8081.war的方式启动,只能在前台进行执行,如果关闭链接的终端,则程序也会跟着一起关闭,所以需要开启Linux后台运行.
命令:
image.png
image.png

1.4.5 关于查看命令学习

cat 输出文件所有的内容
more 输出文档所有的内容,分页输出,空格浏览下一屏,q退出
less 用法和more相同,只是通过PgUp、PgOn键来控制
tail 用于显示文件后几号,使用频繁
tail -10 nginx.conf 查看nginx.conf的最后10行
tail –f nginx.conf 动态查看日志,方便查看日志新增的信息
ctrl+c 结束查看

1.5 脚本启动tomcat服务器

说明: Linux中的脚本一般采用shell脚本.
步骤:
1.编辑start.sh的脚本文件
vim start.sh
image.png
2.指定脚本的文件头
3.指定脚本的内容.
image.png
4.执行脚本
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月9日

Nginx详解配置与Linux环境搭建

1. Nginx属性说明

image.png

1.1 down属性

说明:如果服务器宕机,或者该服务器不想为用户继续提供服务,则可以采用shutdown属性进行标识.
nginx访问规则: 如果nginx访问的服务器不能正常的响应,则等待超时之后,访问新的服务器.
image.png

1.2 backup属性

说明:backup表示备用机.正常情况下,该服务器不会为用户提供服务.但是当服务器宕机,或者服务器正忙时,才会访问该服务器.
image.png

1.3 tomcat服务器高可用机制

高可用: 当服务器发生故障时,通过某种机制可以自动的实现故障的迁移,从而使得用户不受任何的影响.
image.png

2. 关于虚拟机说明

2.1 修改虚拟机IP地址

image.png
2.检查网关地址
image.png

3.设置IP租约
image.png

2.2 远程服务器链接

image.png

3. Linux环境搭建

3.1 安装JDK

3.1.1 上传JDK文件

image.png

3.1.2 解压JDK

image.png

3.1.3 移动安装包

移动安装包
image.png

3.1.4 修改文件名称

image.png
image.png

3.1.5 配置JDK环境变量

文件目录: /etc/profile
编辑文件: vim /etc/profile
image.png
让环境变量生效:
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月9日

商品后台系统优化

1. 京淘后台优化

1.1 路径优化

1.1.1 编辑properties配置文件

image.png

1.1.2 编辑FileServiceImpl

动态为属性赋值.
image.png

2 实现商品图片回显

2.1 反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。 [1]

特点:

  1. 反向代理服务器位于用户与目标服务器之间
  2. 对于用户而言,以为代理服务器就是真实的服务器.
  3. 反向代理机制保护了真实的服务器信息.

4. 反向代理一般称之为服务端代理.
image.png

步骤:
1.当用户发起请求时,该请求被代理服务器拦截.
2.代理服务器查询自己的配置文件,根据url地址获取真实的服务器信息.
3.由代理服务器根据真实的服务器信息,获取数据.
4.真实的服务器接收请求之后,将数据返回给代理服务器.
5.代理服务器接收到服务器数据之后,将数据回传给用户,本次代理结束.

2.2 正向代理

2.2.1 正向代理说明

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

特点:
1.代理服务器位于用户与真实服务器之间的
2.客户非常清楚自己访问的服务到底是谁?
3.服务器不清楚访问自己的服务器到底是谁,以为只是代理服务器访问.
4.正向代理称之为客户端代理.保护了客户的信息
image.png

2.3 Nginx

2.3.1 Nginx服务器介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

特点:
1.占用内存少 不超过2M
2.并发能力强 5万/秒 tomcat 150-220个/秒
3.开发语言 C语言

2.3.2 Nginx下载

image.png

2.3.3 nginx安装

启动: 首先右键以管理员身份运行,之后程序闪退表示服务器启动正常.
image.png

2.3.4 检查Nginx服务启动项

nginx启动时,会启动2个进程项,其中一个
1.主进程 主要为用户提供反向代理服务 占用内存大
2.守护进程 防止主进程意外关闭的. 占用内存小的
image.png

2.3.4 启动正常测试

image.png

2.4 NGINX入门案例说明

2.4.1 配置文件说明

image.png

2.5 NGINX实现图片回显

2.5.1 编辑Nginx.conf文件

image.png

2.5.2 nginx命令

目录: 在nginx的根目录中执行
image.png

命令:
image.png

2.5.3 编辑hosts文件

介绍: HOSTS文件是操作系统为了方便开发,在本地形成的一个域名与IP的映射的文件. 但是该文件只对本机有效.
位置: C:WindowsSystem32driversetchosts
image.png
文件内容:
image.png

2.5.4 关于nginx回显图片报错问题说明

1.检查配置文件是否正确
image.png

2.检查上传路径
image.png

3.检查nginx配置是否正常
image.png
4.检查nginx是否启动正常
image.png

5.检查hosts文件是否有效 如果不生效重启计算机
image.png

2.6 实现域名的代理

2.6.1 业务需求

需求: 需要通过http://manage.jt.com域名访问l...:8091的服务器.
操作:
1.修改hosts文件
2.修改nginx的配置文件

2.6.2 修改nginx.conf配置文件

修改nginx之后,重启即可.
image.png

2 nginx高级用法

2.1 nginx负载均衡机制

说明: 为了提升后台服务器的处理能力,可以增加服务器.实现负载均衡的策略.
image.png

2.2 动态获取服务器端口号.

请求路径: http://manage.jt.com/getPort 获取到当前的服务器端口号信息.
image.png

2.3 项目打包

2.3.1 利用maven方式打包

说明:修改各自的端口号,之后将项目打包
image.png

2.3.2 利用压缩工具打包

将xxx.war改为xxx.zip 之后利用压缩工具修改配置文件,之后再次改为xxx.war即可
image.png

2.3.3 项目发布

命令: java -jar 8081.war 会占用一个终端窗口, 在运行时,终端不能关闭的.
image.png
image.png

2.3.4 释放资源的组合键

ctrl + c

2.4 nginx负载均衡测试

2.4.1 轮询策略

说明: 按照nginx.conf中配置文件的顺序依次访问
image.png

2.4.2 权重策略

说明: 由于公司的物理服务器可能性能有高有低,为了让高性能的服务器处理更多的数据.
image.png

2.4.3 IPHASH策略

说明:如果需要将服务器与IP地址进行绑定时,使用该策略
image.png
原理:
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 11月9日

商品后台系统实现

1.京淘商品后台实现

1.1 京淘后台表设计

image.png

1.2 准备POJO对象

image.png

1.3 富文本编辑器介绍

KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。
image.png
image.png

1.4 重构商品新增操作

1.4.1 编辑ItemController

image.png

1.4.2 编辑ItemService

image.png

1.5 商品详情回显

1.5.1 页面分析

image.png

1.5.2 编辑ItemController

image.png

1.5.2 编辑ItemController

image.png

1.5.3 页面效果展现

image.png

1.6 重构商品修改

1.6.1 编辑ItemController

image.png

1.6.2 编辑ItemService

image.png

1.6 重构商品删除

1.6.1 编辑ItemService

image.png

2.实现文件上传操作

2.1 入门案例

2.1.1 编辑页面

image.png

2.1.2 编辑FileController

image.png

2.2 封装文件上传VO对象-imageVO

image.png

2.3 实现文件上传

2.3.1 页面url分析

image.png
2.获取参数名称
image.png

2.3.2 编辑FileController

image.png

2.3.3 编辑FileService

image.png

2.3.4 页面效果展现

image.png

查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 0 次点赞
  • 获得 1 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 1 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 8月25日
个人主页被 208 人浏览