开往未来的列车|我是如何部署日活几十万的单体应用服务的?
上篇文章介绍了我是如何接手了一个日活几十万的单体应用项目 , 以及后续要做的事情 。
当我接到一个DAU几十w的项目 , 并开始维护它
它在线上每天服务几十万的用户 , 并且流水过亿 。 没有所谓的微服务、分布式 , 就是一个war包 , 然后扔到tomcat里面去 。 里面的代码很多 , 目前我看到的最大的一个类是28000多行代码 。 是的 , 我没有多打一个0 , 确确实实的2w8千多行 。
有朋友关心线上是如何部署的 , 这里分享一下我的方案 , 大家也可以一起讨论一下 。
我曾经独立负责过一个微服务 , 它承载了晚高峰每小时2000w+次的请求 , 平均到每秒是大概是5500次的接口调用 , 线上是用了4台4C8G的阿里云服务器 , 单机单服务部署方案 。
关于业务开发的一些心得 , 我个人的几点看法:
- 复杂的场景简单化 , 一定要越简单越好 , 只有简单了 , 你才hold住 , bug才会少;
- 先不要去考虑性能的事情 , 先保证功能没bug吧 , 然后再去考虑性能的事情 , 当然你的经验会让你写的代码性能优越 , 优秀的程序员自带性能;
- 高并发的前提是高可用 , 没有了可用性 , 谈高并发都是扯淡;
- 写好你自己的代码 , 然后去压测它 , 单接口压测、链路压测 , 找到慢的地方(怎么找?) , 想办法去优化它 , 然后你就慢慢的成为了高手 , 高并发经验就这么来的;
- 能用缓存的就用缓存 , 数据库其实也很牛逼 , 前提是你的sql要足够快 , 慢sql是性能的第一杀手!
- redis基本能hold住大部分的并发请求 , 当然MQ也很好用 , 尽量用这些中间件 , 别自己写了 , 除非你们有基础架构组 。
1、部署架构开始说我的单体应用是怎么部署的 , 一图胜千言:
- 一个api域名指向阿里云的SLB , SLB指向三台ECS服务器的内网IP并指定端口 , 权重都100;
- 三台Job服务器 , 专门去跑任务(各种埋点统计、数据报表、业务job等等);
- 6台ECS的配置都是4C8G , 连续包月 , 费用不高;
- 一台16G集群版Redis , 高并发就靠它了;
- 阿里云数据库RDS一主一从 , 代码里读写分离;
- 日志还是要好好打的 , 一个优秀的程序员一定会合理有效的log.info、log.error;
我没有高大上的方法 , 也从来不写单元测试 , 只是写完了自己测试一下 , 然后自己再过一遍自己的代码 , 这需要清晰的逻辑 。 很多时候 , 思考的时间远远超过写代码的时间 , 以下是我的一些方法或工具:
- 我有一个代码仓库 , 使用的是云效codeup;
- 我通过jenkins去构建并发布;
- 我的发布粒度是文件级别 , 即只同步更改过的class文件或者其他配置文件到指定的服务器上 , 利用版本控制工具;
- 纯人工灰度 , jenkins先发布一台服务 , 看日志并校验数据验证功能 , 预计5分钟左右的时间 , 继续发布剩余的机器 , 一台一台发布;
推荐阅读
- 金屋房市|未来房价会降多少?可能会跌到刚需兜里有多少钱的地步!你信吗?
- 韦少|未来到底是谁的?韦少哈登太难了,8年过去了詹姆斯怎么还这么强
- 新民晚报|注意了!未来两个双休日3号线这个区段将暂停运营
- 中国新闻网|服贸会商机:“网课”会成为教育行业的未来吗?
- 探索未来|40+女人穿玄色显老?是你不会搭配!看50岁富冈佳子这么穿多美
- 第一财经|免税概念利好消息频出,机构看好板块未来强劲增长丨牛熊眼
- 落叶知秋|中芯国际将被美国拉黑,鸿蒙系统已有进展,未来科技方向在何方?
- 开往未来的列车|3亿人曾用过,最让人感到不舍的腾讯产品,如今终被停服
- 大众报业·海报新闻|该校此前已有3位校友获此殊荣,山东大学教授彭实戈获未来科学大奖
- 瑞银集团|瑞银钱于军:未来中国资本市场进一步开放 很多外资会摩拳擦掌
