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 |
2
kop1989 2020-11-11 12:10:23 +08:00 48
都整这么复杂?
系统:windows, web 容器:IIS, 数据库:.txt, 鉴权:自己鉴, 前端:jQuery Gateway: 没有 容器编排: 人肉 CI: 人肉 编排自动化 /自举 /Dashboard:用不着 监控:自己写 存储同步:人肉 TLS 以及自动更新证书: 用不着 |
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 |
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 里。 |
6
ga6840 OP 我选择的理由主要也是尽量减少自己维护的负担啦,没想到还被评价复杂 (哭
其实一开始也是觉得怎么这套技术栈不那么主流,所以想贴出来,如果用主流 k8s 的欢迎讨论一下使用场景和原因。 |
7
chendy 2020-11-11 12:19:55 +08:00
语言:java
没了,就一给自己用的库 |
9
coolmenu 2020-11-11 12:22:33 +08:00
postgresql + hasura
|
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 |
11
ga6840 OP 有用 MongoDB 的,大家可以看看黄东旭的评价
https://www.bilibili.com/video/BV1nJ411T7Vm/#时间:54:32 当然很适合数据小的时候的小项目,但是我主要担心的是 MongoDB 在安全方面的不足,而且这个公司噱头比技术更厉害。 |
12
ga6840 OP @kop1989 及时策略的 AI OpenAI 应该做到极致了吧?可以看看 PPO 算法?中间的奖励最好用人工定义,我记得看过他们的一个视频提到很多人工自己定义的 奖励场景,用来克服奖励稀疏问题。
|
15
xcstream 2020-11-11 12:40:02 +08:00
nginx nodejs mysql redis
|
16
jones2000 2020-11-11 12:41:38 +08:00
只会 c++, 提供 c++业务动态库给其他语言调用 如 py, .net, nodejs,java
|
17
ga6840 OP @acmore 另外,我知道很多人都不选择容器,而是用 Ansible 之类的。这样的好处当然可能性能上有一定优势(可以减少内存占用)但是隔离性不好,隔离性不好有安全问题也有部署问题。比如你不能在同一台机器上同时运行系统级的包管理安装,所以这样做一般都是一个脚本只能运行在一个节点上(比如 VPS ),也就没有办法更细化的占用整个集群闲置的资源。
|
18
ga6840 OP 容器化还有一点非常好的,就是方便 DevOps,程序员如果参与到自己代码的部署,可以写和部署环境无关的 Dockerfile,这样就可以在本地测试。
|
19
acmore 2020-11-11 13:20:22 +08:00
@ga6840 平时自己的项目用 Docker 比较容易引入额外的复杂度,且一般情况下 Server 就部署这么一套服务,不用考虑隔离性。当然工作以及复杂项目上容器化是肯定要做的,因为没有更好的方案,另外我在开发时也用,不过大多是用在测试和破坏性实验上,主要就是用到它的隔离性特性。总结来说就是不同场景用不同工具,Docker 不是万能的锤子,也不是所有的项目都是钉子。
|
20
acmore 2020-11-11 13:22:02 +08:00
@ga6840 选择 Kong 就是用习惯了,没有特别的考量。目前不打算换,而且说实话很多小项目用 Kong 也不是特别有必要,只是用上会显得技术栈丰沛一点。
|
21
xuanbg 2020-11-11 13:29:31 +08:00
OS: CentOS
数据库:MySQL 鉴权:自造轮子 Token 前端:React 后端:Java Gateway: Spring Cloud Gateway CI: Jenkins 日志:EFK |
22
NewIPIsComing 2020-11-11 13:34:03 +08:00
把吉他彈響,自覺蠻好聽
|
23
caicaiwoshishui 2020-11-11 13:36:58 +08:00
@ga6840 好奇你的项目是部署在多台机器吗? docker 镜像是自建 harbor 吗还是?
|
24
lidashuang 2020-11-11 13:39:38 +08:00
不是业余项目吗?
都整这么高大上,用 php 太 low 了? |
25
skypyb 2020-11-11 13:39:48 +08:00
你们的私人项目技术栈都这么牛逼,都是照着高并发大流量的场景设计的。
想必都是人均百万用户的大站长吧🐶 |
26
tikazyq 2020-11-11 13:46:19 +08:00 2
OS:
数据库: 鉴权: 前端: 后端: Gateway: 容器编排: CI: 编排自动化 /自举 /Dashboard: 监控: 存储同步: TLS 以及自动更新证书: 我是根据这个 44k+ stars 的项目来扩展自己的技术栈的 https://github.com/kelseyhightower/nocode |
27
eudore 2020-11-11 13:47:28 +08:00
OS: 容器 alpine
数据库: Postgresql 前端: Vue(不使用 nodesjs 和 css 库) 后端: GO 后端框架: 造轮子 权限: 造轮子(acl/pbac/rbac 混合) |
28
undefinedfalse 2020-11-11 13:51:17 +08:00
@tikazyq #26 学习了
|
29
xuanbg 2020-11-11 13:54:44 +08:00 1
@skypyb 兴师动众搞了个能建 100 层大厦的的基础,然后上面只盖个三层小楼,看上去确实挺浪费的。
但是,100 层大厦的的基础搞都搞了,放着不用非要另外搞个只能建 3 层小楼的基础是不是更浪费?微服务的好处就是一次投入建设,然后你终身都能受用这一套基础设施。不管是盖三层小楼还是百层大厦,你往上盖就完事了,不需要重新打基础。 |
30
foMM 2020-11-11 13:55:55 +08:00
业余项目能用这么多技能也是牛逼,不知道都是一些什么样的大项目……
我的业余项目就是写写博客,做做视频什么的 |
31
XIVN1987 2020-11-11 13:58:27 +08:00
Python + PyQt
|
32
mwVYYA6 2020-11-11 13:59:20 +08:00 via Android
@undefinedfalse xswl 这是个搞笑项目 你学个🔨
|
33
OldActorsSmile 2020-11-11 13:59:39 +08:00
php+mysql
|
35
ChuYangshisan 2020-11-11 14:11:37 +08:00
@kop1989 我直乎内行
|
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 以及自动更新证书: 么得 |
38
xuanbg 2020-11-11 14:28:52 +08:00
|
39
nutting 2020-11-11 14:59:35 +08:00
mac 市场占有率不行了啊,os 一个没有
|
40
mingl0280 2020-11-11 15:07:25 +08:00 via Android
os:ubuntu server
数据库:mysql 后端语言:php 前端:vue.js ci:要 ci 干啥,平时上班 Jenkinsfile 工作量不足? 其他:人肉 证书付费的,不能自动更新 |
41
ga6840 OP 理解,我也同意有些场景不需要容器。但我自己的感觉是加了容器以后我的维护复杂度减少了,看上去系统依赖了容器,但是维护起来反而容易。
|
42
ga6840 OP @caicaiwoshishui 是的,一个个人的搜索的项目,目前需要至少 12 个 VPS 。Docker 镜像国内用 uhub, 国外的话用 DockerHub, 不行备用 fallback 到 ghcr 上。本来很倾向 ghcr 的,但是貌似他家 beta 阶段过了以后的价钱很贵,而且实际使用当中 push 的速度经常比不上 DockerHub 。目前看上去够用,自建镜像好像还没有需求。
|
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 |
46
ga6840 OP 来说一下为什么我要这么多的机器。首先,个人资金有限,考虑到项目不盈利,目前也不会投入太多成本。在这个条件下,我个人倾向最便宜的节点然后跑集群。比如 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 个节点了。 |
47
ga6840 OP @skypyb 国外的 VPS 一个月 5 刀,而且我的提供商 Linode 提供了赞助。我之前的运维栈也是纯脚本,把爬虫和索引都放在本地,这样的话一个月 4 个节点就够了,也就是 20 刀。目前为了支持在线自动爬虫和索引更新,一个月花费是有点贵,但是也是可以靠自己的零花钱养的。当然,更好的服务上去了以后,也希望能找机会开始 monetize.
|
49
ga6840 OP @mingl0280 不管是 Jenkins 还是 Docker 都是为了省时间、一劳永逸,怎么大家精神负担很重啊。公司玩自动化肯定也想节省各位时间的,只不过节省出来的时间是不是让你 996 就是另外一回事。大家看来被渣干了……
|
51
Nillouise 2020-11-11 15:52:48 +08:00
直接 docker-compose 不行吗?要用 Docker Swarm 做弹性扩展?
|
53
hbolive 2020-11-11 16:08:19 +08:00
你们都太高达上了。。业余的还怎么复杂。。
|
54
coderunI 2020-11-11 16:12:38 +08:00
简单一点不好吗?
|
55
ga6840 OP @Nillouise docker-compose 可能不够灵活,不过和 Docker swarm 结合的很好。目前我还不觉得有必要用,因为我都是直接通过 docker-cli 或者 API 调用 docker 。 可以不用增加 docker-compose 这一层。当然,没有用过就不发表太多意见。
|
57
yEhwG10ZJa83067x 2020-11-11 17:00:00 +08:00
我比较感兴趣的,美工设计原型这种你们怎么做的?
|
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 都有现成的 大部分的选择都有简单复杂两个选项, 一般从简单的开始. |
60
zzzzzzggggggg 2020-11-11 19:55:11 +08:00
业务项目都这么厉害,主业应该更厉害吧
|
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, 不过我也没用过. |
63
ga6840 OP @namelosw 学习了。我只是还不清楚除了之前 Docker Swarm 技术层面不太稳定以外,还有什么原因让大家一直留在 K8S 平台。我感觉 Google 高层能同意让 K8S 开源出来,直接威胁到自家的云服务,目的是什么还是不太清楚。只要 K8S 继续这么复杂,只要 G 家有所保留(比如不会开源 Borg ),就说明还有更好的开源产品有机会出现。
|
64
namelosw 2020-11-11 21:15:18 +08:00
@ga6840 Kubernetes 我感觉现在比较有吸引力是生态已经起来了. 比如你说的 Prometheus Grafana acme 啥的都几个操作就 setup 好了.
我觉得倒不是 Swarm 本身有啥问题, 而是比较鸡肋. 我感觉很多人应该跟我一样, 简单的就用最简单的 Heroku 或者 SSH 上直接 shell 一下, 再重的场景的直接 Kubernetes 因为正好已经熟悉了, 实际上几个文件很快也就弄好了. 一旦大部分人都熟悉 Kubernetes 之后, Swarm 这个不上不下的定位就很尴尬. |
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 做监控 |
66
DiamondYuan 2020-11-11 22:25:48 +08:00
服务器:腾讯云 4C8G
数据库:mongodb 后端:nodejs and serverless 部署:githubaction + (docker-compose + serverless) 日志: aliyun + datadog 前端: ts + react CDN 七牛 |
67
ga6840 OP @namelosw 但是据说 Swarm 内存占用少,因为不需要再套一层。依赖也少了,不用一箩筐的把 k8s 全家桶全部引入。还有听说 Swarm 部署应该比 k8s 快。因为还没自己搭建过 k8s, 也暂时停留在从各种渠道了解的大致情况。
|
68
namelosw 2020-11-12 00:00:58 +08:00
@ga6840 唉…… 部署速度其实是很小的一部分, 编译, docker build, pull image, CI 等等其实都很费时间. 我感觉这一套东西最重的一层其实是 Docker…
|
69
johnsona 2020-11-12 00:22:37 +08:00 via iPhone
jwt 无法 revoke,退出登陆都做不了,我见一次说一次,你如果保存 jwt 就又是 session 了
|
70
mingl0280 2020-11-12 01:49:28 +08:00 via Android
@ga6840 我连一劳永逸的一劳都不想做……我这玩意儿直接 ssh 推送到服务器上挂了就挂了呗……
|
71
ga6840 OP @johnsona 退出登录是做不了。但是保存 jwt 和 session 不一样,session 是每个用户都要存一份信息,jwt 全局只有一个 token 。当然,为了安全这个 token 需要比较长的而已。
|
72
ga6840 OP @mingl0280 那只能说明你的应用不需要这些。我搭个静态博客也不用这些。但你可以来试试搭建一个百万文档以上的搜索应用
|
73
IDAEngine 2020-11-12 02:54:35 +08:00 via iPhone
azure 一把梭,爽
|
74
johnsona 2020-11-12 02:54:59 +08:00 via iPhone
@ga6840 jwt 也是每个用户一个 jwt,不然你拿到 jwt 怎么识别这个用户是谁,只是 jwt 你不存而已,算哈希验证合法性而已
|
75
CismonX 2020-11-12 03:34:54 +08:00
业余项目都是单纯为了自娱自乐做的玩具,功能简单,技术栈基本谈不上
如果非说要有技术栈的话,无非是 ISO C + POSIX.1 那一套,偶尔调一些 platform specific API 和第三方库。加上 Autotools 用来构建,DejaGnu 写测试,Troff 或者 Texinfo 写文档 也有其他语言写的项目,也基本同理,遵循小而丑(😂)的原则 |
76
xuanbg 2020-11-12 08:09:01 +08:00
@johnsona jwt 只适合不需要鉴权的 2C 系统或者轻量级的 2B 系统。像我这种权限上千个的,只能自己造轮子。硬要用 jwt 简直是自己找死。几百 K 的 payload 你敢用?
|
77
kiddingU 2020-11-12 09:23:03 +08:00
@ga6840 选择 kong 的原因是可以很方便的管理自己网关,同时有很多系统自带插件,同时自己开发插件也是很方便的,性能上来说,本事就是基于 openresty 开发的性能还是很强的
|
78
cloudhuang 2020-11-12 09:28:53 +08:00
> Gateway: OpenResty (为了实现动态的服务发现,通过 docker service label 实现)
朋友,这块可否详细点说说,谢谢。 |
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 |
80
hahaba 2020-11-12 09:39:43 +08:00
要啥技术栈,客户要啥需求,一边 github 一边 google,然后 copy&run 就可以了
|
81
tuboshuv1 2020-11-12 09:44:35 +08:00
服务器:4g 内存+32g 固态捡的矿渣,预计会改 8g 内存,已加 500g 机械
OS:CentOs DB:Mysql 前端: layui 鉴权:Jwt 后端:Java 网关:无 容器:Docker CI:Jenkins 监控:无 存储同步:数据按月写入,按月导出,文件形式存储 |
82
zhuzhibin 2020-11-12 09:58:23 +08:00 via iPhone
这里的老哥都好牛批啊 哎我是废物
|
83
Rheinmetal 2020-11-12 10:00:52 +08:00
觉得 k8s 集群太大可以试试各种裁剪版本
k3s/microk8s/minikube |
84
mingl0280 2020-11-12 10:20:30 +08:00 via Android
@ga6840 言必称百万,访问量千万……你个人搭个站都这个访问量,你也不用做这个副业了好吧……
|
86
tairan2006 2020-11-12 10:30:11 +08:00
业余搞项目不是讲究一把梭么,搞这么复杂干啥
|
87
wsydxiangwang 2020-11-12 10:34:10 +08:00
一无所知,啥也不会,无知的我,路过路过。
|
89
justsosososo 2020-11-12 10:46:21 +08:00
@johnsona 结合 redis 弄个 token 黑名单
|
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 |
91
ga6840 OP @johnsona 如果说是识别用户的话,在 login 的时候肯定需要从数据库里比照用户密码,但是给他 sign 了 token 以后(同时会把用户名 encode 进去),他的身份识别可以从后面 api 请求的 token 里面 decode 得到。
|
92
ga6840 OP @johnsona 是的,用户的 JWT 他们自己存在自己浏览器,通过哈希验证合法性。传统 session 方式是需要在服务端验证 token 合法性。
|
93
ga6840 OP @cloudhuang 可以参考 traefik 文档,openResty 可以替代他的很多功能。个人觉得 traefik 还不够成熟并且功能不够定制话。
|
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 都没学会入门 |
96
Patrick95 2020-11-12 14:22:37 +08:00
UMD / ES6-Modules /Less / Sass / Stylus / PostCSS / xiaozhu.win / macOS /
|
97
johnsona 2020-11-12 14:54:22 +08:00 via iPhone
@justsosososo 那你其实就存储了 token
|