您好,登錄后才能下訂單哦!
與其他CDN服務商相比,億速云CDN的主要優勢包括穩定快速、性價比高、簡單易用、高效智能。比較多的用戶會問到穩定快速這個優點,一般來說,億速云的CDN特點是分擔源站壓力,避免網絡擁塞,確保在不同區域、不同場景下加速網站內容的分發,提高資源訪問速度。以下給大家介紹下mysql數據庫推送平臺與CDN。
sendfile(數據直接從 kernal的buffer出去)適合小文件
Aio(nginx)全異步(與事件驅動io的區別是:數據會到達mem才會通知,其實也不需要通知 可以直接返回給客戶端) 支持:mmap event drive(處理大文件)
上一回說到,在數據庫修改后,redis里面的數據不能做到自動更新,必須手動刪除更改過的數據 根據以上問題我們做出如下改進:
所以接下來就要通過 mysql 觸發器將改變的數據同步到 redis 中
配置 gearman 實現數據同步
Gearman 是一個支持分布式的任務分發框架:
Gearman Job Server: Gearman 核心程序,需要編譯安裝并以守護進程形式運行在后臺。
Gearman Client:可以理解為任務的請求者。
Gearman Worker:任務的真正執行者,一般需要自己編寫具體邏輯并通過守護進程方式
運行,Gearman Worker 接收到 GearmanClient 傳遞的任務內容后,會按順序處理。
大致流程:下面要編寫的 mysql 觸發器,就相當于 Gearman 的客戶端。修改表,插入表就相當于直接
下發任務。然后通過 lib_mysqludf_json UDF 庫函數將關系數據映射為 JSON 格式,然后
在通過 gearman-mysql-udf 插件將任務加入到Gearman 的任務隊列中,最后通過
redis_worker.php,也就是 Gearman 的worker 端來完成 redis 數據庫的更新。
dd1:
cd /root/redis
安裝gearman軟件包:
yum install gearmand-1.1.8-2.el6.x86_64.rpm libgearman-1.1.8-2.el6.x86_64.rpm
/etc/init.d/php-fpm start
netstat -antlpe
dd1:安裝php的gearman擴展
tar zxf gearman-1.1.2.tgz
cd gearman-1.1.2
phpize
rpm -ivh libgearman-devel-1.1.8-2.el6.x86_64.rpmlibevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpmlibevent-headers-1.4.13-4.el6.noarch.rpm
./configure
make && make install
cd /etc/php.d/
cp mysql.ini gearman.ini
vim gearman.ini
/etc/init.d/php-fpm restart
查看php已經安裝過的擴展:
php -m | grep gearman
php -m | grep mysql
php -m | grep redis
cd redis/
scp gearman-mysql-udf-0.6.tar.gz 172.25.42.12
scp lib_mysqludf_json-master.zip 172.25.42.12:
scp libevent-* libgearman-* 172.25.42.12:
dd3:
/etc/init.d/mysqld start
tar zxf gearman-mysql-udf-0.6.tar.gz
yum install mysql-devel -y
rpm -ivh libgearman-devel-1.1.8-2.el6.x86_64.rpmlibevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpmlibevent-headers-1.4.13-4.el6.noarch.rpm
cd gearman-mysql-udf-0.6
./configure --libdir=/usr/lib64/mysql/plugin/
make && make install
cd /usr/lib64/mysql/plugin/
進入mysql環境:
注冊 UDF 函數
mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME
'libgearman_mysql_udf.so';
mysql> CREATE FUNCTION gman_servers_set RETURNS STRINGSONAME
'libgearman_mysql_udf.so';
查看函數
mysql> select * from mysql.func;
安裝 lib_mysqludf_json
lib_mysqludf_jsonUDF 庫函數將關系數據映射為 JSON 格式。通常,數據庫中的數據映射為 JSON 格式,是通過程序來轉換的
unzip lib_mysqludf_json-master.zip
cd lib_mysqludf_json-maste
gcc $(mysql_config --cflags) -shared -fPIC -olib_mysqludf_json.so
lib_mysqludf_json.c
查看 mysql 的模塊目錄:
mysql> show global variables like 'plugin_dir'
拷貝 lib_mysqludf_json.so 模塊:
cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
注冊 UDF 函數
mysql> CREATE FUNCTION json_object RETURNS STRING SONAME
'lib_mysqludf_json.so'
查看函數
mysql> select * from mysql.func;
指定 gearman 的服務信息
mysql>SELECT gman_servers_set('172.25.42.10:4730');
編寫 mysql 觸發器 test.sql
mysql < test.sql
查看觸發器
mysql> SHOW TRIGGERS FROM test
dd1:編寫 gearman 的 worker 端
nohup php worker.php &>/dev/null & (后臺運行)
測試:
更新 mysql 中的數據
mysql> update test set name='test1' where id=1
mysql> update test set name='dangdang' where id=1
Varnish:高速http緩存:
dd1:
varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
rpm –ivh
vim /etc/sysconfig/varnish
cd /etc/varnish/
vim default.vcl
/etc/init.d/varnish start
dd3:/etc/init.d/httpd start
### 通過 varnishadm 手動清除緩存
# varnishadm ban.url .*$
#清除所有
# varnishadm ban.url /index.html
#清除 index.html 頁面緩存
# varnishadm ban.url /admin/$
#清除 admin 目錄緩存
vim default.vcl
###查看緩存命中情況
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
測試緩存命中:
定義多個不同域名站點的后端服務器:
backend default {
.host = "172.25.42.12";
.port = "80";
}
backend web {
.host = "172.25.42.11";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?dd.org") {
set req.http.host = "www.dd.org";
set req.backend = default;
} elsif (req.http.host ~ "^bbs.dd.org") {
set req.backend = web;
} else {error 404 "westos cache";
}
測試:www.dd.org 和 dd.org 是同一個緩存
而bbs.dd.org是一個緩存
#當訪問 www.dd.org 域名時從 default 上取數據,訪問 bbs.dd.org 域名時到web 取數據,訪問其他頁面報錯 //注意:測試主機加解析
負載均衡:(域名負載均衡)
訪問www.dd.org 時 兩臺主機響應它
避免再開一臺虛擬機 給dd2 做虛擬主機(一個ip 多個域名)
dd1:
vim default.vcl
director lb round-robin {
{.backend = default;}
{.backend = web;}
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?dd.org") {
set req.http.host = "www.dd.org";
set req.backend = lb;
return (pass); (測試用)
} elsif (req.http.host ~ "^bbs.dd.org") {
set req.backend = web;
} else {error 404 "westos cache";
}
}
varnish cdn 推送平臺 (清空緩存)
#需要安裝 php 支持
# unzip bansys.zip -d /var/www/html
# vi /var/www/html/bansys/config.php
#只保留如下設置,其余注釋掉
<?php
$var_group1 = array(
'host' => array('172.25.42.10'),
'port' => '80',
);
//varnish 群組定義
//對主機列表進行綁定
$VAR_CLUSTER = array(
'www.dd.org' => $var_group1,
);
vim /etc/varnish/default.vcl
/etc/init.d/varnish reload
測試:
如果大家還有什么地方需要了解的可以在億速云官網找我們的CDN技術工程師的,億速云CDN技術工程師在行業內擁有十幾年的經驗了,所以會比小編回答的更加詳細專業。億速云官網鏈接www.5655pk.com
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。