API网关那些事

一个典型的Web架构中,网关是一个很容易被忽略的东西,或者透明般存在,而在云原生的微服务架构中,网关被赋予了更多职责,也变得更为重要。

1、反向代理时代
说到反向代理,不得不提Nginx,开源版的Nginx也仅起到反向代理的作用,常用来根据Host,Path来路由到不同的服务,做Stream负载均衡,SSL终结等,流量基本是透传,所以在后端看来几乎透明。且通过配置文件进行管理,一旦服务多了,难以维护。优势也就占用资源少,性能强悍。

2、边缘网关时代
在云原生时代,微服务众多,接入设备复杂多样化,一些重复度高的动作就必须抽取出来,而这些琐碎放到网关在合适不过了,以Apigee Edge为例,支持公有云、混合云、私有云部署,不仅做到API管理,还支持客户端管理,顶级层级为APP(Mobile or Web),可配置访问凭证,第二层级为Products,可配置环境(SIT or PROD),授权给APP访问,第三层级为API Proxies,即下面详解的API管理,绑定到Products,三层按顺序均为一对多关系,可参考OAuth2授权模式之密码模式。

API Proxy主要抽象出几个概念:

1、代理端点(Proxy Endpoints)
2、目标端点(Target Endpoints)
3、策略(Policies)
4、资源(Resources)

代理端点用来定义一个API,并对外暴露,主要与客户端打交道,目标端点则可以是后端微服务,也可以是公网上的另一个API,API支持环境区分部署,版本管理。

策略则是Apigee精华所在,策略是对请求做处理的最小单元,例如定义一个策略对参数进行校验、再定义一个对user&app token校验等,甚至执行js&java lib进行加解密等更为复杂的逻辑。策略通过Flow(处理流)来规定执行条件和执行顺序,一旦命中则跳过后续Flow。多个Flow又可以组成Shared Flows,以便复用。同样Flow也支持环境区分部署,版本管理。

资源则是放置js脚本或者java lib的地方,供策略调用。策略支持分环境来部署,支持版本切换,而这一切都是动态实时的,无需重启reload。

这样一来,到达backend的请求就已经是符合要求的了,可以省去很多的判断。

这里继续介绍一下策略,策略实质上是通过xml来定义,可分以下几种:
1、流量管理,例如Quota、Spike Arrest等,内置了数十种对流量进行管理的策略。
2、安全管理,例如Basic Authentication、OAuth、LDAP、JWT、HMAC等,同样内置了十分丰富,涵盖大部分场景。
3、协调与扩展,例如内置的XML&JSON格式互转。其中用的比较多的主要以下三个,可以非常灵活的将多个backend请求组合成一个API。
3.1、AssignMessage 请求管理
3.2、ServiceCallout 外部服务调用
3.3、ExtractVariables 解析响应

Apigee使用几个月来,初期学习成本比较高,但很多配置都是复用的,后续维护并不算太难。当然有了如此强大的功能,还有配套的trace工具,可视化的看到每一个请求的执行情况、入参和出参、请求头、策略命中与结果等,非常人性化,Apigee简单介绍到此,更详细请查阅官方文档,后续再对比一些开源方案。

文档地址:https://docs.apigee.com/api-platform/get-started/get-started

iPhone 13 Pro 拍摄随测

正在使用的主力机 Xs Max 由于是最低配的 64G 存储,早已不够用,尤其作为一个喜欢摄影的人来说,存储照片视频更显紧迫。直到今年的9月27日终于迎来了新机 iPhone 13 系列发布,第一时间下单了 13 Pro 远峰蓝 256G,足足等了半个月终于到手。

作为苹果的老用户,实际上并没有太大的惊喜,反而由于屏幕从6.5寸降为6.1,稍有失落。可能最大的惊喜还是来自背后三颗“巨大”的镜头,以至于任何一款保护壳都已无法撑平整。6.1这个尺寸怎么形容呢,单手略宽,双手显娘。当然,这再也回不去更小的尺寸了。平整边框个人感觉还是没有圆形来的优雅,握持感也会比较的压迫。

重点来了,拍照确实有大幅提升,三颗镜头的配合使得创作方式有了更多的选择,我喜欢用0.5x 1x 3x 来表述这三个镜头。夜景的拍摄是对随身设备来说是极具考验的,例如手机,运动相机等。我主要考察三点:

1、可见性,是指设备应能记录下可见画面,不应该出现大面积死黑。
2、可用性,是指由于高ISO带来的噪点可被接受,手持拍摄快门慢而不糊。
3、可创作性,记录的宽容度应能满足适当的后期与裁剪。

