跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 来说说自己业余项目的技术栈
未分類
1 11 月 2020

来说说自己业余项目的技术栈

来说说自己业余项目的技术栈

資深大佬 : ga6840 3

先说一下我的:

OS: Debian
数据库:Postgresql
鉴权:JWT
前端:Vue3 + PrimeVue + Webpack
后端:nodejs + C + php
Gateway: OpenResty
容器编排: Docker Swarm
CI: Github Actions (目前只是自动构建容器并推送)
编排自动化 /自举 /Dashboard:自己写的(叫做 Calabash )
监控:Prometheus + Grafana + node-exporter
存储同步:rsync
TLS 以及自动更新证书: Let’s encrypt + acme.sh

大佬有話說 (100)

  • 資深大佬 : oneforallsoft

    os:win10 + debian
    数据库: mysql + pgsql
    鉴权:JWT
    前端:Vue2 bulma jquery nuxt
    Gateway: apache
    容器编排: 无
    CI: 无
    编排自动化 /自举 /Dashboard:无
    监控:无
    存储同步:无
    TLS 以及自动更新证书: Let’s encrypt

    还有后端: php laravel + Go + java

  • 資深大佬 : kop1989

    都整这么复杂?

    系统:windows,
    web 容器:IIS,
    数据库:.txt,
    鉴权:自己鉴,
    前端:jQuery
    Gateway: 没有
    容器编排: 人肉
    CI: 人肉
    编排自动化 /自举 /Dashboard:用不着
    监控:自己写
    存储同步:人肉
    TLS 以及自动更新证书: 用不着

  • 資深大佬 : raaaaaar

    @kop1989 #2 秀儿

  • 資深大佬 : danRen

    OS: Centos
    数据库:mongodb
    鉴权:JWT
    前端:Vue + Webpack + uni-app
    后端:nodejs
    Gateway: nodejs
    容器编排: Docker
    TLS 以及自动更新证书: Let’s encrypt

  • 資深大佬 : acmore

    OS: Ubuntu Server
    数据库:MongoDB / Redis
    鉴权:JWT / OAuth 2.0
    前端:Vue 全家桶
    后端:NodeJS / Python / Java
    Gateway: Kong
    容器编排: Docker Swarm
    CI/CD: Github Actions / Azure Pipeline
    编排自动化 /自举 /Dashboard: None
    监控:Netdata
    存储同步:None
    TLS 以及自动更新证书: Let’s encrypt

    实际上大部分情况下连容器都不用,自己写部署脚本或者直接放在 CD 里。

  • 主 資深大佬 : ga6840

    我选择的理由主要也是尽量减少自己维护的负担啦,没想到还被评价复杂 (哭

    其实一开始也是觉得怎么这套技术栈不那么主流,所以想贴出来,如果用主流 k8s 的欢迎讨论一下使用场景和原因。

  • 資深大佬 : chendy

    语言:java

    没了,就一给自己用的库

  • 資深大佬 : kphcdr

    @kop1989 人工智能

  • 資深大佬 : coolmenu

    postgresql + hasura

  • 資深大佬 : kop1989

    btw,安利一下现在正在玩的:星际争霸 1 代 AI
    星际争霸 1 代的 AI 是由第三方 hack 的 framework 来实现的。目前生态很充足,既能用纯脚本,也能用机器学习。
    我 2L 简陋的 jquery 项目就是一个我自己在用的,星际争霸 1 代 AI 的对练平台。

    我采用的 AI 策略是运营脚本,战斗机器学习。
    欢迎加入开发星际争霸 1 代 AI 的圈子。

    学习资料:
    https://sscaitournament.com/index.php?action=tutorial
    https://zhuanlan.zhihu.com/p/33897686

  • 主 資深大佬 : ga6840

    有用 MongoDB 的,大家可以看看黄东旭的评价

    https://www.bilibili.com/video/BV1nJ411T7Vm/#时间:54:32

    当然很适合数据小的时候的小项目,但是我主要担心的是 MongoDB 在安全方面的不足,而且这个公司噱头比技术更厉害。

  • 主 資深大佬 : ga6840

    @kop1989 及时策略的 AI OpenAI 应该做到极致了吧?可以看看 PPO 算法?中间的奖励最好用人工定义,我记得看过他们的一个视频提到很多人工自己定义的 奖励场景,用来克服奖励稀疏问题。

  • 主 資深大佬 : ga6840

    @danRen 是在做小程序吗?

  • 主 資深大佬 : ga6840

    @acmore 好奇问一下,请问选择 Kong 的原因是什么?有没有考虑 OpenResty?

  • 資深大佬 : xcstream

    nginx nodejs mysql redis

  • 資深大佬 : jones2000

    只会 c++, 提供 c++业务动态库给其他语言调用 如 py, .net, nodejs,java

  • 主 資深大佬 : ga6840

    @acmore 另外,我知道很多人都不选择容器,而是用 Ansible 之类的。这样的好处当然可能性能上有一定优势(可以减少内存占用)但是隔离性不好,隔离性不好有安全问题也有部署问题。比如你不能在同一台机器上同时运行系统级的包管理安装,所以这样做一般都是一个脚本只能运行在一个节点上(比如 VPS ),也就没有办法更细化的占用整个集群闲置的资源。

  • 主 資深大佬 : ga6840

    容器化还有一点非常好的,就是方便 DevOps,程序员如果参与到自己代码的部署,可以写和部署环境无关的 Dockerfile,这样就可以在本地测试。

  • 資深大佬 : acmore

    @ga6840 平时自己的项目用 Docker 比较容易引入额外的复杂度,且一般情况下 Server 就部署这么一套服务,不用考虑隔离性。当然工作以及复杂项目上容器化是肯定要做的,因为没有更好的方案,另外我在开发时也用,不过大多是用在测试和破坏性实验上,主要就是用到它的隔离性特性。总结来说就是不同场景用不同工具,Docker 不是万能的锤子,也不是所有的项目都是钉子。

  • 資深大佬 : acmore

    @ga6840 选择 Kong 就是用习惯了,没有特别的考量。目前不打算换,而且说实话很多小项目用 Kong 也不是特别有必要,只是用上会显得技术栈丰沛一点。

  • 資深大佬 : xuanbg

    OS: CentOS
    数据库:MySQL
    鉴权:自造轮子 Token
    前端:React
    后端:Java
    Gateway: Spring Cloud Gateway
    CI: Jenkins
    日志:EFK

  • 資深大佬 : NewIPIsComing

    把吉他彈響,自覺蠻好聽

  • 資深大佬 : caicaiwoshishui

    @ga6840 好奇你的项目是部署在多台机器吗? docker 镜像是自建 harbor 吗还是?

  • 資深大佬 : lidashuang

    不是业余项目吗?
    都整这么高大上,用 php 太 low 了?

  • 資深大佬 : skypyb

    你们的私人项目技术栈都这么牛逼,都是照着高并发大流量的场景设计的。
    想必都是人均百万用户的大站长吧

  • 資深大佬 : tikazyq

    OS:
    数据库:
    鉴权:
    前端:
    后端:
    Gateway:
    容器编排:
    CI:
    编排自动化 /自举 /Dashboard:
    监控:
    存储同步:
    TLS 以及自动更新证书:

    我是根据这个 44k+ stars 的项目来扩展自己的技术栈的 https://github.com/kelseyhightower/nocode

  • 資深大佬 : eudore

    OS: 容器 alpine
    数据库: Postgresql
    前端: Vue(不使用 nodesjs 和 css 库)
    后端: GO
    后端框架: 造轮子
    权限: 造轮子(acl/pbac/rbac 混合)

  • 資深大佬 : undefinedfalse

    @tikazyq #26 学习了

  • 資深大佬 : xuanbg

    @skypyb 兴师动众搞了个能建 100 层大厦的的基础,然后上面只盖个三层小,看上去确实挺浪费的。

    但是,100 层大厦的的基础搞都搞了,放着不用非要另外搞个只能建 3 层小的基础是不是更浪费?微服务的好处就是一次投入建设,然后你终身都能受用这一套基础设施。不管是盖三层小还是百层大厦,你往上盖就完事了,不需要重新打基础。

  • 資深大佬 : foMM

    业余项目能用这么多技能也是牛逼,不知道都是一些什么样的大项目……

    我的业余项目就是写写博客,做做视频什么的

  • 資深大佬 : XIVN1987

    Python + PyQt

  • 資深大佬 : mwVYYA6

    @undefinedfalse xswl 这是个搞笑项目 你学个

  • 資深大佬 : OldActorsSmile

    php+mysql

  • 資深大佬 : skypyb

    @xuanbg 你说的是没错, 但是私人项目的体量连集群都不一定能用到, 更别说分布式和微服务了。。。

  • 資深大佬 : ChuYangshisan

    @kop1989 我直乎内行

  • 資深大佬 : buruoyanyang

    OS: Centos
    数据库:MySql
    鉴权:JWT
    前端:AntD
    后端:Java
    Gateway: Spring Cloud Gateway
    容器编排: 么得
    CI: 么得,准备上 git-runner
    编排自动化 /自举 /Dashboard:么得
    监控:么得
    存储同步:人肉
    TLS 以及自动更新证书: 么得

  • 資深大佬 : meshell

    @ga6840 我只想知道用了几台服务器。哈哈

  • 資深大佬 : xuanbg

    @skypyb 每个服务只启动一个实例就行了

  • 資深大佬 : nutting

    mac 市场占有率不行了啊,os 一个没有

  • 資深大佬 : mingl0280

    os:ubuntu server
    数据库:mysql
    后端语言:php
    前端:vue.js
    ci:要 ci 干啥,平时上班 Jenkinsfile 工作量不足?
    其他:人肉
    证书付费的,不能自动更新

  • 主 資深大佬 : ga6840

    理解,我也同意有些场景不需要容器。但我自己的感觉是加了容器以后我的维护复杂度减少了,看上去系统依赖了容器,但是维护起来反而容易。

  • 主 資深大佬 : ga6840

    @caicaiwoshishui 是的,一个个人的搜索的项目,目前需要至少 12 个 VPS 。Docker 镜像国内用 uhub, 国外的话用 DockerHub, 不行备用 fallback 到 ghcr 上。本来很倾向 ghcr 的,但是貌似他家 beta 阶段过了以后的价钱很贵,而且实际使用当中 push 的速度经常比不上 DockerHub 。目前看上去够用,自建镜像好像还没有需求。

  • 主 資深大佬 : ga6840

    @skypyb 是个搜索引擎,一个节点肯定不行。即使你不要可用性,sharding 也是必须的。

  • 資深大佬 : skypyb

    @ga6840 搞这么多节点, 每年要花的钱也不少吧。 是项目有盈利么

  • 資深大佬 : debuggerx

    开发 os:deepin
    服务器 os:debian
    数据库: mysql + pgsql
    鉴权:JWT
    前端:React Next.js
    UI 框架:Material-UI
    移动端:flutter
    桌面端:PyQt Electron
    小程序:Taro
    Gateway: nginx
    后端: Node python go java

  • 主 資深大佬 : ga6840

    来说一下为什么我要这么多的机器。首先,个人资金有限,考虑到项目不盈利,目前也不会投入太多成本。在这个条件下,我个人倾向最便宜的节点然后跑集群。比如 Linode 5$ 的节点跑四个(在我这个场景下)绝对比 20$的节点快。

    但是单个节点的能力很有限,那么我需要很多服务和 sharding 的话就要很多节点。

    我现在最小系统就有好多服务:gateway, calabash, 用户数据库,鉴权服务,calabash UI, 登录 UI, prometheus, grafana,corpus 同步服务( 4 个节点 4 个服务),爬虫( 4 个节点 4 个服务),索引器( 4 个节点 4 个服务),索引同步服务( 4 个节点 4 个服务),corpus 发送到索引器 的 feeder 服务,搜索服务( 4 个节点 4 个服务),搜索 mpirun 进程服务。最少 3*4 个节点了。

  • 主 資深大佬 : ga6840

    @skypyb 国外的 VPS 一个月 5 刀,而且我的提供商 Linode 提供了赞助。我之前的运维栈也是纯脚本,把爬虫和索引都放在本地,这样的话一个月 4 个节点就够了,也就是 20 刀。目前为了支持在线自动爬虫和索引更新,一个月花费是有点贵,但是也是可以靠自己的零花钱养的。当然,更好的服务上去了以后,也希望能找机会开始 monetize.

  • 資深大佬 : hpan

    @ga6840 敢问 lz 业余做的啥项目?

  • 主 資深大佬 : ga6840

    @mingl0280 不管是 Jenkins 还是 Docker 都是为了省时间、一劳永逸,怎么大家精神负担很重啊。公司玩自动化肯定也想节省各位时间的,只不过节省出来的时间是不是让你 996 就是另外一回事。大家看来被渣干了……

  • 主 資深大佬 : ga6840

    @hpan Approach0,一个数学公式搜索引擎。

  • 資深大佬 : Nillouise

    直接 docker-compose 不行吗?要用 Docker Swarm 做弹性扩展?

  • 資深大佬 : cassyfar

    @ga6840 有一说一,你这个项目挺有意思的

  • 資深大佬 : hbolive

    你们都太高达上了。。业余的还怎么复杂。。

  • 資深大佬 : coderunI

    简单一点不好吗?

  • 主 資深大佬 : ga6840

    @Nillouise docker-compose 可能不够灵活,不过和 Docker swarm 结合的很好。目前我还不觉得有必要用,因为我都是直接通过 docker-cli 或者 API 调用 docker 。 可以不用增加 docker-compose 这一层。当然,没有用过就不发表太多意见。

  • 主 資深大佬 : ga6840

    @coderunI 欢迎提建议

  • 資深大佬 : justrand

    我比较感兴趣的,美工设计原型这种你们怎么做的?

  • 主 資深大佬 : ga6840

    @justrand 自己的项目自己随便写,全靠 UI 组建。

  • 資深大佬 : namelosw

    Stack: Rails / Phoenix / Node
    前端: 不用 / React / Preact
    DB: SQLite / Postgres
    CI: 不用, 一个人自己跟自己还需要集成嘛…… 写个 shell 我自己就是 CI
    部署: Heroku / Kubernetes + Pulumi
    监控 Gateway TLS 啥的, Heroku Kubernetes 都有现成的

    大部分的选择都有简单复杂两个选项, 一般从简单的开始.

  • 資深大佬 : zzzzzzggggggg

    业务项目都这么厉害,主业应该更厉害吧

  • 主 資深大佬 : ga6840

    @namelosw 自己的项目用 k8s 会不会有些复杂,docker swarm 能不能满足你的需求?能否指点一二

  • 資深大佬 : namelosw

    @ga6840 K8S 用托管的挺简单的, 自己搭集群就坑爹了, 大的 AWS Azure GCP 都有, 小的 DO Linode 也有. Kubernetes 主要是上手有点复杂, 一旦会了其实挺简单的, 比如项目上用, 或者学习目的正好会了可以用用. 会用了之后还可以用 Pulumi 简化一下.

    Docker swarm 感觉有点鸡肋, 没深入用过. 不过 side project 应该都行, 用自己熟悉的就好.
    不过我觉得 Heroku 能解决的话还是 Heroku 这种最省事.
    如果说轻量的 alternative 的话, 听说 Nomad 挺好的, 好像还不用 Docker, 不过我也没用过.

  • 主 資深大佬 : ga6840

    @namelosw 学习了。我只是还不清楚除了之前 Docker Swarm 技术层面不太稳定以外,还有什么原因让大家一直留在 K8S 平台。我感觉 Google 高层能同意让 K8S 开源出来,直接威胁到自家的云服务,目的是什么还是不太清楚。只要 K8S 继续这么复杂,只要 G 家有所保留(比如不会开源 Borg ),就说明还有更好的开源产品有机会出现。

  • 資深大佬 : namelosw

    @ga6840 Kubernetes 我感觉现在比较有吸引力是生态已经起来了. 比如你说的 Prometheus Grafana acme 啥的都几个操作就 setup 好了.

    我觉得倒不是 Swarm 本身有啥问题, 而是比较鸡肋. 我感觉很多人应该跟我一样, 简单的就用最简单的 Heroku 或者 SSH 上直接 shell 一下, 再重的场景的直接 Kubernetes 因为正好已经熟悉了, 实际上几个文件很快也就弄好了. 一旦大部分人都熟悉 Kubernetes 之后, Swarm 这个不上不下的定位就很尴尬.

  • 資深大佬 : GoLand

    这么复杂一个人弄得过来吗?我那个老板服务器都不舍得开,我说要个 2c4g 的,给我压到了 1c2g 。。我也就一切从简了。
    服务器:阿里云 Ubuntu 1c2g
    数据库:阿里云 MySQL 1c1g
    鉴权:应用比较特殊,APP 不鉴权,管理后台 JWT
    后端:Python flask
    部署:直接用 docker-compose 跑,外面挡一层 NGINX 做转发
    其他就 Sentry 看报错,grafana + influxdb 做监控

  • 資深大佬 : DiamondYuan

    服务器:腾讯云 4C8G
    数据库:mongodb
    后端:nodejs and serverless
    部署:githubaction + (docker-compose + serverless)
    日志: aliyun + datadog
    前端: ts + react
    CDN 七牛

  • 主 資深大佬 : ga6840

    @namelosw 但是据说 Swarm 内存占用少,因为不需要再套一层。依赖也少了,不用一箩筐的把 k8s 全家桶全部引入。还有听说 Swarm 部署应该比 k8s 快。因为还没自己搭建过 k8s, 也暂时停留在从各种渠道了解的大致情况。

  • 資深大佬 : namelosw

    @ga6840 唉…… 部署速度其实是很小的一部分, 编译, docker build, pull image, CI 等等其实都很费时间. 我感觉这一套东西最重的一层其实是 Docker…

  • 資深大佬 : johnsona

    jwt 无法 revoke,退出登陆都做不了,我见一次说一次,你如果保存 jwt 就又是 session 了

  • 資深大佬 : mingl0280

    @ga6840 我连一劳永逸的一劳都不想做……我这玩意儿直接 ssh 推送到服务器上挂了就挂了呗……

  • 主 資深大佬 : ga6840

    @johnsona 退出登录是做不了。但是保存 jwt 和 session 不一样,session 是每个用户都要存一份信息,jwt 全局只有一个 token 。当然,为了安全这个 token 需要比较长的而已。

  • 主 資深大佬 : ga6840

    @mingl0280 那只能说明你的应用不需要这些。我搭个静态博客也不用这些。但你可以来试试搭建一个百万文档以上的搜索应用

  • 資深大佬 : IDAEngine

    azure 一把梭,爽

  • 資深大佬 : johnsona

    @ga6840 jwt 也是每个用户一个 jwt,不然你拿到 jwt 怎么识别这个用户是谁,只是 jwt 你不存而已,算哈希验证合法性而已

  • 資深大佬 : CismonX

    业余项目都是单纯为了自娱自乐做的玩具,功能简单,技术栈基本谈不上

    如果非说要有技术栈的话,无非是 ISO C + POSIX.1 那一套,偶尔调一些 platform specific API 和第三方库。加上 Autotools 用来构建,DejaGnu 写测试,Troff 或者 Texinfo 写文档

    也有其他语言写的项目,也基本同理,遵循小而丑(

  • 資深大佬 : xuanbg

    @johnsona jwt 只适合不需要鉴权的 2C 系统或者轻量级的 2B 系统。像我这种权限上千个的,只能自己造轮子。硬要用 jwt 简直是自己找死。几百 K 的 payload 你敢用?

  • 資深大佬 : kiddingU

    @ga6840 选择 kong 的原因是可以很方便的管理自己网关,同时有很多系统自带插件,同时自己开发插件也是很方便的,性能上来说,本事就是基于 openresty 开发的性能还是很强的

  • 資深大佬 : cloudhuang

    > Gateway: OpenResty (为了实现动态的服务发现,通过 docker service label 实现)

    朋友,这块可否详细点说说,谢谢。

  • 資深大佬 : ychost

    OS: Mac OS
    数据库:mysql/odps/redis/greenplum
    鉴权:JWT/Cookie
    前端:Vue2
    后端:Java/Node
    Gateway: 公司内部提供( vipserver )
    容器编排: 公司内部提供( sigma )
    CI: 公司内部提供( Aone )
    编排自动化 /自举 /Dashboard:自己写的(叫做 Calabash )
    监控:Grafana
    存储同步:No
    TLS 以及自动更新证书: Let’s encrypt + acme.sh

  • 資深大佬 : xunbug

    要啥技术栈,客户要啥需求,一边 github 一边 google,然后 copy&run 就可以了

  • 資深大佬 : tuboshuv1

    服务器:4g 内存+32g 固态捡的矿渣,预计会改 8g 内存,已加 500g 机械
    OS:CentOs
    DB:Mysql
    前端: layui
    鉴权:Jwt
    后端:Java
    网关:无
    容器:Docker
    CI:Jenkins
    监控:无
    存储同步:数据按月写入,按月导出,文件形式存储

  • 資深大佬 : zhuzhibin

    这里的老哥都好牛批啊 哎我是废物

  • 資深大佬 : Rheinmetal

    觉得 k8s 集群太大可以试试各种裁剪版本
    k3s/microk8s/minikube

  • 資深大佬 : mingl0280

    @ga6840 言必称百万,访问量千万……你个人搭个站都这个访问量,你也不用做这个副业了好吧……

  • 資深大佬 : Akagi201

    @kop1989 #2 真实, 其实业余项目谁弄那么复杂啊, 爬虫, 小网站不需要那些没用东西.

  • 資深大佬 : tairan2006

    业余搞项目不是讲究一把梭么,搞这么复杂干啥

  • 資深大佬 : wsydxiangwang

    一无所知,啥也不会,无知的我,路过路过。

  • 資深大佬 : lucybenz

    @xunbug 对 客户老爷您好,有啥需求,尽管提,不会的我可以学

  • 資深大佬 : justsosososo

    @johnsona 结合 redis 弄个 token 黑名单

  • 資深大佬 : ChrisZou

    后端:Ruby on Rails
    前端:Vue2 + TailwindCSS + Webpack
    数据库:Postgresql
    搜索:ElasticSearch
    OS: Ubuntu 18.04
    WebServer:Nginx
    TLS 以及自动更新证书: Let’s encrypt

    目前项目是开源的,感兴趣的可看看 https://github.com/ChrisZou/geekweibo

  • 主 資深大佬 : ga6840

    @johnsona 如果说是识别用户的话,在 login 的时候肯定需要从数据库里比照用户密码,但是给他 sign 了 token 以后(同时会把用户名 encode 进去),他的身份识别可以从后面 api 请求的 token 里面 decode 得到。

  • 主 資深大佬 : ga6840

    @johnsona 是的,用户的 JWT 他们自己存在自己浏览器,通过哈希验证合法性。传统 session 方式是需要在服务端验证 token 合法性。

  • 主 資深大佬 : ga6840

    @cloudhuang 可以参考 traefik 文档,openResty 可以替代他的很多功能。个人觉得 traefik 还不够成熟并且功能不够定制话。

  • 主 資深大佬 : ga6840

    @ChrisZou 强大。你怎么限制内容是技术的?如果有人灌水咋办

  • 資深大佬 : kazeik

    OS: mac os,windows
    数据库:mysql ,sqlite
    鉴权:
    前端:android ,flutter
    后端:java , php
    语言:java ,dart,php ,kotlin
    Gateway:
    容器编排:
    CI:
    编排自动化 /自举 /Dashboard:
    监控:
    存储同步:

    主要是做 app 开发的。基本上用到的都是跟 app 开发相关的东西
    可怜一个 vue 都没学会入门

  • 資深大佬 : Patrick95

    UMD / ES6-Modules /Less / Sass / Stylus / PostCSS / xiaozhu.win / macOS /

  • 資深大佬 : johnsona

    @justsosososo 那你其实就存储了 token

  • 資深大佬 : johnsona

    @ga6840 revoke 场景,比如退出登陆 冻结账户。还有就是说如果我的请求要记住上一步做了什么,这种就是有状态,你用 jwt 搞无状态不行的。当然 token 有一个好,不局限于浏览器

  • 資深大佬 : ChrisZou

    @ga6840 目前这个没有限制

  • 資深大佬 : totoro52

    @kop1989 老哥 TM 直接起飞

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具