构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构]...

news/2024/5/17 13:34:54/文章来源:https://blog.csdn.net/weixin_34161083/article/details/89908871
构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构]
版本:V1
出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li
作者:Jimmy Li
关键词:电子商务,系统架构,
------[连载之电子商务系统架构]访问量超过100万的电子商务网站技术架构
连接:http://jimmyli.blog.51cto.com/3190309/676378访问量超过100万的电子商务网站技术架构

 
本连载首篇介绍到电子商务网站高性能、高可用解决方案。从架构图上的方案,应用的是LVS+keepalived负载均衡。实现高性能、高可用解决方案(服务器组成集群,达到负载均衡,高性能、高可用、高可伸缩性的服务器集群)互联网->LVS负载均衡(前端四层负载均衡器)。
   访问量超过100万的电子商务网站技术架构.PNG图,电子商务网站要承受高访问量,硬件设备的支撑是整个系统的基础。系统软件的支撑也是必不可少的重要组成部分。
本文详细介绍传统WEB前段负载均衡层,并比较常见有多种负载均衡解决方案。
一、本文要点:
1.LVS+keepalived linux服务器通过源码编译安装。
2.软件负载均衡,四层负载均衡器。
3.CentOS5.6环境下布署(32位) linux服务器版。
4.电子商务网站高性能、高可用解决方案,LVS负载均衡(前端四层负载均衡器)。
5.构建过程的要点解说,重点步骤说明。
6.本方案多次用于实际生产应用中,并可以灵活变通应用。

二、软件负载均衡常见几种方案:
1.LVS+keepalived负载均衡,LVS+KEEPALIVED是LINUX下的四层负载均衡软件
2.Haproxy做负载均衡
3.heartbeat + heartbeat-ldirectord + lvs
三、硬件的负载均衡解决方案有:
1.F5 负载均衡(F5 负载均衡 LTM V9 HA )
2.思科 负载均衡产品 ( CISCO(思科) ACE-4710-0.5F-K9 )
3.思杰 负载均衡产品(CITRIX NetScaler 标准版(9000) 负载均衡)
Cisco、Juniper、F5、Radware、Huawei等品牌网络设备。
四、名词解释:
LVS(Linux Virtual Server) LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡。
HA(High Availability),则是高可用的意思。
五、电子商务网站负载均衡架构:
电子商务网站负载均衡架构,选择本架构的原因是。因为LVS+KEEPALIVED是LINUX下的四层负载均衡软件。其有如下特点:
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率(在DR模式下),将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其主要组成部分为:
A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,即realserver,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
LVS的IP负载均衡技术实现:
目前IP负载均衡技术是在负载调度器的实现技术中效率最高的。LVS集群中实现的三种IP负载均衡技术,分别是:
     Virtual Server via Network Address Translation (VS/NAT): 也有说端口映射的,其目标是将一组服务器构成一个高性能的、高可用的虚拟服务器。因为这种技术容易形成单点故障,从而造成网路无法访问,并且存在带宽瓶颈。所以LVS又提供了下面两种实现。
Virtual Server via IP Tunneling (VS/TUN ): 通过IP隧道实现虚拟服务。
     Virtual Server via Direct Routing (VS/DR) :直接路由实现虚拟服务器的方法(负载能力最强),本文搭建的就是DR模式。
集群:
     所谓集群是指由多个独立的计算机节点构成的在网络中表现为单一的为客户工作站提供高可靠性服务的系统。在大型项目中,往往有大量的请求并发,这样就给服务器带来了很大的负载,而建立集群系统的目的就是为了解决负载均衡和高可用性的问题。 
     
负载均衡:
     负载均衡是指大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间。既然服务是在多台节点设备上的运行,那么要屏蔽负载均衡服务器的失效,就要在主备机上都运行High Availability 监控程序,来监控对方的运行状况。通过这种方式,可以实现系统的高可用性,即当备份机不能在一定的时间内收到主服务器的活动信息时,它就接管主服务器的服务IP并继续提供服务。当备份机又从主服务器收到活动信息,它就释放服务IP地址,由主服务器提供服务。
