系统优化

Java秒杀系统优化的工程要点

送分小仙女□ 提交于 2019-11-30 14:23:55
这篇博客是笔者学习慕课网若鱼老师的《Java秒杀系统方案优化 高性能高并发实战》课程的学习笔记。若鱼老师授课循循善诱,讲解由浅入深,欢迎大家支持。 本文记录课程中的注意点,方便以后code review。此外,本文将注意点相关的优质讲解链接在了一起,方便初学者系统学习。 本文并非单纯介绍秒杀系统特有的技术点,不适合高手。进阶学习的话,极客时间有个不错的小专栏——如何设计一个秒杀系统,阿里高级技术专家讲解秒杀系统的设计要点,那个课程挺干货的。 设计秒杀系统的技术要点 1. 登录的密码传输: 用户的数据库表设计,需要增加一字段保存密码的Salt值 两次MD5操作( 敏感数据一定要使用https协议传输 ): 客户端:将明文password和客户端硬编码的Salt值进行拼接,然后进行MD5操作。 不用盐的话,MD5字符串有可能会被彩虹表或者社工库破解 服务端:将客户端传过来的MD5字符串和数据库用户对应的Salt字段进行拼接。然后进行MD5操作。 这次加盐MD5,可以有效防止内部员工泄露或者数据库被拖库后,明文密码泄露 2. 自定义JSR303的校验器 可以参照javax.validation.constraints.NotNull注解,自定义自己的校验器,将校验代码与业务代码分离。不过由于校验失败会输出BindException异常,所以最好配合全局捕获异常进行友好的输出。

linux系统优化项

半腔热情 提交于 2019-11-30 12:21:39
linux新安装调优及安全设置: 1、关闭selinux 2、设定运行级别为3 3、精简开机自启动 4、linux系统安全最小原则申明 5、更改ssh服务器远程登陆配置 6、利用visudo命令控制用户对系统命令的使用权限 7、liux中文显示 8、设置linux服务器时间同步 9、历史记录数和登陆超时时间环境变量的设置 10、调整linux文件描述符的数量 11、linux内核参数优化 12、定时清理邮件服务临时目录和垃圾文件 13、隐藏linux版本信息 14、锁定关键系统文件,防止篡改 15、清除多余账号 16、升级具有典型漏洞的软件服务版本 17、禁止系统被ping 详细解释: 关闭selinux: 可以使用命令setenforce 0 (这个命令只是临时关闭)如果想要永久关闭需要更改配置文件 使用sed命令 (sed -i ”/SELINUX/s/enforcing/disabled/g /etc/selinux/conf“),更改后需要重新启动系统。 2、设定运行级别为3 首先查看系统当前的运行级别 使用runlevel命令查看linux的运行级别,也可以查看/etc/inittab文件,若有下面两项就无需修改*这个一般不会怎么更改 # multi-user.target: analogous to runlevel 3 # graphical.target:

优秀的运维

二次信任 提交于 2019-11-30 05:46:10
硬件,网络,存储,数据库,操作系统,虚拟化系统,中间件程序 ,业务应用程序 1,部署规划,部署文档,配置记录 2,监控系统,报警 3,故障解决记录,文档 , 巡检,安全检查 ,运维报告 4,日志系统 5,数据备份,数据恢复,数据恢复演练 6,自动扩容,自动缩容 7,系统优化,架构优化 8,运营数据 来源: https://www.cnblogs.com/li-tian-jun/p/11563831.html

007 Linux系统优化进阶

删除回忆录丶 提交于 2019-11-29 06:43:16
一、更改 ssh 服务远程登录的配置 windows:默认远程端口和管理员用户   管理员:administrator   port :3389 Linux:远程连接默认端口和超级用户   管理员:root       port:22   1、端口的范围是 0—65535 ssh 服务所在位置:/etc/ssh/sshd_config 默认ssh的端口就是22, 手动配置端口#Port 52113#可以更改连接ssh的端口号。 #Protocol 2#表示的是两种ssh协议,ssh1、ssh2,2代表的就是ssh2协议。 更改前: 更改后: 默认情况下,允许root用户登录,更改以后root用户无法通过ssh进行登录。 2、### 编辑器里跳到指定的行 --- 命令行模式,行号gg ##### ### 使用 vimdiff 文件1 文件2 可以对比查看文件 ### 重启ssh服务做过的更改才会生效:   /etc/init.d/sshd reload   /etc/init.d/sshd/restart   service sshd restart 二、用户切换 1、普通用户切换到root用户。 su -      切到root用户。 sudo    让普通用户可以拥有指定的root权限功能。(还是普通用户)       可以执行命令,但不能切到root 例

