timzaak / blog

8 stars 1 forks source link

框架、技术关注列表 #43

Open timzaak opened 5 years ago

timzaak commented 5 years ago

新技术涌现太快。我这里会记录自己感觉以后能用的到的框架,技术。

timzaak commented 5 years ago

Actix 用 rust 编写的 actor system。 目前官方文档缺失,各种 WIP。 从 techBenchmark 来看,性能强悍。 和 scala 的 akka 相比,感觉 Actix 还处在单机上,actix-remote 已经被 archived,不知道为啥; akka 则已经有完善的 cluster 和 stream。 rust 的另一个 actor 实现:riker,从 api 上感觉就是 akka 复制品。已不活跃。估计没多少人会使用 rust 版本的 akka。 Actix 目前使用场景上,是做各个服务的客户端高性能异步通信基础+web框架。

所以关注而不用。

timzaak commented 5 years ago

Colossus 基于 akka + NIO 的 stateless web 框架。功能上相当于 akka http。 但由于抽象层少,内部来回发送消息少,所以性能也高。 简略看来,该有的微服务功能都有, websocket 也有。 有些心动想要替换掉 playframework。

所以关注并找机会尝试。

Update: 已经好久没更新版本了。 开发分支倒是有更新,提的 issue 很少。感觉会是一个坑。该项目基本已不再维护。

Playframework 目前也要有 Dead 的趋势,还是用些 Java 底层+ Scala 语法糖的框架比较持久。 Scalatra 就是你了!

timzaak commented 5 years ago

Typescript javascript 超集。 interface, numeration,static type 都是我想要的语言特性。 但是,我前端的核心框架是Vue, 一切都想围绕着它进行,而 Vuex 如果配上 Typescript,需要用 annotation 才会比较舒畅。目前讨厌 annotation。

所以,等 Vue3.0 吧,等 Vuex 能比较舒畅用 Typescript 写,或者有 Vuex 的替代者,再说。 另外,目前写的前端代码复杂度,真心不高。所以 Typescript 能给我的收益其实有限。

2022/03: 目前跳到 React,后续也是React,所以必用。

timzaak commented 5 years ago

lerna javascript项目管理工具,主要是有对大型项目进行细拆或者有 monorepo 需求时,可以用到。自己尝试用了一下,极度好用。另外由于项目包管理做的不太好,我自己以前在多个前端项目封装的小工具,都丢失掉了。有了这个 + git submodule 就完美啦! (git submodule 用来处理 链接 src 下的 应用)

pixari/component-library-monorepo 是一个很好的 Vue 体系下的入门参考项目。

所以到处使用。

目前开了个试验性项目 timzaak/vue-lerna-starter 用来实践 lerna 代码复用

2019/04/27 实践的结果是 基本符合预期。lerna 目标是框架级别的代码治理,很多功能都是为版本号、发包而准备的,对我而言,有价值的是

  1. .editorconfig 等可以一次性设置,N多项目复用
  2. 代码复用
  3. 代码仓库可以较为随意的组织
timzaak commented 5 years ago

redisql 基于 redis 支持 sql,还包含事务等,但想持久化的话需要付费。用 Rust 写的。目前对我来说,有很多场景是需要多维度缓存的。本想着用 mapdb,但是嵌入式,还用了 kotlin, 需要引入一堆 java 包。所以放弃掉 mapdb。 in-memory db 目前成熟的有 cassadra/ignite/aerospike/voltdb,但这些都太重。

在翻阅了一下源码之后,发现是将 sqlite 嵌入进 redis。 这就尴尬了。我如果要用 sqlite,为啥要混合着 redis 呢?直接用 in-memory 模式下的 sqlite 不是更好,还有一堆配置可供调优。

所以观察并尝试。 所以,放掉它。继续找轻量级的 in-memory db。

自己在探究了好多遍之后,轻量级的 in-memory db 应该是个伪命题。

还不如直接用 pg、mysql 实在。

timzaak commented 5 years ago

Apache Calcite, SQL解析工具, 目前各种流行的基于 jvm 数据处理引擎,都拿它来做SQL解析。以后所有关于数据处理的,如果要是以 sql 语句与客户端进行交互,那么 apache calcite 绝对为首选组件。先前老大有用它 + grpc 作为后端数据源交互方式,目前还未想到会有什么问题。

所以关注并有机会时,使用。

timzaak commented 5 years ago

camunda/flowable 业务流程管理(BPM)和工作流系统 。 这两者,目前没有细细的调研。 想了半天,除了未来要做 OA 系统,也不知道还有什么其它场景下要用它。 这两个项目感觉都挺牛掰的。留待用的时候再继续调研。 所以,仅作为兴趣备档。