第一晚用自带的相机来拍摄(即刻相簿第一个链接),第二晚则是用了 Camera+ 2 这个 App 来拍摄(即刻相簿第二个链接)。这个 App 的好处是可以手动切换物理镜头,而不是自带相机的“智能”判断,根据苹果的算法,暗光环境喜欢用主摄 1x digital zoom 来实现 3x。并且 App 可关闭数码变焦,以免误触。可设置的 ProRAW+ 级别的画质(但短暂的体验并未发现和自带的 RAW 肉眼可见的画质提升,倒是体积翻倍了,约 35M 提升至 80M),自带的收藏夹可以方便的临时存放原片,不至于塞满相册。原片长按分享可以快速复制到 Lightroom 进行后期,再输出为 jpg 进行分享,有了工作流的概念。

链接一:https://igigm.com/post/JCt42KjcMSUi7rE6MFTmpV
链接二:https://igigm.com/post/Taff1DNvoAY7fHTiBLYPjD

链接一的糊片确实多,主要有两点,一是 3x 大多数是digital zoom,二是容易触发夜景模式,即长爆光。链接二则干净清晰很多。

以上只是个人初略测试,不做为严谨评测,未上脚架等辅助工具,仅供参考,总结:够用。

索尼KD-65X9100H 入坑记

入坑电视,大概就是意味着人到中年。

新房入住一年多来,一直没有安装宽带和电视,一是没有天天住,二来有不限流量套餐,能省则省,直到今年决定在这边过年,总得有个热闹。

故购买电视放到了首位,躺在购物车的型号是 75x9100H 已经半年之久,犹豫再三还是换成了65寸,原因是价格翻倍,可视面积仅大了 33%,这个预算买两个65,岂不爽呼,电视墙到沙发仅3.5米,65寸勉强足够了。对比Samsung,LG,全面屏之后外观都基本雷同,同档次价格也相差无几。综合硬件能力,操作系统,还是选择了索尼。来自官网的参数标注也是比较清晰。其他厂就是营销话术太多,根本不知道怎么选。

预约了上门安装,其实没有挂墙的情况下也没什么可安装的,就是两个人扶着,将两个底座插进去(无需拧螺丝),抬到电视柜上就完了,简单验了下屏幕,没有坏点,在软件市场下载当贝助手,里面就有检测屏幕的工具。

网络依然选择的是联通,联通在广东地区出口带宽还算优秀,只可惜老的光猫又得强制换新了。默认路由模式,十分钟不到就安装完了,安装师傅也爽快的给换成了桥接模式。

近些年来推广的这种光猫路由模式,确实给装机带来很大便利性,不用管什么拨号,账号密码,全部局端自动下发,新路由器可以零配置入网,缺点是多了一层NAT,有专业需求的人来说不太友好。

周末两天的使用来看 65X9100H 还是比较满意,使用电视主要有这两个场景:

一、高质量观影

通过 TypeC 转 HDMI 2.1 连接线可以让 Macbook Pro 以最高 4k 60P 输出到电视,播放本地 4K UHD 蓝光原碟,效果极佳,声音方面,由于已有一对惠威M300 HIFI 音响,采用 TOSLINK 光纤线连接,也可以用 3.5mm 莲花线,选光纤的好处是可以和电视自带的音响同时发声,达到互补的作用(电视的高频优秀,且有虚拟环绕声效,惠威箱子低频扎实,浑厚有力)当不看电影的时候也可以不开音箱,省电。

Motionflow 是我觉得体验非常好的一项技术,大部分24帧电影都能插值出类似60帧的流畅度,尤其在远景风光片中效果比较好,但由于是计算出来的,在近景格斗场景下,运动较快的物体会呈现出半透明或马赛克效果,尚能接受。

全阵列式背光技术也还不错,虽然达不到OLED那种完全可控,但也足够优秀,大面积黑色画面深邃感还是能感受到,与之而来的屏幕暗色区域反光也明显了,当然这得后续从客厅布光来解决。

二、日常刷剧

由于索尼和腾讯合作,内置了腾讯系的极光TV,资源还比较丰富,开通SVIP后体验会好很多,但资源质量还是不高,所谓的4K、HDR、杜比视界画质依然停留在低码率下(伪 4K),可能也是考虑大众的网络情况,占用带宽少,拖拽都不带停顿的。另外安装了芒果TV、CCTV.新视听,YouTube for Android TV 基本就满足了。