Mac系统优化工具MacBooster 7有哪些常见问题?

岁酱吖の 提交于 2019-11-28 20:12:00
MacBooster 7 for Mac是一个非常简单但功能强大的Mac系统软件,可以非常轻松地清理和优化您的Mac,并在线保护您的隐私和安全。 今天要给大家分享的是Mac系统优化工具MacBooster 7常见问题,希望对大家有所帮助! 1、MacBooster 7的主要功能有哪些? 1.通过一键式解决方案清理垃圾文件并修复各种Mac问题,并使用七种有用的工具来保持Mac的最佳性能。 2.保护您的Mac免受各种病毒和恶意软件的侵害,以确保其安全性。 2、MacBooster 7的系统要求是什么? Mac OS X 10.7或更高版本 70 MB以上的可用磁盘空间 3、MacBooster 7支持哪些语言? 它支持14种语言,包括简体中文,繁体中文,丹麦语,荷兰语,法语,德语,意大利语,日语,葡萄牙语(PT-BR),葡萄牙语(PT-PT),俄语,西班牙语,泰语和土耳其语。 4、如何改变语言? 打开MacBooster 7>单击顶部菜单栏上的MacBooster 7或使用“命令”和“,”热键打开“首选项”>“常规”>“语言”>根据需要设置语言。 5、如何设置MacBooster 7不扫描文件夹或文件? 打开MacBooster 7>单击顶部菜单栏上的MacBooster 7或使用“命令”和“,”热键打开“首选项”>“忽略”列表>单击“添加”按钮以添加要排除的文件或文件夹。

【Linux】常用的系统优化命令

馋奶兔 提交于 2019-11-28 16:21:16
#网卡配置文件 网络配置文件: /etc/sysconfig/network 网络接口配置文件: /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME #用ifconfig命令查看网卡的名字 DEVICE=: 关联的设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致; BOOTPROTO={static|none|dhcp|bootp}: 引导协议;要使用静态地址,使用static或none;dhcp表示使用DHCP服务器获取地址; IPADDR=: IP地址 NETMASK=:子网掩码 GATEWAY=:设定默认网关; ONBOOT=:开机时是否自动激活此网络接口; HWADDR=: 硬件地址,要与硬件中的地址保持一致;可省; USERCTL={yes|no}: 是否允许普通用户控制此接口; PEERDNS={yes|no}: 是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址; #如果你电脑上没有 ifconfig命令,只有 ip addr命令 yum install net-tools -y #启动/关闭一块网卡 ifup eth0 #eth0为网卡名,可通过ifconfig命令获取 ifdown eth0 #查看系统版本信息 cat /etc/redhat-release CentOS

秒杀系统优化方案(下)吐血整理

回眸只為那壹抹淺笑 提交于 2019-11-28 13:09:51
接上篇 秒杀系统优化方案(上)吐血整理 3. 深入优化设计 3.1 初始方案问题分析 在前面针对数据库的优化中,由于数据库行级锁存在竞争造成大量的串行阻塞,我们使用了存储过程(或者触发器)等技术绑定操作,整个事务在MySQL端完成,把整个热点执行放在一个过程当中一次性完成,可以屏蔽掉网络延迟时间,减少行级锁持有时间,提高事务并发访问速度。 可是问题时并发的流量实际上都是直接穿透让MYSQL自己去抗,比如说 库存是否卖完 以及 用户是否重复秒杀 都完全是靠 查询数据库 去判断,造成数据库不必要的负担非常大,然而这些都可以放在 缓存做一个标记在服务层进行拦截 ,对于中小规模的并发还可以,但是真正的超高并发,显然这个还不完善。 3.2 优化的方向和思路 方向:将请求尽量拦截在系统上游 传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,并发高响应慢,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小【一趟火车其实只有2000张票,200w个人来买,基本没有人能买成功,请求有效率为0】 思路:限流和削峰 限流: 屏蔽掉无用的流量,允许少部分流量流向后端。 削峰: 瞬时大流量峰值容易压垮系统,解决这个问题是重中之重。常用的消峰方法有异步处理、缓存和消息中间件等技术。 异步处理: 秒杀系统是一个高并发系统,采用异步处理模式可以极大地提高系统并发量