正好有个审批流的模块,最后自己实现了。 至于bpm 的 xml => 代码, 阿里云出品了一个, scala 3的话,可以自己直接写个生成器就好了。

timzaak commented 5 years ago

minIO s3接口兼容的开源对象存储项目。

  1. 开发十分活跃。
  2. 有流行语言的sdk。
  3. 直接面向 docker 化部署。
  4. 文档十分详细。

虽说现代云对象存储已经十分流行,但在多云的上面,架上这一层,摆脱多云依赖,还是很有吸引力的。不过,还是需要针对不同云的接口开发一些。

如果以后有私有对象存储或架设多云对象存储需求,可以考虑使用 minIO。

minIO 最终向成本靠拢,而冷热转换一说, AWS 的 S3 做的好

timzaak commented 5 years ago

keycloak 优秀的 SSO 服务。 openldap 等都支持,作为企业内部账号管理工具,太棒了,先前搞过 CAS 和 openldap, 存在老旧,startup 太难的问题。 keycloak 还支持 postgres 作为数据存储, 整个 docker hub 的说明,简洁明了。 So Good!能快速搭建。

GitLab Keycloak 配置 GitLab wordpress Keycloak 配置

docker run --name keycloak -e DB_VENDOR=postgres -e JDBC_PARAMS='connectTimeout=30' -e DB_ADDR=self.noti.link -e DB_DATABASE=testkeycloak -e DB_USER=testabc -e DB_PASSWORD=testabc -p 8080:8080 jboss/keycloak

以后的企业内部账号管理,就是它了。

办公室网络 #82

timzaak commented 5 years ago

CoreDNS,Go 写的插件化的 dns 服务。k8s 内置 dns。用来做公司内部 dns 是一个不错的选择。Rust 写的 TrustDNS 目前还在开发中,无精力趟坑,所以目前的首选就 CoreDNS 了。在 CoreDNS 中配一些自定义 DNS, So easy! 有机会就用

timzaak commented 5 years ago

jumpserver 开源堡垒机。已经开始商业化,看功能OK。但具体没有尝试。估计超过三个运维了再去细看。

备档

用 Boundary 替换

timzaak commented 5 years ago

GoCD 自动化CI/CD工具。自己对这种工具的选择标准如下:

  1. 免费,或者便宜
  2. 多项目同时构建
  3. 多 git 代码可在一个执行单元中拉取(我的代码构建方式不标准所致)
  4. 开源,方便自己改
  5. 稳定,有插件
  6. 简单
  7. 支持 keycloak 等第三方用户登陆认证
  8. 良好文档

按照上面的标准,其实 jenkins 也是达标的,但用起来,总感觉麻烦,UI巨丑。 GoCD 其实两年前,我就关注了,但社区反馈很烂,文档也缺乏。现在看起来,该有的都有了,符合我的期望,具体稳定性等还是需要测试一下。

缺点:

  1. 没有 keycloak 插件。

概念介绍

测试考察

~~直接看 rancher pipeline 吧。#46 ~~ 闭源 Jenkins, 开源 Github Actions

timzaak commented 4 years ago

OpenFaaS, 基于K8S的 FaaS 服务框架,感觉不到使用点。确定不了价值,先备档。 Knative 目前而言,发展的比 OpenFaaS 好更多,更需要关注 Knative。另外 WASM 的 kubelet 也值得关注。

timzaak commented 4 years ago

bytedeco/javacv . java 视频处理 wrapper,主流的视频处理框架都有了。后续工作有可能用到,等做测试的时候,再继续补充。

该框架最核心的点是 JAVACPP比JNI 性能上要好。

timzaak commented 4 years ago

polynote 比我自己的 scala-remote-image 的解决方案简直好的不要太多。

由于刚出来,问题比较多,最简单说来,就是快捷键支持问题,后面估计会有人处理。

期望能在 Idea 中编辑,然后无缝上传上去。

timzaak commented 4 years ago

monkeyWie/proxyee mitm攻击代理 Java 版本,python 版本的 mitmproxy 不太好和 Java/Scala 混合在一起。

timzaak commented 3 years ago

关注了一下在 命令行里绘制UI, termion cursive 之类的。总有一个感觉,对于研发之类, ssh + remote host, 就能小小的实现远程办公一说,如果后面是是 fuchsia OS, 那么就是天然的多租户啦! vscode 支持 remote host, 估计后期 idea 也会加入该阵营 (Idea 新开了Fleet)。那么远程编写代码,就不是空话,而是一定可以做的啦!

Eclipse 基金会 搞了 theia 。 后续有可能会用的到。 目前有一堆 编辑器项目了,真用到了要现找。

timzaak commented 3 years ago