通过以上的介绍,相信大家对集群技术及其应用领域已经有了宏观上的了解。下面,我们通过一个实际的案例来讲解如何在实战中建立一个具有高可用性的集群系统。读者可以依据本文介绍的方法进行集群实验,只需要准备两台普通的PC机模拟服务器即可。这里我们在两台PC机上都安装了SuSE Linux操作系统,并以IBM产品(WAS NDIBM HTTP Server,EDGE Component等)作为构建集群的软件支持,实现一个可拓展、高性能,具有高可用性的集群系统。
六、架构图:
七、系统环境:CentOS 5.6 32位(系统最小模式安装)
64位系统安装问题提示:
试过在64位时编译会出错,提示找不到一些内核库文件,文件名称含了64字样的缘故,编译有问题,逐一修改修改原安装包很麻烦。还不知道会有其他未知BUG。
关键点:keepalived 是运行在LVS基础上的,LVS 安装ipvsadmin #yum install ipvsadmin (省去编译版本配对问题)
很多朋友使用编译安装不成功,是由于ipvsadmin的版本跟你使用的linux内核不一致。
首先请查看自己 Linux 操作系统内核的版本   命令: uname -a    命令: cat /proc/version 命令:lsb_release -a
八、编译安装ipvsadm
下面看我怎么编译安装的,linux系统应用中编译安装是我力荐的安装方式。
首先下载软件ipvsadm
安装ipvsadm。Ipvsadm的官方下载地址为 http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz,解压后先做一个链接文件,把目录/usr/src/kernels/2.6.18-8.el5-i686/ 链接为/usr/src/linux,不这样做的话,执行./configure脚本将报错。运行命令 ln –s /usr/src/kernels/2.6.18-8.el5-i686 /usr/src/linux 做好链接,再运行不带参数的脚本 ./configure,然后执行”make;make install”完成安装
下载后,安装ipvsadmin
编译时候报 make[1]: *** [libipvs.o] Error 1 错误
但是下了ipvsadm后编译出了问题: 
解决办法可能不只一种;我是用的下面的办法搞定的:
ln -s /usr/src/kernels/2.6.x-xx.EL-i686/ /usr/src/linux 
cd ipvsadm-1.24 
make && make install
ipvsadmin -v 应该能看到如下信息:
[root@localhost ipvsadm-1.24]# ipvsadm -v 
ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.0)
说明编译安装成功!
九、keepalived采用VRRP机制
另外注意 keepalived 在Linux下的(VRRP)虚拟路由冗余协议 ,keepalived采用VRRP机制,那么就会涉及负载均衡服务器连接的路由器(交换机)
VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)。
实际使用中,如果你连接的使用的路由器是傻瓜型的话,可以忽略这个问题。
如果你用是智能路由器,设置了规则的话,那就要注意了,一些规则会将VRRP发出的状态检测包,当做病毒屏蔽掉,最后导致的结果是keepalived    负载均衡器之间的失败切换failover,是通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的。 
还可能导致不能检测后端真实服务器的存活状态(检测web服务器的状态)。
十、相关知识点
1.keepalived 通过对服务器池对象的健康检查,实现对失效机器/服务的故障隔离 (官方专用名词“Checkers”负责真实服务器的健康检查healthchecking)
2.负载均衡器之间的失败切换failover,是通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的。
不就是(LVS-DR,LVS-NAT,LVS-TUN)3种模式!
十一、网络环境 :
lvs-master:192.168.9.201 (主)
lvs-backup:192.168.9.202 (备)
vip:192.168.9.200        (虚拟ip)
web1:192.168.9.203       (后端真实WEB服务器1)
web2:192.168.9.204       (后端真实WEB服务器2)
netmask:255.255.255.0    (掩码)
gateway:192.168.9.1      (网关)
网络拓扑 如上图:详细见“LVS集群的体系结构,构建强壮的体系结构里负载均衡层、真实服务器层、后端共享存储层都是相辅相成”文章。
 
十二、LVS+keepalived linux服务器通过源码编译安装shell脚本

