• Vibe 2025

    Vibe Everything.

    AI以一种前所未有的方式在剧烈演进, Blazing Fast.

    In the memories, for the memories, Past away.

    永远相信美好的事情即将发生.

  • For 2024

    For Happiness in the New Year.Stop Overdoing Everything

  • 打卡2023

    12.1

    多少记录一下,Mark一下先。

  • lately 2022

    打个卡吧。

    2022宏观世界事情有点多,感受衰退。

  • 我在用的一些Self-Hosted服务

    2年前到现在一直在把一些在线服务东西改为自托管,增加可控性。

    下面是清单(可能也有遗漏,后面会补充):


    文件同步:Syncthing
    存储云盘:NextCloud
    即时消息:Mattermost
    密码管理:BitWarden
    对象存储:MinIO
    代码仓库:Gitea

    我所使用的设备(按照接入顺序):

    No.设备用途/说明
    1烽火光猫HG260电信光纤配送的接入网关,联系电信客服改为桥接拨号。
    2新路由3拨号主路由和无线AP。
    MTK7621A的芯片,也是一款比较经典的路由,刷了OpenwWRT 18.06.1。
    跟其他人不同的是我没有在路由上增加更多的功能,是因为路由的性能其实比较弱鸡,再跑其他服务容易死机。
    3猫盘CatDrive旁路由和主力网关。
    一款矿渣产品,50多块购入,刷了Armbian(Debian 10)系统,把这个作为旁路由,家里所有其他设备的网关都指到了这台设备。
    这台设备自带SATA接口,买了一块SSD装上去,作为备份机,备份工具用的是rclone和restic。
    这台设备还搭建了WireGuard服务,在主路由做了WireGuard的端口映射,在外网可以随时连到家里的内网。
    4华擎Beebox N3150一台低功耗NUC,尺寸12cm x 12cm左右。
    外接一块10TB的WD移动硬盘,作为主力存储,用的是ZFS文件系统。

    安装的是 Ubuntu 18.04 操作系统,服务以Docker的方式运行。

    DDNS做了三个作为冗余备份:
    1、cloudflare,通过dns-lexicon写脚本进行更新;
    2、dynu,shell脚本更新;
    3、duckdns,shell脚本更新;

    服务访问方式:
    之前的方案是直接对外暴露端口,后来看到有人说通过端口直接访问自己的NAS被上海电信封停封停宽带,于是改为通过Wireguard接入到内网访问大部分的服务。

    Syncthing是不受内外网影响的,它自己有节点发现机制。


  • 浮生记

    最近看的书:
    李录《文明、现代化、价值投资与中国》

    最近用的框架:
    wagtail

    Blog的主题换了一个极简的arke。
    干扰太多、信息过载,多做减法倒是件好事。

    我向往的:

    来自推特用户MengTo

  • 基于OpenSK来DIY SecureKey

    Mark一下,Google 出了一个OpenSK的开源加密Key方案。
    等快递恢复落实起来。

  • A Byte of Serverless

    最近1个月业余时间在玩Serverless多一点,这里做一下记录。

    现在的服务开发趋势基本沿着这样的路径在发展:
    服务化(SOA) -> 微服务(Microservices) -> 服务网格(Service Mesh) -> Function Service (Serverless)
    看下面的图片会更直观一些(文末会附带一些阅读资源,内容更完善):


    Serverless直接从字面可以看出来,服务开发者无需关心服务器运维,只需要做好服务功能开发,高可用、服务容量扩展都无需关心,大大降低开发者的负担。

    把一个个服务以函数的方式暴露出来。
    前台的应用拼装调用函数实现服务。

    厂商

    基本上主流的云服务都提供了Serverless服务,这里说一下我实际操作过的几家。

    国内厂商:
    1、阿里云 函数计算FC
    2、腾讯云 无服务器云函数SCF

    国际厂商:
    1、Amazon AWS Lambda
    2、Google Cloud Functions
    3、Google Cloud Run

    独立Serverless提供商
    1、now.sh / zeit.co

    语言支持

    PHP:阿里云、腾讯云、zeit.co
    Python:全支持
    Nodejs:全支持
    Java:全支持
    Go:Google Cloud、zeit.co
    其他还有一些语言支持这里不展开说明。
    之前Serverless的一个问题就是语言版本相对比较滞后,但就目前看下来,主流服务商基本都可以用到较新的版本,比如Python 3.6,Nodejs 10.x 等。

    开发工具包

    Serverless现阶段的一个问题就是跟厂商的云服务强绑定,如果说是你的服务是基于AWS来构建,那后面想要迁移到其他云服务并不是件容易的事情,需要改造你的应用代码调用新的厂商的后端服务。但代码基本的运行环境是一样的,这个不用担心。
    对于服务依赖的问题:
    1、有个基于Nodejs的Serverless程序开发框架,对上层应用层抽象,下层把云服务进行封装,适配不同的云厂商(目前支持8家);
    对于环境依赖的问题:
    1、今年发布的Google Cloud Run采用的方案是部署Docker镜像,这种借助了Docker来解决环境适配的问题。

    Serverless服务开发我自己是主要使用了Python 3.6,下面列举一下相关工具包:
    1、https://github.com/Miserlou/Zappa AWS Lambda部署工具
    我写的小服务是部署在AWS Lambda,所以我对Zappa有实践经验,下面两个木有。
    2、https://github.com/serverlessplus 腾讯云
    3、https://github.com/aliyun/fun 阿里云

    now.sh / zeit.co

    特别单独说说一下这家独立厂商,结合了github的玩法比较有趣,授权github之后,push代码到github的仓库,会自动部署代码到zeit服务器,推荐大家玩一下。

    其他

    关于服务计费:Serverless真正实现了“按需付费”,应用程序触发执行的时候才计费。对比目前的云服务器,即使你的应用程序无人访问,也需要支付托管费用,这点上Serverless优势很大。
    关于服务扩容:无需关心。
    冷启动问题:Serverless由于不是常驻服务,如服务没有预热,冷启动的时候响应速度会稍慢(0.x秒),所以这里常见的方案是设置一个定时触发器将应用程序warmup,缓解冷启动速度慢的问题。


    我开发的小服务

    ProgressBar(进度条):https://progressbar.net/
    功能是计算当前时刻年月日的百分比进度。
    是偶然的一个机会在Twitter看到一个号:https://twitter.com/ProgressBar201X 得到启发,于是做了这样的一个小服务。
    基于Python 3.6开发,开发框架是Flask,使用Zappa部署在Amazon AWS Lambda里。
    ====
    机器人提醒:这个是工作上的小工具,对接了企业微信的群机器人接口,发群消息。使用的是PHP开发,用的是阿里云函数计算。

    尾声

    最近Python、Nodejs都用了不少,几种语言换着写的有点精神分裂了:P

    新的玩具:之前一直计划弄个软路由来着,但NUC只有单个网口。昨天买了一个USB的千兆网卡,后面打算把NUC配置一下路由功能,这样NUC就真的变为:
    路由、存储、影音播放一体化的终极设备了。

    阅读资源

    https://serverless.ink/
    http://jolestar.com/serverless-faas-current-status-and-future/
    https://amio.github.io/serverless-zhcn/
    https://jimmysong.io/posts/what-is-serverless/
    https://martinfowler.com/articles/serverless.html
    https://aws.amazon.com/cn/blogs/china/iaas-faas-serverless/
    https://aws.amazon.com/cn/blogs/china/lambda-serverless/