值得一提是在电视画质设置中专门为极光TV的画面调校,相当于将亮度饱和度等设置都由极光TV来控制,实际体验没什么太大的价值,反而会关闭Motionflow,得不偿失。

Apache Guacamole – All in WEB

1. Ubuntu 20.04 下安装 Docker,添加当前用户到 docker 组
curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun
sudo usermod -aG docker $USER

2. 拉取镜像
docker pull guacamole/guacamole
docker pull guacamole/guacd
docker pull mysql/mysql-server:5.7

3. 导出 guacamole 中的数据库初始脚本,启动 MySQL 数据库
docker run –rm guacamole/guacamole /opt/guacamole/bin/initdb.sh –mysql > initdb.sql
docker run –name mysql –restart=always -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:5.7

4. 复制到容器中,进入容器 MySQL Client
docker cp initdb.sql mysql:/initdb.sql
docker exec -it mysql mysql -uroot -p123456

5. 创建数据库、用户密码,导入初始脚本
CREATE DATABASE guacamole;
CREATE USER ‘guacamole’@’%’ IDENTIFIED BY ‘guacamole’;
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO ‘guacamole’@’%’;
FLUSH PRIVILEGES;
USE guacamole;
SOURCE initdb.sql;

6. 启动 guacamole
docker run –name guacd –restart=always -d guacamole/guacd
docker run –name guacamole –restart=always –link guacd:guacd –link mysql:mysql -e MYSQL_DATABASE=’guacamole’ -e MYSQL_USER=’guacamole’ -e MYSQL_PASSWORD=’guacamole’ -d -p 8080:8080 guacamole/guacamole

浏览器打开 http://localhost:8080/guacamole 默认用户名密码 guacadmin。配置好SSH,RDP,VNC,主机可以是内网中任何一台能访问的机器,RDP 注意关闭认证和选上网络级别身份验证(NLA)。配合御花园(https://ifport.com)将 8080 端口映射到公网,随时在浏览器中访问(注意安全)。

自此 All in WEB,Docker 大法好。

降级的主力机,升级的HP Gen8

主力机2018款 Macbook Pro 由于长期连电源和显示器使用,电池损耗过快,一年半不到的时间,容量就仅剩 77%,独显启用的时候,电池续航时间大幅下降。再着由于体积大,重量也重,很少出门带着,甚至在家里使用也不常挪动,于是很早就萌生了换成台式机 + iPad Pro 这种组合。恰好近期苹果也发布了全新的 M1 芯片 ARM 架构的 Macbook Air 和 Mac mini,各路评测性能爆表,价格居然还便宜了,于是便有了这次的更新计划。但不得不说苹果品控是越来越差劲了,老2013款 Macbook Pro 可是用了5年,电池损耗也没这么大,虽然结果是鼓包了。

实际上最佳选择应该是 Air 小巧,屏幕和性能是这次最大的升级,完全满足修图和写代码,但还是考虑到电池因素,放弃了。实际上还有一层考虑是选键盘还是选 Pencil,这么多年的键盘使用习惯依然是高效的选择,而这次,换个口味。主力机将由 Mini 承担,外出则 iPad Pro 承担,搭配 Pencil。购买之后便是漫长的等待了,16G 版本的 Mini,当时发货时间在2~3周,而 Macbook Pro 走京东回收,第二天就收走了,期间半个多月便没了电脑用,于是看向了角落里的 HP Gen8。

HP Gen8 躺在角落好几年,默默作为下载机和 NAS 存储,很稳定,配合自己写的御花园(ifport.com)远程开机,远程控制,已经好久没动过了。正好拿来过渡下,接上显示器,鼠标键盘,结果才知道内置的 VGA 接口仅能做点亮屏幕用,好不容易搜索到驱动,分辨率也只能达到1080p,还达不到显示器的 1440p,拖动窗口也是一卡一卡的,于是淘了一块 Asus GT710 1G 半高刀卡,完美解决。功耗小,无风扇设计,非常适合 NAS 使用,不产生噪音,关键是便宜,才199。临时用下再好不过了,能看 YouTube 1080p,本地 1080p 也能流畅播放,4k 就免了,不支持硬解,4k 至少得上 GT1030,似乎没有无风扇设计,就放弃了。

过去的一年拍照次数少了,产生的素材体积却更大了,航拍的 4k 素材,A7iii 的 RAW File,占据了大量空间,顺便也再添置一块4T硬盘,正好插满 Gen8 4个硬盘槽,总计12T够未来两年用了。总体来说是对主力机的一次降级,毕竟能满足使用的情况下,能省则省。或许我们对移动办公,似乎并没那么高,移动娱乐倒是常态。