RedisGraph, 主要是想看看这个项目是如何解决在内存中存储与查找 Edge 和 Node。 它用 libcypher-parser 来解决 cypher 的语法树生成。 图算法存储相关的则是基于 GraphBLAS 库。目前 GraphBLAS 已经更新到 5.6.0 版本,支持 GPU 计算。 简单看下来,RedisGraph 更适合用来做图计算,更像是套了一层 redis 交互协议。 目前不支持分布式,后续估计也难。内存硬盘空间置换也是个大问题。所以,对我来说 Neo4j 还不可替换。

可参考 RedisGraph 内存图数据库原理 了解矩阵在图算法中的基本应用。

timzaak commented 3 years ago

tauri 应该是奔着替换 Electron 去的,但目前尚处于早期,很多开发Pattern,作者只是分析了优缺点,具体如何自己实践,还是要花费很大一番功夫的。以前做 Electron 开发的时候,尤其涉及相互调用,状态机同步,特别特的麻烦,不好调试,还容易出Bug。

tauri 本身还是基于 chromium 来做研发,不过在windows 下是用 webdriver2。 它的轻量级是合理的利用系统自带的 web容器,但安装包还是需要带上web容器,所以和 electron 打出的包一样大。

update: Electron 还是很好用的,最近的项目用了它。 tauri 还不敢上,再等等有无大厂进驻。

timzaak commented 3 years ago

MeiliSearch 是真牛皮。不过专注的在快速搜索上,所以数据集最好百G以下。对于输入框检索,95%的场景完全够用。而且简易部署,容易维护。除了分词目前只支持 jieba 以外,没啥大的毛病。

timzaak commented 3 years ago

scala circe json 序列化框架, 支持 decode sealed trait, 比 json4s 应该能更省代码,以后会从 json4s 切换到 circe。 但 scala3 貌似支持不太好,现在实际用的是 zio-json

目前优先选择 circe,scala 3 支持上来了。zio-json 相比于还需要写模板代码。

timzaak commented 2 years ago

rust sonic 倒排序索引服务, 低成本的全文索引。基于RocksDB, 更像是针对私有化部署的服务。

timzaak commented 1 year ago

Harvester 用来做服务器虚拟化,基于 K8S, 搭配 Rancher 很棒。 目前唯一不确定的是他的存储引擎实际效果如何, raid 5 和 longhorn 到底是啥关系?

timzaak commented 1 year ago

MobX 和 Redux相比, Redux 状态管理是全局化的,Mobx 可以更细粒度的管理。 在代码结构约束明确的情况下, Mobx可以获得更好的定制化。 两者哪个都可以。但若是考虑到组件的更精细化拆分,还是 MobX 更好一些。 zustand 出来了。

timzaak commented 1 year ago

Docusaurus 和 VitePress, 一个基于 React,一个基于 Vue3。看团队技术栈选择。都是做静态网站/Docs的好工具。目前看 VitePress 比较适合简单的, Docusaurus 功能集比较丰富,适合麻烦的,例如 version、blog 等

timzaak commented 1 year ago

RMQTT Rust MQTT 协议的实现。 EMQX Erlang MQTT 协议实现,已经商用,配套设施齐全。 国内有 JetLink、百度MQTT 等开源,已经构建成物联网平台。 RMQTT 还是只提供 mqtt 服务,没有物联网平台的概念。

timzaak commented 1 year ago

目前服务器追求 IO 极致性能的方向:

  1. 绕过 kernel IO:DPDK(网络)/ SPDK(存储)
  2. CPU 核并发: SIMD指令集
timzaak commented 7 months ago

Redash 报表可视化,相较于 Superset, 功能更集中于查询展示,方便轻量级快速出报表。但实际使用体验是不如 Grafana。

Redash、Grafana 都没有指标管理的概念。若是要扔给产品经理、运营去处理,还是需要 Superset

timzaak commented 4 months ago

pingora 代理基础库。写代理服务的时候可以调用它。 目前 k8s gateway 实现,envoy gateway 是目前看到能进入到生产阶段的。

timzaak commented 3 months ago

Rhai, Rust 脚本化。 性能OK,轻量级。相比于deno,会更适合以Rust为主,脚本化辅助的项目。

timzaak commented 2 months ago

https://ui.shadcn.com, 做工具类黑白主题的 React Web UI组件,也有 Sevlte、 Vue 版本。

timzaak commented 2 months ago

KDE/Krita 开源的手绘工具,制作绘图工具,需要多研究研究它的代码。以前研究过,但全忘了。 KDE 基于 Qt 开发,拥有各个类型的软件,编辑器、视频编辑器、邮箱等。https://apps.kde.org/zh-cn