echo "============================ 更新系统时间 ======================" 
yum install -y ntp 
ntpdate time.nist.gov 
echo "00 01 * * * /usr/sbin/ntpdate time.nist.gov" /etc/crontab 
echo “========================= 安装ipvsadm、keepalived ==================” 
#Funciont: Backup website and mysql database 
#Author: Jimmy Li 
#Website: http://jimmyli.blog.51cto.com/ 
#IMPORTANT!!!Please Setting the following Values! 
[root@master ~]# cd /usr/local/src 
[root@master ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz 
[root@master ~]# wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz 
[root@master ~]# ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux 
[root@master ~]# tar -zxvf ipvsadm-1.24.tar.gz 
[root@master ~]# cd ipvsadm-1.24 
[root@master ~]# make;make install 
[root@master ~]# cd .. 
[root@master ~]# tar -zxvf keepalived-1.1.17.tar.gz 
[root@master ~]# cd keepalived-1.1.17 
[root@master ~]# ./configure 
configure: error: 
    !!! OpenSSL is not properly installed on your system. !!! 
    !!! Can not include OpenSSL headers files.

解决办法:
 
[root@master ~]# yum -y install openssl-devel 
[root@master ~]# ./configure    
[root@master ~]# make;make install

编译的时候出现这个提示,说明keepalived和内核结合了,如果不是这样的,需要加上这个参数

./configure --with-kernel-dir=/kernel/path 
Keepalived configuration 
------------------------ 
Keepalived version             : 1.1.17 
Compiler                                 : gcc 
Compiler flags                     : -g -O2 
Extra Lib                                : -lpopt -lssl -lcrypto    
Use IPVS Framework             : Yes 
IPVS sync daemon support : Yes 
Use VRRP Framework             : Yes 
Use LinkWatch                        : No 
Use Debug flags                    : No
echo “======================= 配置keepalived ===========================” 
#Funciont: Backup website and mysql database 
#Author: Jimmy Li 
#Website: http://jimmyli.blog.51cto.com/ 
#IMPORTANT!!!Please Setting the following Values! 
[root@master ~]#    cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ 
[root@master ~]#    cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ 
[root@master ~]#    mkdir /etc/keepalived 
[root@master ~]#    cp /usr/local/sbin/keepalived /usr/sbin/ 
[root@master ~]# vi /etc/keepalived/keepalived.conf 
! Configuration File for keepalived 
    
global_defs { 
     notification_email { 
            jimmyli@jimmyli.blog.51cto.com 
     } 
     notification_email_from jimmyli@jimmyli.blog.51cto.com    #http://jimmyli.blog.51cto.com/ 
     smtp_server jimmyli.blog.51cto.com 
    # smtp_connect_timeout 30 
     router_id LVS_DEVEL 

    
# VIP1 
vrrp_instance VI_1 { 
        state MASTER                         #备份服务器上将MASTER改为BACKUP        
        interface eth0 
        lvs_sync_daemon_inteface eth0 
        virtual_router_id 51 
        priority 100        # 备份服务上将100改为90 
        advert_int 5 
        authentication { 
                auth_type PASS 
                auth_pass 1111 
        } 
        virtual_ipaddress { 
                192.168.9.200        
                #(如果有多个VIP,继续换行填写.) 
        } 

    
virtual_server 192.168.9.200 80 { 
        delay_loop 6                                    #(每隔6秒查询realserver状态) 
        lb_algo wlc                                    #(lvs 算法) 
        lb_kind DR                                    #(Direct Route) 
        persistence_timeout 60                #(同一IP的连接60秒内被分配到同一台realserver) 
        protocol TCP                                #(用TCP协议检查realserver状态) 
    
        real_server 192.168.9.203 80 { 
                weight 100                             #(权重) 
                TCP_CHECK { 
                connect_timeout 10             #(10秒无响应超时) 
                nb_get_retry 3 
                delay_before_retry 3 
                connect_port 80 
                } 
        } 
        real_server 192.168.9.204 80 { 
                weight 100 
                TCP_CHECK { 
                connect_timeout 10 
                nb_get_retry 3 
                delay_before_retry 3 
                connect_port 80 
                } 
         } 

[root@master ~]#    service keepalived start|stop 
[root@master ~]# chkconfig –level 2345 keepalived on 
echo “====================== 配置realserver =========================” 
#Funciont: Backup website and mysql database 
#Author: Jimmy Li 
#Website: http://jimmyli.blog.51cto.com/ 
#IMPORTANT!!!Please Setting the following Values! 
[root@web_1 ~]# vi /root/lvs_real.sh 
#!/bin/bash 
#http://jimmyli.blog.51cto.com/ 
#Config realserver 
SNS_VIP=192.168.9.200 
    
/etc/rc.d/init.d/functions 
    
case "$1" in 
start) 
             /sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP 
             /sbin/route add -host $SNS_VIP dev lo:0 
             echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
             echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
             echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
             echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 
             sysctl -p >/dev/null 2>&1 
             echo "RealServer Start OK" 
    
             ;; 
stop) 
             /sbin/ifconfig lo:0 down 
             /sbin/route del $SNS_VIP >/dev/null 2>&1 
             echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
             echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce 
             echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore 
             echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce 
             echo "RealServer Stoped" 
             ;; 
*) 
             echo "Usage: $0 {start|stop}" 
             exit 1 
esac 
    
exit 0 
[root@web_1 ~]# chmod +x /roo/lvs_real.sh 
[root@web_1 ~]# /root/lvs_real.sh start 
[root@web_1 ~]# ifconfig 
    
[root@web_1 ~]# echo “/root/lvs_real.sh start” >> /etc/rc.local

echo “===================== 测试LVS+keepalived ========================” 
#LVS_master、LVS_backup上开启keepalived,LVS_master先绑定VIP 
#http://jimmyli.blog.51cto.com/ 
LVS_master: 
    
LVS_backup:

#解析域名,测试访问
#测试关闭LVS_master,短暂的掉包后,LVS_backup马上接替工作
LVS_backup接替LVS_master绑定VIP
LVS_backup负责转发
LVS_master重启完成后,就会自动接回控制权,继续负责转发
#测试关闭其中一台realserver
通过上面测试可以知道,当realserver故障或者无法提供服务时,负载均衡器通过健康检查自动把失效的机器从转发队列删除掉,实现故障隔离,保证用户的访问不受影响
#重启被关闭的realserver
 
当realserver故障恢复后,负载均衡器通过健康检查自动把恢复后的机器添加到转发队列中
总结:
实际生产环境中,keepalived是非常稳定的,并且能够承受巨量并发数。
文章中没有涉及到后端真实服务器的架构配置,我认为一个完整的高性能WEB架构应该,后端也是重中之重的,完整的一部分,必备可少。
出处:http://jimmyli.blog.51cto.com/Jimmy Li Blog 。欢迎朋友一起交流,讨论。扣扣:柒⑥柒陆叁⑤叁伍
本文出自 “我站在巨人肩膀上Jimmy Li” 博客,请务必保留此出处





     本文转自jimmy_lixw 51CTO博客,原文链接:http://blog.51cto.com/jimmyli/736648,如需转载请自行联系原作者



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_746922.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

威联通架设php网站_如何使用群晖、威联通NAS进行网站自动签到?

本文仅做抛砖引玉,请小伙伴们自行深入研究,欢迎交流。写在前面hello,大家好,爱折腾,爱捡垃圾,人见人爱花见花开的来自张大妈的晋升奶爸的垃圾佬来啦。今天为大家带来的是docker下的自动签到应用——qiandao…

尴尬!Facebook 员工被爆在亚马逊网站上给自家产品刷好评

西雅图IT圈:seattleit【今日作者】宇直宇宙第一直男Facebook 去年十月份发布了一款新的家用视频和智能音箱 Portal这也是第一个以Facebook命名的硬件然而该产品已经被爆出收集用户信息以帮助 Facebook 推广广告就在上周又被爆出 Facebook的员工在亚马逊上给 Portal …

拜登上任高价引诱“白帽子”挖漏洞,白宫网站却暗藏招聘“彩蛋”

更多黑客技能 公众号:暗网黑客 近期,美国国土安全部和 HackerOne 平台共同推出了Hack the Army 3.0 漏洞奖励计划。 想想就很让人心动,作为一名白帽子,如果挖到政府官网的漏洞,立马就树立起了国家安全守护者的光辉形象…

网友发了个钓鱼网站,我用 Python 渗透了该网站所有信息

更多黑客技能 公众号:渗透师老A## 前言:这篇文章不是像大佬们所想的那样是来炫技的,更多的是来给大家科普一些实用的渗透工具和方法,我相信不是所有的人都用过文中提到的这些方法。来看看吧~刚才在知乎上看到一篇文章《你的QQ号是…

快速找出网站中可能存在的XSS漏洞

更多渗透技能 欢迎搜索公众号:白帽子左一作者:汤青松 地址:https://zhuanlan.zhihu.com/p/42604854 一、背景 在本篇文章当中会一permeate生态测试系统为例,参考文档:利用PHP扩展Taint找出网站的潜在安全漏洞实践 二、漏洞简介…

代码审计 | 入门MVC框架之私密小网站

> 更多渗透技能 欢迎搜索公众号:白帽子左一作者:掌控安全- 秋紫山 因为自己一直在学习用python编写小工具,然后看到了一些文章关于扫描网站后台备份文件的脚本 我就参照着写了好久的脚本代码,都是低效率代码 然后勉强算是写…

Nginx主配置参数详解,Nginx配置网站

Nginx主配置参数详解,Nginx配置网站 阅读目录 1.Niginx主配置文件参数详解2.Nginx.conf配置文件详细说明(附备注)3.Nginx代理网站回到顶部1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx。博文地址为:http://www.cnblogs.com/hanyinglong…

经典网页设计:超炫的动画效果单页网站设计

单页网站是把所有的内容都展示在一个页面中,这样访客就不需要跳转到其它的页面。如果一个网站的内容不是很多而且将来内容也不怎么增加的情况下,那么制作成单页网站(Single Page Websites)的形式是很好的选择。 随着视差滚动&…

西雅图SEO初创公司被收购

西雅图IT圈:seattleit【今日作者】拖拉机IT圈里的拖拉机01西雅图SEO软件初创公司Moz 上周宣布被J2 Global的子公司iContact收购Moz 2004年由Rand Fishkin和他的母亲Gillian Muessig在西雅图创立最初的名字是SEOMoz后来成长为了西雅图地区的顶级初创公司02Moz这17年也…

SEO光辉道路

SEO是英语Search Engine Optimization的缩写,即搜索引擎优化。它又被泛指为进行搜索引擎营销的工作,以及从事搜索引擎营销的人。如今,所谓的“网络营销专家”也喜欢称自己为SEO。 我从1999年就开始从事SEO的研究和实践,不是在网络…

Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

目录配置环境了解HTTPS配置CA证书服务器新建示例网站并发布在IIS新建自签名证书并配置HTTPS 故障排除 其它机器无法通过访问配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型:64 位操作系统 了解HTTPS 为什么需要 HTTPS…

WordPress 网站迁移

最近想把本地的WordPress迁移到我的Linux虚拟机里面,是不是很无聊,哈哈哈,接下来就是一过程了,其实这个和迁移到线上是一样的, 1、首先将本地的文件WordPress通过FTP传到虚拟机上; 2、然后将本地的数据库导…

漏洞网站DVWA的搭建

一、系统介绍 全名叫Damn Vulnerable Web Application,是一个基于PHP/MYSQL的web应用。专门就是为了帮助安全测试人员去学习与测试工具用的。就是搞了一个应用,有各种各样的漏洞,专门让你用来联系安全测试的. 二、安装 1.安装环境 1 到http:/…

用户体验分析 是什么让用户离开您的网站?

之前在图说网上看到一张图片,主要讲的是用户体验方面的,感觉很有意思,所以就想写出来,看看你的网站访问者是否因为这些原因而退出的呢?从而提高你网站的回头率,提高用户体验。 错误导航 当用户进入你的网站的时候&…

ISA Server中***客户端打开非80端口网站速度慢的解决访问

ISA Server中***客户端打开非80端口网站速度慢的解决访问 河北 王春海 某政府信息中心,使用ISA Server组建***服务器,所有需要访问政府内网的用户需要用***客户端访问上级政府内网,网络拓扑如图1所示。 图1 ***网络拓扑 在图1中,有…

【转】分享36个收集精美网页设计作品的网站

分享36个收集精美网页设计作品的网站36 Aspiring Galleries You Should Visit To Get Amazing Web Design InspirationRead more: http://www.smashingapps.com/2011/03/24/36-aspiring-galleries-you-should-visit-to-get-amazing-web-design-inspiration.html#ixzz1JNA1VbxET…

什么?你居然还不会分析网站加密算法?某翻译网站JS算法还原实战

站点:aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw 1.分析 首先输入内容后会立马自动返回翻译结果,观察network发现发送了一个XHR请求。 经过多次发送对比后发现,salt、lts、sign为每次会变化,salt、lts参数应该是时间戳,但是…

PC比电脑好玩的秘密是什么?答案就是因为有这些神奇的网站!

五花八门小工具合集http://www.nicetool.net/ 该网站真的很“乱”!因为里面的小功能真的很多!无论是Gif制作、证件照换底色、还是搞笑的王思聪微博生成,它都能让你得心意手! 根据你的星座推荐电影https://magicmoviesorter.com/ 如…

Slog28_支配vue框架初阶项目之博客网站-文件结构调整

ArthurSlogSLog-28Year1GuangzhouChinaAug 1th 2018GitHub掘金主页简书主页segmentfault当你头脑发热的时候 手足无措的时候 记得 先面对遇到的事情和问题 先看清自己 认清问题 然后把解决方法一个一个记下来 最后选择一个合适的方法去解决 开发环境MacOS(High Sierra 10.13.5)…

20个神奇的伪Flash网站

为什么80%的码农都做不了架构师?>>> 不要以为下面的这些网站是使用Flash做的,它们实际上是使用老式的HTML和CSS构建,也会有少许的JavaScript,同样也能达到出乎意料的动画效果。 1. Emilie Crssrd 该网站做了很多设计…