新浪SAE使用总结

运行环境

  • 云空间环境:可能是虚拟机或者docker容器运行
  • 标准环境:应该是指的传统php虚拟主机架构
  • 独享环境:可能是虚拟机或者docker容器运行
  • 共享环境:利用语言运行时特性将一些应用放在一台机器运行
  • 容器环境:预配置的代码运行环境
  • Docker
    • Dockerfile
    • 镜像导入
    • 容器虚拟机:就是可以打包运行中的镜像

查看

zerotier设置为默认路由记录

1:网关开启IPv4内核转发,增加防火墙规则,将zt网段来的流量转成本地网卡IP发出去的
2:增加路由规则,将一个CIRD地址指向一个网关地址,网关地址是zt网段的地址

1
2
3
iptables -t nat -A POSTROUTING -o eth1 -s 10.242.0.0/16 -j SNAT --to-source 192.168.1.220
iptables -t filter -A FORWARD -i zt+ -s 10.242.0.0/16 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -s 0.0.0.0/0 -d 10.242.0.0/16 -j ACCEPT

删除:
1
2
3
iptables -t nat -D POSTROUTING -o eth1 -s 10.242.0.0/16 -j SNAT --to-source 192.168.1.220
iptables -t filter -D FORWARD -i zt+ -s 10.242.0.0/16 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -D FORWARD -i eth1 -s 0.0.0.0/0 -d 10.242.0.0/16 -j ACCEPT

3:在终端机器上设置allowDefault,以便让终端机器的流量能走到zt的网关

  • 最后还是未成功,感觉是流量没走到zt网卡,还是走了原来的”以太网“接口,所以还是可以访问外网,还是访问不到内网
    但是手机上的情况不一样,手机上啥也访问不到,感觉就像是流量走到了zt网络的网关地址,但是网关没有转发流量

  • 另一台网络架构较为简单的windows虚拟机也重现了这个情况,也是zt网络ok,没有互联网

查看

服务资源限制随想

今天在阿里云上将一个磁盘快照导出为vmdk的时候,忽然想到,如此耗费服务器资源的操作,是如何平衡计算给每个用户的呢?

在很久以前,网站主们使用同一个物理服务器上的虚拟主机,当一个网站疯狂占用资源时,会造成同机器的所有网站响应缓慢。

在近代,使用vps的网站主们不再有这个困扰,但是当IDC超售,邻居们都用满资源的时候,还是会导致自己的网站被波及。

现在都是云计算时代了,对于不同网站主的资源隔离得非常彻底,上面列举的情况几乎不会再出现了

查看

koolshare-lede DNS 导致的断网问题

在我的几个软路由上用了koolshare-lede,其中一个好好的(一样的设备一样的固件版本),但是另一个也不知道是升级后还是改了什么配置后,经常断网

在重启wan接口后有一定几率网络恢复,在重启后100%会恢复

有时候几天一次,有时候隔一晚上又能自动恢复

尝试过关闭ss之类的,还是会出现

然后怀疑是运营商的问题,后来换成光猫拨号直连AP,没有出现断网现象。

下级路由仍然是软路由还是断网,有一天终于忍不住了狠狠排查了一通,定位到了是dns无响应(所以浏览器不会显示域名解析失败,而是一直转圈),最后是直接curl外网IP才确定是dns问题

在百度上搜了一通 “koolshare-lede 断流” 找到这么两个解决办法

  1. 在网络-负载均衡中删除所有接口
  2. 在系统-软件包管理 卸载mwan软件包

我两个都操作了,后来一周果然没有再发生断网断流现象了

多客户端登录

但是无法像谷歌一样获取到计算机名和机器型号

多客户端登录流程

  1. 登录时带上本地设备信息,例如操作系统,分辨率等
  2. 每一个端登录后,会拿到自己独立的client_code,存入本地永久储存,每次续期和登录的时候带上
  3. client_code和token记录在数据表,有UA信息和js获取到的客户端信息
  4. 踢下线的话,就是把这个jwt token拉黑,迫使它重新用凭据登录
  5. 设置一个10分钟续期,用续期时间维护为最后活动时间,10分钟误差可以接受,而且上线后立即能更新状态
  6. 更新密码之类的,就是立即拉黑该用户所有jwt token

用途:

  1. 可以标记客户端是否为可信任设备,用来实现免密登录
  2. 可以看到在哪些设备上登录过
  3. 可以把某设备退出账号
  4. 可以实现“禁止新终端登录”功能
  5. 可以看到每个设备的最新活动时间

程序设计中的信息丢失

在程序设计中,我们可能没有注意到,一些可能很有用的数据被丢失

例如:

  1. 将采集而来的文章存入数据库时可能丢掉作者的信息仅存入作者名称
  2. 生成订单时没有冗余一份商品数据,优惠券数据等,导致后来商品信息产生变化,查不到订单中的价格从何而来
  3. 储存用户地址时,将省市区存成一个字符串,导致本来的省市区信息丢失,后面要统计某个省的购买量时无法做到
  4. 点赞只收集了点赞数而没有收集点赞人列表,导致无法实现“我点赞过的文章”功能
  5. 状态变化时没有记录状态变化历史,仅仅只是改变数据的status字段,导致数据的状态流转路线和时间节点丢失

一些很有用的数据,在我们当时可能用不到,但不要将它丢掉,尽量多的存下这些信息

云储存时代的业务文件储存

简单文件信息的弊端

文件上传和业务提交分开的架构中,如何标记有效文件和无效文件,指:“已上传,但未绑定到业务”,例如著名的 “微博图床”插件 就是利用这一特性吸血新浪微博导致储存被滥用

查看

为什么我不用redis

伪应用场景

redis 5种数据结构 及使用场景分析
中我看到一些redis的应用场景,在其他储存例如mysql中也能轻易做到
在这竟然可以拿出来当成最佳实践,这已经是redis滥用者能举出来的稍微体面一点的例子了

  1. 字符串

    1. 缓存:有过期时间
  2. list

    1. 消息队列
    2. 朋友圈的点赞列表、评论列表、排行榜:lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表。

查看

Docker 的网络模式

6种driver介绍

  • bridge
  • overlay
  • host
  • container
  • macvlan
  • none

bridge:

这是容器默认的网络驱动

很多教程说这是相当于交换机,说这种话的人根本不懂网络。

dockerbridge 相当于一个路由器,使用 bridge 网络的容器,处于一个下级路由器里

查看

鄂ICP备14007840号-1