有没有公司用 Python 或者 django 搭建集群、微服务成功的案例?
如果有的话请大佬帮忙讲讲怎么实现的:集群或者微服务都用到了什么,用什么做网关、服务之间怎么调用的。
随着公司业务发展,发现一台服务器上部署的项目满足不了需求,想把项目部署到多台服务器上,也想把其中一些业务独立出来解耦,数据库也想搞一个读写分离,现在毫无头绪;
集群 Python django 服务器20 条回复 • 2021-10-12 10:26:26 +08:00
homelab 1
homelab 1 天前
网关可以用 kong,可以用与认证、限流
服务之间用 rpc 调用,但你用 django 是 http 同步框架,只能走 http 相互调用吧
ruanimal 2
ruanimal 1 天前
目前就一台机器就想上集群,小心步子迈太大
676529483 3
676529483 1 天前
我现在用 k8s,相对简单,网关你看需要加,服务注册和负载均衡直接用 svc 和 ingress,用 django 的话就 http 呗。至于读写分离,做好主从同步,django 里配置多个数据库或者数据库路由就行
Ehco1996 4
Ehco1996 1 天前
其实业界已经有很标准的做法了,抄作业的*快办法就是
1 上云买云版本 k8s
2 容器化你们当前的服务
3 slb 直接打到 k8s 的 ingress controller
至于业务 /db 拆分 这就是写代码的事情了, 可以慢慢考虑
—-
但是,如果现在毫无头绪的话建议不要上来就集群微服务
单机性能有瓶颈了先上 nginx 后面拉几台机器负载均衡一下
等心里面有数了(有人力)之后再考虑上微服务集群那一套
arischow 5
arischow 1 天前 via iPhone
现在就一台服务器的单体要开始计划读写分离?需要补充更多语境
podel 6
podel 1 天前
我司就是。
要不要过来投个简历。偷师学艺一下吖~~~[手动滑稽]
主要 python 里面的计算逻辑尽量的少。
某些搜索分流到 ES 之类的。 频繁信息直接内存缓存或者 Redis 。*后数据库存储原始数据。
web 只做 web 的事情,不要做其他事情。
这样子 可以轻松的水平扩容。 (加 WEB POD 数量,加 ES 集群数量,升数据库配置。)
另外阿里云 SLB+ K8S + istio 的 service mesh(不需要可以不用) 轻轻松松水平扩展吖。
longmeier90 7
longmeier90 1 天前
@podel 大佬什么公司呀
longmeier90 8
longmeier90 1 天前
@arischow 是因为财务统计、运营统计数据量大的情况下 cpu 经常报警;想着是读和写分开这样的话可以分担压力
chengxiao 9
chengxiao 1 天前
v2 不就是么
hushao 10
hushao 1 天前
想半天,默默打出一个负载均衡???
gengchun 11
gengchun 1 天前
有 40 个核数以上吗?
看上去是传统的业务,都是物理机的可能性较大,估计后面只有 mysql/mariadb,再加上 redis 就差不多了。这样 100 个核两三台用不到什么集群。nginx + uwsgi 光是 Python 的话,什么都对付过去了。
做点内核参数调整就对付过去了。实在想的话,也就用一下 docker,用 ns 特性做点隔离就差不多了。
数据库读写分离都不需要。搞个主从备份下就好了。早年阿里的中间件现在都不维护了。maxscale 这种东西。复杂业务也要踩坑。
如果不是真心希望向运维方向发展的话,专注了解业务,不要在这上面浪费时间。
ch2 12
ch2 1 天前
先搞清楚无状态计算跟有状态计算再说吧
roundgis 13
roundgis 1 天前 via Android
@longmeier90 如果瓶頸在 db 和 django 關係不大
dayeye2006199 14
dayeye2006199 1 天前
我们在 aws 上的简单配置:
1. 多 EC2 实例部署 django 应用
2. 接个 ASG 保证 HA
3. *前面再接个 API gateway
LZ 的问题听者像是数据库瓶颈的问题。如果经常需要做大量数据统计和报表的功能,一个是考虑优化一下 query 的性能;一个是可以考虑设置定时任务预计算一些常用的报表;另一个是考虑上 OLAP 的数据库,例如我们的 OLTP 用的 postgre,OLAP 用的是相关的 greenplum
christopheredwar 15
christopheredwar 1 天前
同学习中
longmeier90 16
longmeier90 22 小时 53 分钟前
@dayeye2006199 大佬能不能详细说一下 ASG 是个什么东西,从来没听说过,API 网关用的是什么?负载用的什么策略,配置中心用了没有?
podel 17
podel 19 小时 46 分钟前
@longmeier90 一家小公司。只不过技术栈比较新啦。
公司信息[保护隐私,就不直接贴出来了] https://tttemp.oss-cn-shanghai.aliyuncs.com/current-company.txt
longmeier90 18
longmeier90 19 小时 20 分钟前
@podel 你要不要跳槽到俺们公司,眼科医疗行业,前景好、待遇高,加班少
younglinuxer786 20
younglinuxer786 2 小时 44 分钟前
1.看了下帖子,如果数据库和应用都在一台服务器上,先把数据独立放在一台服务器上(磁盘,cpu,men 这些搞好点)应该会好很多
2.如果只是想搞个集群问题不大,微服务要拆分业务太费时间 能保证每个应用下没有单独保存的数据,同时共用数据库 即可实现集群。多个应用之间可以使用 nginx 作为入口 负载到下面的多个应用… (当然这是比较传统的方式 也比较好理解)
3.你也可以考虑将应用打包成 docker 然后使用 k8s 来做集群 一个 pod 启动多个实例 使用 k8s 的 services 来做不同服务的负载 集群要方便管理点(满足第三点的前提)
4.读写分离考虑使用 mycat 或者其他数据库中间件对业务影响不大
5. 看了上面的帖子猜测是统计执行的 sql 造成数据压力有点大 建议先执行*条…