Cent OS 7的Linux系统优化加固

老子叫甜甜 提交于 2019-11-28 05:36:27
1.关闭selinux 2.关闭防火墙 3.关闭NetworkManager 4.为系统运维管理员创建普通用户,并配置sudo(vi sudo) 5.清空泄漏系统版本信息的文件 6.基础优化sshd服务 vim /etc/ssh/sshd_config egrep -n 'GSSAPIA|UseDNS' /etc/ssh/sshd_config(查看是否修改了)7.修改系统YUM源,添加系统epel源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #修改系统YUM源curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #添加系统epel源 yum repolist #查看系统YUM源和epel源8.安装系统常用软件 yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc 9.优化linux内核参数 cat >>/etc/sysctl

秒杀系统优化思路

南笙酒味 提交于 2019-11-28 01:14:22
一、秒杀业务为什么这么难做 秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据。 例如: 小米手机每周二的秒杀,可能手机只有1万部,但瞬间进入的流量可能是几百几千万。 12306抢票,票是有限的,但是抢票的人很多,都读取相同的库存。 读写冲突,锁非常严重 ,这是业务难的地方。 那我们怎么优化秒杀业务呢? 二、优化方向 (以上的两个场景要优化有两个方向) 将请求尽量拦截在系统上游 (不要让锁冲突落到数据库上去)。传统的秒杀系统之所以挂,是因为请求都压到后端数据层,数据读写冲突严重,并发高响应慢,几乎所有请求都超时,流量最大,下单成功的有效流量非常小。以12306为例,一趟火车其实只有2000张票,但是抢到的人却有200万,基本没人能买票成功,请求有效率为0. 充分利用缓存 ,秒杀买票,这是一个典型的读多写少的应用场景,大部分请求是车次/票查询,下单和支付才是写请求。一趟火车只有2000张票,200万人来买,最多2000人下单成功,其他人都是查库存,写入操作的比例是0.1%,而读取的操作比例是99.9%,非常适合缓存来做优化。 三、常见秒杀架构 常见的秒杀架构基本是这样的 浏览器端 ,最上层,会执行一些JS代码 站点层 ,这一层会访问后端数据,将操作响应返回给浏览器 服务层 ,向上游屏蔽底层数据细节,提供数据访问 数据层 ,最终的“库存”会存放在这里,mysql是一个典型

架构-秒杀系统优化思路

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 01:14:02
一、秒杀业务为什么难做 1)im系统,例如QQ或者微博, 每个人都读取自己的数据 (好友列表、群列表、个人信息); 2)微博系统,每个人读关注人的数据, 一个人读多个人的数据 ; 3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据, 多个人读一个数据。 例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬间进入的流量可能是几百几千万。 又例如:12306抢票,票是有限的,库存一份,瞬间流量非常多,都读相同的库存。 读写冲突,锁非常严重,这是秒杀业务难的地方。 二、优化方向 优化的方向有两个: (1) 将请求尽量拦截在系统上游 (不要让锁冲突到数据库上去) 传统秒杀系统之所以挂,请求都压到了后端数据库,数据读写锁冲突严重,并发高相应慢,几乎所有请求都超时, 流量虽大,下单成功的 有效流量 甚小。以12306为例,一趟火车其实只有2000张票。200W个人来买, 基本没有人能买成功,请求有效率为0. (2) 充分利用缓存 , 秒杀买票,这是一个典型的 读多写少 的应用场景,读:(大部分请求时车次查询,票查询),写(下单和支付才是写请求。)一趟火车只有2000张票,200W个人来买,最多只有2000个人下单成功,其他人都是查询库存, 写比例0.1%,读比例占99.9%.这种场景就非常合适使用缓存来优化 。 三、常见秒杀架构 常见的站点架构基本是这样的 (1)浏览器端,最上层