委托模式

 

观察者模式

 

适配器模式

 

lvs环境搭建

lvs环境搭建
lvs是linux virtual server的缩写,顾名思义:linux虚拟服务器,是一个虚拟的服务器集群系统。
作用:负载均衡。当多个客户端同时并发请求服务器的时候,将请求按一定规则分发给不同的真实服务器。
lvs有3种模式:nat模式、ip隧道模式、dr模式。 ip隧道模式基本已经被dr模式取代,所以只需要了解nat模式和dr模式即可。
nat模式和dr模式的优缺点
nat模式优点:只需要一个外网ip,供lvs使用,lvs与真实服务器通过内网连接(tcp/ip)
nat模式缺点:请求和响应都需要通过lvs服务器,如果真实服务器超过20个或更多时,lvs服务器将成为系统瓶颈。(对中小型企业无影响)
dr模式优点:lvs服务器只负责分发请求、不负责响应(响应是通过真实服务器直接返回给客户端),部署再多的真实服务器,lvs服务器也不会成为瓶颈。
缺点:要求负载均衡器的网卡必须与物理网卡在一个物理段上。

本文以nat模式为例配置lvs环境。

1

NAT(Network Address Translation)是一种外网和内网地址映射的技术。
NAT模式下,网络报的进出都要经过LVS的处理。LVS需要作为RS的网关。
RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。
这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

虚拟机搭建
我使用了一台linux client、一台lvs服务器、两台linux web服务器作为本次测试的环境。
虚拟机VirtualBox 4.3.24 linux系统 centos 6.3

首先将lvs服务器桥接连通网络,然后使用yum命令安装lvs相关软件

然后分别设置4台虚拟机的网卡

linux client

2

lvs服务器需要配置2个网卡,网卡1供外网访问,网卡2内网连接web服务器

3

4

web1服务器

5

web2服务器

6

接着,分别配置4台虚拟机

这里需要注意的是客户端ip与lvs服务器的外网ip必须在同一网段
两台web服务器的ip与lvs服务器的内网ip必须在同一网段
lvs服务器的外网ip与内网ip必须为不同网段
如何区分是否为同一网段:ip地址和子网掩码与运算,如果相同则为同一网段,反之则为不同网段

至此,配置已全部完成

通过客户端浏览器访问8.8.8.8每强刷一次就会在两台web服务器中切换。7

lvs理论请参考:

http://www.topthink.com/topic/4049.html#rd?sukey=39297060d6d3d5575308953957823c18f5a73e49de75d9efc8ac91c891ddaa173459806f0abbf4d44e676489280f52c6

mysql存储过程

存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([IN|OUT|INOUT] 参数名 数据类型,…,…)[特性 …] 过程体

注意事项:
MySQL默认以”;”为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将”;”当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。

存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用”,”分割开。

过程体的开始与结束使用BEGIN与END进行标识。

IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

OUT 输出参数:该值可在存储过程内部被改变,并可返回

INOUT 输入输出参数:调用时指定,并且可被改变和返回

调用存储过程用 必须使用”@”符号 用户变量一般以@开头

 

定义变量
declare 变量名[多个用”,”隔开] 变量类型 [default value]; 变量类型如:int float date varchar(20)等
例如:
DECLARE l_int int unsigned default 4000000;
DECLARE l_numeric number(8,2) DEFAULT 9.95;
DECLARE l_date date DEFAULT ‘1999-12-31’;
DECLARE l_datetime datetime DEFAULT ‘1999-12-31 23:59:59’;
DECLARE l_varchar varchar(20) DEFAULT ‘hello world’;

变量赋值
set 变量名=表达式值 如:set test=test+1;

查看某库有哪些存储过程
select name from mysql.proc where db=’数据库名’;

查看存储过程详情
show create procedure 数据库名.存储过程名

注:mysql中处理字符串时,默认第一个字符下标为1,php中为0

常用函数:

 

参考地址:http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=203926493&idx=1&sn=6538524997d1df8c6e8563fe3d5d564e&scene=2#rd

swoole安装与调试

一.安装

1.下载swoole,尽量使用stable版本,即稳定版
地址:https://github.com/swoole/swoole-src/releases

2.通过ftp上传到linux服务器

3.解压与安装

安装完成后进入php.ini加入以下语句

extension=swoole.so

php.ini路径可通过 php –ini 查看

运行php -m 看看swoole扩展是否安装成功

重启nginx、php(不知道是否需要重启- – 保险起见还是重启一下)

/etc/init.d/nginx restart

/etc/init.d/php-fpm restart

二.调试

在网站根目录编写index.php,内容如下:

通过 php index.php 启动服务

此时,通过浏览器访问127.0.0.1即可访问swoole的http服务器。