2

微游技术部一周分享 20210925期

 2 years ago
source link: https://xmanyou.com/minigame-vip-dev-team-weekly-20210925/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

minigame.vip

关于微游互娱技术部

微游互娱,立足中国,面向全世界,致力于全球游戏发行。

作为一个小地方的小型初创团队的小技术部门,我们一直努力提高自己的专业能力,希望能够用自己的专业能力提高游戏发行的效率,提高游戏研发团队的合作满意度。

以此为目的,技术部内每周都有内部技术分享,希望通过学习、总结、分享,建立团队的技术氛围,提高团队和个人的专业素养。

我们都是一些普通的程序员,曾经很多人都没有自信,觉得自己分享的内容太普通了。不过,我一直觉得,分享,其实首先是写给自己的看的,其次才是写给别人看的。经过一段时间的实践,发现团队内每个人都有明显的成长。

以下是第20210925期的微游技术部一周技术分享内容,如果对你有所帮助,是我们的荣幸,如果你能帮助指出其中的错误,那是我们的荣耀。谢谢。

1. 后端开发

1.1. OpenTelemetry

上期介绍了分布式链路的标准 OpenTracing,这期介绍一下OpenTracing的后继版本OpenTelemetry。

目前,OpenTelemetry已经正式成为 CNCF 的孵化项目,OpenTracing 和 OpenCensus 不再维护, OpenTracing 目前是 CNCF 的存档项目。

详情请看: 分布式链路追踪初探2

2. JavaScript/TypeScript

本周分享一些JS/TS开发的工具:

2.1. 根据需要动态加载脚本并设置自定义参数

https://xmanyou.com/javascript-dynamically-load-script-and-set-parameters/

包括CocosCreator在内的很多游戏引擎,在打包成H5游戏包时,会使用动态加载js脚本的做法。

我们在开发自己的JS SDK时,考虑到需要为不同的平台加载不同的第三方平台SDK,借鉴了他们的实现,并加入了自己所需的功能:为js脚本添加自定义参数,满足特定平台SDK的接入需求。

几个要点:

  • 1). 使用document.createElement("script")来创建script标签,也就是HTMLScriptElement元素,然后添加到DOM树中。
  • 2). script标签的参数,动态加载时的属性名,不一定与script标签中的一致,建议查询文档,或者直接用setAttribute。
  • 3). 对于某些SDK所需的自定义参数,由于是非标准的参数,所以必须使用setAttribute的方法来设置。

2.2. 代码 xxx === void 0是什么意思?

https://xmanyou.com/javascript-what-does-void-0-mean/

一言以蔽之,就是用来判断是否为undefined

2.3. 异步等待方法waitUntil的实现

https://xmanyou.com/javascript-wait-until-condition-meet-or-timeout/

原理:利用setTimeout方法来轮询等待条件是否满足。

3.1. 使用ApiSix替换Nginx作为路由网关的一些经验

1). 如何备份设置

ApiSix 热更新配置,搭配ApiSix Dashboard可视化配置,都是很实用的功能,比较可惜的是,在数据备份上,虽然提供了Admin接口,缺没有一个完整的备份方案,需要自行开发。

目前版本,在ApiSix Dashboard中,仅在路由页面可以使用导出和导入OpenApi的方法来备份和恢复路由设置,而没有备份其他设置。

2). ApiSix Docker部署后无法启动

使用官方ApiSix Docker项目的示例docker-compose.yml文件直接部署,发现启动后一直重启,无法正常使用。
检查了一下,发现是etcd服务启动时报错了:

etcdmain: cannot access data directory

简单的解决方法是:将etcd_data目录设置为777权限:

sudo chmod 777 etcd_data

4.学习与调研

4.1. 一个高性能且低损耗的 goroutine 池

https://github.com/panjf2000/ants

国人开发一个高性能goroutine池。

4.2. Grafana全家桶

Grafana是Grafana Lab开源的一个数据可视化工具。但是除了Grafana之外,围绕着监控功能,Grafana Lab开发并且开源了一整套监控工具全家桶:

  • Prometheus: 数据监控 Metrics Monitoring
  • Loki: 日志监控 Logging
  • Tempo: 链路追踪 Tracing

另外,Grafana Lab还开源了一个压力测试工具:k6。

grafana-lab-products

4.3. 国内团队开源的k8s管理工具

  • KubeSphere: 青云团队开源
  • KubeOperator: 有开发了JumpServer的飞致云团队开源

这两个产品的功能与上周介绍的Rancher有一定的重合度,但又不完全相同,可以根据需要选择。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK