V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ga6840
V2EX  ›  程序员

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

  •  3
     
  •   ga6840 · 2020-11-11 11:57:24 +08:00 · 12341 次点击
    这是一个创建于 1234 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说一下我的:

    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
    第 1 条附言  ·  2020-11-11 16:13:39 +08:00
    更新一下,说说我的理由

    OS: Debian (个人比较熟悉,也比较稳定)

    数据库:Postgresql (我的场景用 DB 不过,硬要挑的话还是挑一个比较简单强大的。不选择 MariaDB 仅仅觉得纯 C 写的学术派引擎看上去更厉害)

    鉴权:JWT (不用维护 session,只用保存一个全局 token 减少后端负担,增加鲁棒性)

    前端:Vue3 + PrimeVue + Webpack (上了 vue3 的车主要是想尽可能减少 bundle size, 也考虑过 svelte 但是感觉不太习惯 rollup,希望观察一下他的生态发展)

    后端:nodejs + C + php (项目本身有历史 c, PHP 代码,nodejs 的话和前端代码可以更统一、依赖少)
    Gateway: OpenResty (为了实现动态的服务发现,通过 docker service label 实现)

    容器编排: Docker Swarm (小而没,就是有点担心背后的公司不太靠谱,社区不活跃。但是本人也实在没发现更简单好用、不用 lockin K8S 的编排系统。看了一下 nomad,感觉文档还是比较少,而且配置文件格式有点奇怪)

    CI: Github Actions (和 Github 结合的很好,通过 PAT 和 secret 很容易管理配置)

    编排自动化 /自举 /Dashboard:(因为追求最大程度的自动化,而且想自己掌握统筹容器的调用细节)

    监控:Prometheus + Grafana + node-exporter (比较通用而且简单,只是 Grafana 的 UI 有一些 bug )

    存储同步:rsync (我的场景还主要是处理文件,不喜欢 object 存储因为看起来不直观。rsync 简单足够应付我的场景,即使你用 minio 这类的,扩容也很难。但是 rsync + 服务发现用几行脚本就能做一个穷人够用的存储同步。 )

    TLS 以及自动更新证书: Let's encrypt + acme.sh (比较省心,除了 TLS 自举以外,工具都提供完整了,没什么需要自己额外做的)
    113 条回复    2022-07-18 22:54:28 +08:00
    1  2  
    oneforallsoft
        1
    oneforallsoft  
       2020-11-11 12:04:23 +08:00
    os:win10 + debian
    数据库: mysql + pgsql
    鉴权:JWT
    前端:Vue2 bulma jquery nuxt
    Gateway: apache
    容器编排: 无
    CI: 无
    编排自动化 /自举 /Dashboard:无
    监控:无
    存储同步:无
    TLS 以及自动更新证书: Let's encrypt

    还有后端: php laravel + Go + java
    kop1989
        2
    kop1989  
       2020-11-11 12:10:23 +08:00   ❤️ 48
    都整这么复杂?

    系统:windows,
    web 容器:IIS,
    数据库:.txt,
    鉴权:自己鉴,
    前端:jQuery
    Gateway: 没有
    容器编排: 人肉
    CI: 人肉
    编排自动化 /自举 /Dashboard:用不着
    监控:自己写
    存储同步:人肉
    TLS 以及自动更新证书: 用不着
    raaaaaar
        3
    raaaaaar  
       2020-11-11 12:11:29 +08:00 via Android
    @kop1989 #2 秀儿
    danRen
        4
    danRen  
       2020-11-11 12:17:22 +08:00
    OS: Centos
    数据库:mongodb
    鉴权:JWT
    前端:Vue + Webpack + uni-app
    后端:nodejs
    Gateway: nodejs
    容器编排: Docker
    TLS 以及自动更新证书: Let's encrypt
    acmore
        5
    acmore  
       2020-11-11 12:18:23 +08:00
    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
        6
    ga6840  
    OP
       2020-11-11 12:19:13 +08:00
    我选择的理由主要也是尽量减少自己维护的负担啦,没想到还被评价复杂 (哭

    其实一开始也是觉得怎么这套技术栈不那么主流,所以想贴出来,如果用主流 k8s 的欢迎讨论一下使用场景和原因。
    chendy
        7
    chendy  
       2020-11-11 12:19:55 +08:00
    语言:java

    没了,就一给自己用的库
    kphcdr
        8
    kphcdr  
       2020-11-11 12:19:58 +08:00
    @kop1989 人工智能
    coolmenu
        9
    coolmenu  
       2020-11-11 12:22:33 +08:00
    postgresql + hasura
    kop1989
        10
    kop1989  
       2020-11-11 12:28:24 +08:00
    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
        11
    ga6840  
    OP
       2020-11-11 12:29:35 +08:00
    有用 MongoDB 的,大家可以看看黄东旭的评价

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

    当然很适合数据小的时候的小项目,但是我主要担心的是 MongoDB 在安全方面的不足,而且这个公司噱头比技术更厉害。
    ga6840
        12
    ga6840  
    OP
       2020-11-11 12:33:00 +08:00
    @kop1989 及时策略的 AI OpenAI 应该做到极致了吧?可以看看 PPO 算法?中间的奖励最好用人工定义,我记得看过他们的一个视频提到很多人工自己定义的 奖励场景,用来克服奖励稀疏问题。
    ga6840
        13
    ga6840  
    OP
       2020-11-11 12:33:31 +08:00
    @danRen 是在做小程序吗?
    ga6840
        14
    ga6840  
    OP
       2020-11-11 12:34:17 +08:00
    @acmore 好奇问一下,请问选择 Kong 的原因是什么?有没有考虑 OpenResty?
    xcstream
        15
    xcstream  
       2020-11-11 12:40:02 +08:00
    nginx nodejs mysql redis
    jones2000
        16
    jones2000  
       2020-11-11 12:41:38 +08:00
    只会 c++, 提供 c++业务动态库给其他语言调用 如 py, .net, nodejs,java
    ga6840
        17
    ga6840  
    OP
       2020-11-11 12:43:14 +08:00
    @acmore 另外,我知道很多人都不选择容器,而是用 Ansible 之类的。这样的好处当然可能性能上有一定优势(可以减少内存占用)但是隔离性不好,隔离性不好有安全问题也有部署问题。比如你不能在同一台机器上同时运行系统级的包管理安装,所以这样做一般都是一个脚本只能运行在一个节点上(比如 VPS ),也就没有办法更细化的占用整个集群闲置的资源。
    ga6840
        18
    ga6840  
    OP
       2020-11-11 12:50:14 +08:00
    容器化还有一点非常好的,就是方便 DevOps,程序员如果参与到自己代码的部署,可以写和部署环境无关的 Dockerfile,这样就可以在本地测试。
    acmore
        19
    acmore  
       2020-11-11 13:20:22 +08:00
    @ga6840 平时自己的项目用 Docker 比较容易引入额外的复杂度,且一般情况下 Server 就部署这么一套服务,不用考虑隔离性。当然工作以及复杂项目上容器化是肯定要做的,因为没有更好的方案,另外我在开发时也用,不过大多是用在测试和破坏性实验上,主要就是用到它的隔离性特性。总结来说就是不同场景用不同工具,Docker 不是万能的锤子,也不是所有的项目都是钉子。
    acmore
        20
    acmore  
       2020-11-11 13:22:02 +08:00
    @ga6840 选择 Kong 就是用习惯了,没有特别的考量。目前不打算换,而且说实话很多小项目用 Kong 也不是特别有必要,只是用上会显得技术栈丰沛一点。
    xuanbg
        21
    xuanbg  
       2020-11-11 13:29:31 +08:00
    OS: CentOS
    数据库:MySQL
    鉴权:自造轮子 Token
    前端:React
    后端:Java
    Gateway: Spring Cloud Gateway
    CI: Jenkins
    日志:EFK
    NewIPIsComing
        22
    NewIPIsComing  
       2020-11-11 13:34:03 +08:00
    把吉他彈響,自覺蠻好聽
    caicaiwoshishui
        23
    caicaiwoshishui  
       2020-11-11 13:36:58 +08:00
    @ga6840 好奇你的项目是部署在多台机器吗? docker 镜像是自建 harbor 吗还是?
    lidashuang
        24
    lidashuang  
       2020-11-11 13:39:38 +08:00
    不是业余项目吗?
    都整这么高大上,用 php 太 low 了?
    skypyb
        25
    skypyb  
       2020-11-11 13:39:48 +08:00
    你们的私人项目技术栈都这么牛逼,都是照着高并发大流量的场景设计的。
    想必都是人均百万用户的大站长吧🐶
    tikazyq
        26
    tikazyq  
       2020-11-11 13:46:19 +08:00   ❤️ 2
    OS:
    数据库:
    鉴权:
    前端:
    后端:
    Gateway:
    容器编排:
    CI:
    编排自动化 /自举 /Dashboard:
    监控:
    存储同步:
    TLS 以及自动更新证书:

    我是根据这个 44k+ stars 的项目来扩展自己的技术栈的 https://github.com/kelseyhightower/nocode
    eudore
        27
    eudore  
       2020-11-11 13:47:28 +08:00
    OS: 容器 alpine
    数据库: Postgresql
    前端: Vue(不使用 nodesjs 和 css 库)
    后端: GO
    后端框架: 造轮子
    权限: 造轮子(acl/pbac/rbac 混合)
    undefinedfalse
        28
    undefinedfalse  
       2020-11-11 13:51:17 +08:00
    @tikazyq #26 学习了
    xuanbg
        29
    xuanbg  
       2020-11-11 13:54:44 +08:00   ❤️ 1
    @skypyb 兴师动众搞了个能建 100 层大厦的的基础,然后上面只盖个三层小楼,看上去确实挺浪费的。

    但是,100 层大厦的的基础搞都搞了,放着不用非要另外搞个只能建 3 层小楼的基础是不是更浪费?微服务的好处就是一次投入建设,然后你终身都能受用这一套基础设施。不管是盖三层小楼还是百层大厦,你往上盖就完事了,不需要重新打基础。
    foMM
        30
    foMM  
       2020-11-11 13:55:55 +08:00
    业余项目能用这么多技能也是牛逼,不知道都是一些什么样的大项目……

    我的业余项目就是写写博客,做做视频什么的
    XIVN1987
        31
    XIVN1987  
       2020-11-11 13:58:27 +08:00
    Python + PyQt
    mwVYYA6
        32
    mwVYYA6  
       2020-11-11 13:59:20 +08:00 via Android
    @undefinedfalse xswl 这是个搞笑项目 你学个🔨
    OldActorsSmile
        33
    OldActorsSmile  
       2020-11-11 13:59:39 +08:00
    php+mysql
    skypyb
        34
    skypyb  
       2020-11-11 14:06:34 +08:00
    @xuanbg 你说的是没错, 但是私人项目的体量连集群都不一定能用到, 更别说分布式和微服务了。。。😂
    ChuYangshisan
        35
    ChuYangshisan  
       2020-11-11 14:11:37 +08:00
    @kop1989 我直乎内行
    buruoyanyang
        36
    buruoyanyang  
       2020-11-11 14:12:00 +08:00
    OS: Centos
    数据库:MySql
    鉴权:JWT
    前端:AntD
    后端:Java
    Gateway: Spring Cloud Gateway
    容器编排: 么得
    CI: 么得,准备上 git-runner
    编排自动化 /自举 /Dashboard:么得
    监控:么得
    存储同步:人肉
    TLS 以及自动更新证书: 么得
    meshell
        37
    meshell  
       2020-11-11 14:28:39 +08:00
    @ga6840 我只想知道用了几台服务器。哈哈
    xuanbg
        38
    xuanbg  
       2020-11-11 14:28:52 +08:00
    @skypyb 每个服务只启动一个实例就行了😁😁😁

    我搞了台 2C16G 的 ECS,已经给好几个客户上了微服务了。他们并不知道他们和别人在同一个系统里面╰(*°▽°*)╯
    nutting
        39
    nutting  
       2020-11-11 14:59:35 +08:00
    mac 市场占有率不行了啊,os 一个没有
    mingl0280
        40
    mingl0280  
       2020-11-11 15:07:25 +08:00 via Android
    os:ubuntu server
    数据库:mysql
    后端语言:php
    前端:vue.js
    ci:要 ci 干啥,平时上班 Jenkinsfile 工作量不足?
    其他:人肉
    证书付费的,不能自动更新
    ga6840
        41
    ga6840  
    OP
       2020-11-11 15:22:53 +08:00
    理解,我也同意有些场景不需要容器。但我自己的感觉是加了容器以后我的维护复杂度减少了,看上去系统依赖了容器,但是维护起来反而容易。
    ga6840
        42
    ga6840  
    OP
       2020-11-11 15:26:13 +08:00
    @caicaiwoshishui 是的,一个个人的搜索的项目,目前需要至少 12 个 VPS 。Docker 镜像国内用 uhub, 国外的话用 DockerHub, 不行备用 fallback 到 ghcr 上。本来很倾向 ghcr 的,但是貌似他家 beta 阶段过了以后的价钱很贵,而且实际使用当中 push 的速度经常比不上 DockerHub 。目前看上去够用,自建镜像好像还没有需求。
    ga6840
        43
    ga6840  
    OP
       2020-11-11 15:27:23 +08:00
    @skypyb 是个搜索引擎,一个节点肯定不行。即使你不要可用性,sharding 也是必须的。
    skypyb
        44
    skypyb  
       2020-11-11 15:29:02 +08:00
    @ga6840 搞这么多节点, 每年要花的钱也不少吧。 是项目有盈利么
    debuggerx
        45
    debuggerx  
       2020-11-11 15:31:11 +08:00
    开发 os:deepin
    服务器 os:debian
    数据库: mysql + pgsql
    鉴权:JWT
    前端:React Next.js
    UI 框架:Material-UI
    移动端:flutter
    桌面端:PyQt Electron
    小程序:Taro
    Gateway: nginx
    后端: Node python go java
    ga6840
        46
    ga6840  
    OP
       2020-11-11 15:37:49 +08:00
    来说一下为什么我要这么多的机器。首先,个人资金有限,考虑到项目不盈利,目前也不会投入太多成本。在这个条件下,我个人倾向最便宜的节点然后跑集群。比如 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
        47
    ga6840  
    OP
       2020-11-11 15:41:22 +08:00
    @skypyb 国外的 VPS 一个月 5 刀,而且我的提供商 Linode 提供了赞助。我之前的运维栈也是纯脚本,把爬虫和索引都放在本地,这样的话一个月 4 个节点就够了,也就是 20 刀。目前为了支持在线自动爬虫和索引更新,一个月花费是有点贵,但是也是可以靠自己的零花钱养的。当然,更好的服务上去了以后,也希望能找机会开始 monetize.
    hpan
        48
    hpan  
       2020-11-11 15:42:37 +08:00
    @ga6840 敢问 lz 业余做的啥项目?
    ga6840
        49
    ga6840  
    OP
       2020-11-11 15:44:29 +08:00
    @mingl0280 不管是 Jenkins 还是 Docker 都是为了省时间、一劳永逸,怎么大家精神负担很重啊。公司玩自动化肯定也想节省各位时间的,只不过节省出来的时间是不是让你 996 就是另外一回事。大家看来被渣干了……
    ga6840
        50
    ga6840  
    OP
       2020-11-11 15:45:21 +08:00
    @hpan Approach0,一个数学公式搜索引擎。
    Nillouise
        51
    Nillouise  
       2020-11-11 15:52:48 +08:00
    直接 docker-compose 不行吗?要用 Docker Swarm 做弹性扩展?
    cassyfar
        52
    cassyfar  
       2020-11-11 15:56:44 +08:00
    @ga6840 有一说一,你这个项目挺有意思的
    hbolive
        53
    hbolive  
       2020-11-11 16:08:19 +08:00
    你们都太高达上了。。业余的还怎么复杂。。
    coderunI
        54
    coderunI  
       2020-11-11 16:12:38 +08:00
    简单一点不好吗?
    ga6840
        55
    ga6840  
    OP
       2020-11-11 16:15:58 +08:00
    @Nillouise docker-compose 可能不够灵活,不过和 Docker swarm 结合的很好。目前我还不觉得有必要用,因为我都是直接通过 docker-cli 或者 API 调用 docker 。 可以不用增加 docker-compose 这一层。当然,没有用过就不发表太多意见。
    ga6840
        56
    ga6840  
    OP
       2020-11-11 16:17:43 +08:00
    @coderunI 欢迎提建议
    justrand
        57
    justrand  
       2020-11-11 17:00:00 +08:00
    我比较感兴趣的,美工设计原型这种你们怎么做的?
    ga6840
        58
    ga6840  
    OP
       2020-11-11 17:14:46 +08:00
    @justrand 自己的项目自己随便写,全靠 UI 组建。
    namelosw
        59
    namelosw  
       2020-11-11 19:44:55 +08:00
    Stack: Rails / Phoenix / Node
    前端: 不用 / React / Preact
    DB: SQLite / Postgres
    CI: 不用, 一个人自己跟自己还需要集成嘛…… 写个 shell 我自己就是 CI
    部署: Heroku / Kubernetes + Pulumi
    监控 Gateway TLS 啥的, Heroku Kubernetes 都有现成的

    大部分的选择都有简单复杂两个选项, 一般从简单的开始.
    zzzzzzggggggg
        60
    zzzzzzggggggg  
       2020-11-11 19:55:11 +08:00
    业务项目都这么厉害,主业应该更厉害吧
    ga6840
        61
    ga6840  
    OP
       2020-11-11 20:24:18 +08:00
    @namelosw 自己的项目用 k8s 会不会有些复杂,docker swarm 能不能满足你的需求?能否指点一二
    namelosw
        62
    namelosw  
       2020-11-11 20:30:30 +08:00
    @ga6840 K8S 用托管的挺简单的, 自己搭集群就坑爹了, 大的 AWS Azure GCP 都有, 小的 DO Linode 也有. Kubernetes 主要是上手有点复杂, 一旦会了其实挺简单的, 比如项目上用, 或者学习目的正好会了可以用用. 会用了之后还可以用 Pulumi 简化一下.

    Docker swarm 感觉有点鸡肋, 没深入用过. 不过 side project 应该都行, 用自己熟悉的就好.
    不过我觉得 Heroku 能解决的话还是 Heroku 这种最省事.
    如果说轻量的 alternative 的话, 听说 Nomad 挺好的, 好像还不用 Docker, 不过我也没用过.
    ga6840
        63
    ga6840  
    OP
       2020-11-11 20:56:54 +08:00
    @namelosw 学习了。我只是还不清楚除了之前 Docker Swarm 技术层面不太稳定以外,还有什么原因让大家一直留在 K8S 平台。我感觉 Google 高层能同意让 K8S 开源出来,直接威胁到自家的云服务,目的是什么还是不太清楚。只要 K8S 继续这么复杂,只要 G 家有所保留(比如不会开源 Borg ),就说明还有更好的开源产品有机会出现。
    namelosw
        64
    namelosw  
       2020-11-11 21:15:18 +08:00
    @ga6840 Kubernetes 我感觉现在比较有吸引力是生态已经起来了. 比如你说的 Prometheus Grafana acme 啥的都几个操作就 setup 好了.

    我觉得倒不是 Swarm 本身有啥问题, 而是比较鸡肋. 我感觉很多人应该跟我一样, 简单的就用最简单的 Heroku 或者 SSH 上直接 shell 一下, 再重的场景的直接 Kubernetes 因为正好已经熟悉了, 实际上几个文件很快也就弄好了. 一旦大部分人都熟悉 Kubernetes 之后, Swarm 这个不上不下的定位就很尴尬.
    GoLand
        65
    GoLand  
       2020-11-11 21:40:31 +08:00   ❤️ 1
    这么复杂一个人弄得过来吗?我那个老板服务器都不舍得开,我说要个 2c4g 的,给我压到了 1c2g 。。我也就一切从简了。
    服务器:阿里云 Ubuntu 1c2g
    数据库:阿里云 MySQL 1c1g
    鉴权:应用比较特殊,APP 不鉴权,管理后台 JWT
    后端:Python flask
    部署:直接用 docker-compose 跑,外面挡一层 NGINX 做转发
    其他就 Sentry 看报错,grafana + influxdb 做监控
    DiamondYuan
        66
    DiamondYuan  
       2020-11-11 22:25:48 +08:00
    服务器:腾讯云 4C8G
    数据库:mongodb
    后端:nodejs and serverless
    部署:githubaction + (docker-compose + serverless)
    日志: aliyun + datadog
    前端: ts + react
    CDN 七牛
    ga6840
        67
    ga6840  
    OP
       2020-11-11 23:36:37 +08:00
    @namelosw 但是据说 Swarm 内存占用少,因为不需要再套一层。依赖也少了,不用一箩筐的把 k8s 全家桶全部引入。还有听说 Swarm 部署应该比 k8s 快。因为还没自己搭建过 k8s, 也暂时停留在从各种渠道了解的大致情况。
    namelosw
        68
    namelosw  
       2020-11-12 00:00:58 +08:00
    @ga6840 唉…… 部署速度其实是很小的一部分, 编译, docker build, pull image, CI 等等其实都很费时间. 我感觉这一套东西最重的一层其实是 Docker…
    johnsona
        69
    johnsona  
       2020-11-12 00:22:37 +08:00 via iPhone
    jwt 无法 revoke,退出登陆都做不了,我见一次说一次,你如果保存 jwt 就又是 session 了
    mingl0280
        70
    mingl0280  
       2020-11-12 01:49:28 +08:00 via Android
    @ga6840 我连一劳永逸的一劳都不想做……我这玩意儿直接 ssh 推送到服务器上挂了就挂了呗……
    ga6840
        71
    ga6840  
    OP
       2020-11-12 02:33:52 +08:00 via Android
    @johnsona 退出登录是做不了。但是保存 jwt 和 session 不一样,session 是每个用户都要存一份信息,jwt 全局只有一个 token 。当然,为了安全这个 token 需要比较长的而已。
    ga6840
        72
    ga6840  
    OP
       2020-11-12 02:36:03 +08:00 via Android
    @mingl0280 那只能说明你的应用不需要这些。我搭个静态博客也不用这些。但你可以来试试搭建一个百万文档以上的搜索应用
    IDAEngine
        73
    IDAEngine  
       2020-11-12 02:54:35 +08:00 via iPhone
    azure 一把梭,爽
    johnsona
        74
    johnsona  
       2020-11-12 02:54:59 +08:00 via iPhone
    @ga6840 jwt 也是每个用户一个 jwt,不然你拿到 jwt 怎么识别这个用户是谁,只是 jwt 你不存而已,算哈希验证合法性而已
    CismonX
        75
    CismonX  
       2020-11-12 03:34:54 +08:00
    业余项目都是单纯为了自娱自乐做的玩具,功能简单,技术栈基本谈不上

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

    也有其他语言写的项目,也基本同理,遵循小而丑(😂)的原则
    xuanbg
        76
    xuanbg  
       2020-11-12 08:09:01 +08:00
    @johnsona jwt 只适合不需要鉴权的 2C 系统或者轻量级的 2B 系统。像我这种权限上千个的,只能自己造轮子。硬要用 jwt 简直是自己找死。几百 K 的 payload 你敢用?
    kiddingU
        77
    kiddingU  
       2020-11-12 09:23:03 +08:00
    @ga6840 选择 kong 的原因是可以很方便的管理自己网关,同时有很多系统自带插件,同时自己开发插件也是很方便的,性能上来说,本事就是基于 openresty 开发的性能还是很强的
    cloudhuang
        78
    cloudhuang  
       2020-11-12 09:28:53 +08:00
    > Gateway: OpenResty (为了实现动态的服务发现,通过 docker service label 实现)

    朋友,这块可否详细点说说,谢谢。
    ychost
        79
    ychost  
       2020-11-12 09:30:09 +08:00
    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
        80
    xunbug  
       2020-11-12 09:39:43 +08:00
    要啥技术栈,客户要啥需求,一边 github 一边 google,然后 copy&run 就可以了
    tuboshuv1
        81
    tuboshuv1  
       2020-11-12 09:44:35 +08:00
    服务器:4g 内存+32g 固态捡的矿渣,预计会改 8g 内存,已加 500g 机械
    OS:CentOs
    DB:Mysql
    前端: layui
    鉴权:Jwt
    后端:Java
    网关:无
    容器:Docker
    CI:Jenkins
    监控:无
    存储同步:数据按月写入,按月导出,文件形式存储
    zhuzhibin
        82
    zhuzhibin  
       2020-11-12 09:58:23 +08:00 via iPhone
    这里的老哥都好牛批啊 哎我是废物
    Rheinmetal
        83
    Rheinmetal  
       2020-11-12 10:00:52 +08:00
    觉得 k8s 集群太大可以试试各种裁剪版本
    k3s/microk8s/minikube
    mingl0280
        84
    mingl0280  
       2020-11-12 10:20:30 +08:00 via Android
    @ga6840 言必称百万,访问量千万……你个人搭个站都这个访问量,你也不用做这个副业了好吧……
    Akagi201
        85
    Akagi201  
       2020-11-12 10:21:57 +08:00
    @kop1989 #2 真实, 其实业余项目谁弄那么复杂啊, 爬虫, 小网站不需要那些没用东西.
    tairan2006
        86
    tairan2006  
       2020-11-12 10:30:11 +08:00
    业余搞项目不是讲究一把梭么,搞这么复杂干啥
    wsydxiangwang
        87
    wsydxiangwang  
       2020-11-12 10:34:10 +08:00
    一无所知,啥也不会,无知的我,路过路过。
    lucybenz
        88
    lucybenz  
       2020-11-12 10:43:43 +08:00
    @xunbug 对 客户老爷您好,有啥需求,尽管提,不会的我可以学
    justsosososo
        89
    justsosososo  
       2020-11-12 10:46:21 +08:00
    @johnsona 结合 redis 弄个 token 黑名单
    ChrisZou
        90
    ChrisZou  
       2020-11-12 11:42:37 +08:00   ❤️ 1
    后端:Ruby on Rails
    前端:Vue2 + TailwindCSS + Webpack
    数据库:Postgresql
    搜索:ElasticSearch
    OS: Ubuntu 18.04
    WebServer:Nginx
    TLS 以及自动更新证书: Let's encrypt

    目前项目是开源的,感兴趣的可看看 https://github.com/ChrisZou/geekweibo
    ga6840
        91
    ga6840  
    OP
       2020-11-12 12:27:34 +08:00
    @johnsona 如果说是识别用户的话,在 login 的时候肯定需要从数据库里比照用户密码,但是给他 sign 了 token 以后(同时会把用户名 encode 进去),他的身份识别可以从后面 api 请求的 token 里面 decode 得到。
    ga6840
        92
    ga6840  
    OP
       2020-11-12 12:29:12 +08:00
    @johnsona 是的,用户的 JWT 他们自己存在自己浏览器,通过哈希验证合法性。传统 session 方式是需要在服务端验证 token 合法性。
    ga6840
        93
    ga6840  
    OP
       2020-11-12 12:31:57 +08:00
    @cloudhuang 可以参考 traefik 文档,openResty 可以替代他的很多功能。个人觉得 traefik 还不够成熟并且功能不够定制话。
    ga6840
        94
    ga6840  
    OP
       2020-11-12 12:36:28 +08:00
    @ChrisZou 强大。你怎么限制内容是技术的?如果有人灌水咋办
    kazeik
        95
    kazeik  
       2020-11-12 13:18:08 +08:00
    OS: mac os,windows
    数据库:mysql ,sqlite
    鉴权:
    前端:android ,flutter
    后端:java , php
    语言:java ,dart,php ,kotlin
    Gateway:
    容器编排:
    CI:
    编排自动化 /自举 /Dashboard:
    监控:
    存储同步:

    主要是做 app 开发的。基本上用到的都是跟 app 开发相关的东西
    可怜一个 vue 都没学会入门
    Patrick95
        96
    Patrick95  
       2020-11-12 14:22:37 +08:00
    UMD / ES6-Modules /Less / Sass / Stylus / PostCSS / xiaozhu.win / macOS /
    johnsona
        97
    johnsona  
       2020-11-12 14:54:22 +08:00 via iPhone
    @justsosososo 那你其实就存储了 token
    johnsona
        98
    johnsona  
       2020-11-12 14:58:21 +08:00 via iPhone
    @ga6840 revoke 场景,比如退出登陆 冻结账户。还有就是说如果我的请求要记住上一步做了什么,这种就是有状态,你用 jwt 搞无状态不行的。当然 token 有一个好,不局限于浏览器
    ChrisZou
        99
    ChrisZou  
       2020-11-12 16:00:13 +08:00
    @ga6840 目前这个没有限制😂,而且我认为少量的灌水也是 OK 的,更多的还是靠社区自身给用户的印象。
    totoro52
        100
    totoro52  
       2020-11-12 19:00:38 +08:00
    @kop1989 老哥 TM 直接起飞
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5285 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 07:17 · PVG 15:17 · LAX 00:17 · JFK 03:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.