springboot 事务例子(单机)

Submitted by Lizhe on Fri, 07/28/2017 - 15:20

注意以下几点

  1. @Transactional 可以写在类上也可以写在方法上
  2. @Transactional写在方法上时必须是public方法,而且最好有接口, 没有接口的事务可能会失效
  3. 默认是只有runtime exception才回滚,所以需要rollbackFor={Exception.class, RuntimeException.class}

 

/springbootTransactionSample/pom.xml

Rate Limit 限流

Submitted by Lizhe on Tue, 07/25/2017 - 12:22

如果你还记得12306网站那个著名的 "系统太忙请稍后再试"你一定遇到过限流

或者是jd的抢购活动的"服务器太忙请稍后再试" 都是限流的结果

限流的好处在于防止非预期的请求对系统压力过大而引起的系统崩溃

一般Web系统的访问限制都可以用容器本身来实现,比如tomcat就可以在connector上面配置connection数目的限制,servlet thread限制

不过如果不同的URL需要配置不同的限制, tomcat显然是做不到的

这个时候就需要实现自己的限制

 

常用的限流算法有两种   漏桶算法和令牌桶算法

 漏桶算法

请求会先进入一个漏桶里, 假设漏桶每分钟滴4滴水, 那么就有4个请求在这一分钟里被处理,如果水桶满了, 就意味着可以goto error page 了

Spring Session ( by tomcat directly )

Submitted by Lizhe on Tue, 07/25/2017 - 10:13

换成tomcat下工作的版本需要

添加一个filter在web.xml里

pom.xml的依赖需要一些改动,其他都差不多

这里唯一需要稍微解释一下的是filter使用的springSessionRepositoryFilter, 这个对象的名字是约定的,也就是说没有特殊需要不要随意修改

另外这个对象是@EnableRedisHttpSession标签自动生成的,如果移除标签,会得到找不到springSessionRepositoryFilter对象的错误 ( 又是一个找不到对象的错误 :P )

/springsessionsampletomcat/pom.xml

Spring Session ( by spring boot )

Submitted by Lizhe on Mon, 07/24/2017 - 14:09

以前做tomcat集群的时候你一定处理过session共享的问题

原理一般都是使用memcached和redis当做缓存,然后把session数据直接存进去

做法是使用一个特定的memcached或者redis的session管理器, 一般来说这个管理器只能在特定的容器中使用

也就是说存储媒介是memcached或者redis, 实现是通过session管理器

spring session 其实也差不多, 也是把session存进memcached或者redis, 只不过它是通过一个filter来实现的

不过在springboot下你根本不用写filter, 只写注释就可以了

pom.xml

搭建本地git服务器

Submitted by Lizhe on Thu, 07/20/2017 - 11:46

其实下载编译完全可以使用yum

参考一下创建文件夹和用户就可以了

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

yum install gcc perl-ExtUtils-MakeMaker

wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz

tar -zvxf git-2.10.0.tar.gz

cd git-2.10.0

make all prefix=/usr/local/git

make install prefix=/usr/local/git

echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

source /etc/bashrc

git --version

useradd -m gituser

passwd gituser

mkdir -p /data/repositories

free命令的available

Submitted by Lizhe on Thu, 07/20/2017 - 10:27

3.14内核新增了一个内存信息MemAvailable , 当调用free命令时可以显示为available

之前没留意过

[root@VM_167_46_centos etc]# free -h
                         total         used             free      shared     buff/cache      available
Mem:           993M        253M        334M         39M               405M             556M
Swap:           2.0G          82M             1.9G

我们知道used + free + buff 基本等于 total

used是被使用的

free是完全没有被使用的

shared是被程序之间可以(已经被)共享使用的

buffers是指用来给块设备做的缓冲大小,它只记录文件系统的metadata以及 tracking in-flight pages

cached是用来给文件做缓冲