2020-12-29

博客园Logo
首页
新闻
博问
专区
闪存
班级

代码改变世界
搜索
注册
登录
Kevin Wan’s Doodle
–The more we do, the more we can do.
博客园 首页 新随笔 联系 订阅 订阅 管理 随笔 - 94 文章 - 0 评论 - 223
一个20年技术老兵的 2020 年度技术总结

大家好!我是 go-zero 作者 Kevin。充满惊吓的 2020 快要过去了,看到掘金上的技术人年度征文,忍不住文字记录一下艰辛而又充满收获的 2020 ✍️

疫情开始
春节假期疫情突然升级,我们面临着自身平台的转型升级。作为晓黑板CTO,有两个重点工作:

保证大规模使用场景下平台的稳定性
保证转型所需的新业务能够快速交付
团队压力巨大的同时也感受到了前所未有的战斗热情,养兵千日用兵一时,不经历战与火的洗礼,怎么知道团队的技术能力是否能够经受得住流量洪峰的考验。

战斗开始,迅速落实业务团队进行急需功能的开发,并行安排架构团队进行技术隐患排查、演练、攻关。

在大概两个月的时间里,我们基本一日三餐都在电脑桌前,困了就睡觉,醒来写代码(当然还有必要的开会),这真是人生一段非常难忘的特殊经历。。。

开始踩坑
随着所需功能的极速上线,我们马上开始了大规模压测,大坑如下:

大量请求失败,然而服务端压力一切正常,一顿排查,发现原来是进到内网的请求被 nginx 转发时又打到外网了,而外网我们是启动了 WAF(Web Access Firewall),WAF 会认为所有用户都来自我们内网的那些 IP,这“明显”是攻击嘛,于是 drop 了大量请求,由此,我们指定了规则:进到内网的请求不允许转发到外网。
为了快速实现功能,有同学用 nodejs 实现了部分功能,部署到 k8s 集群里,流量一起来,nodejs pod 立马扛不住,再加上难以控制的内存泄露,让我们迅速决定不再允许使用 nodejs 做后端,使用 nodejs 纯属“意外”。
某云厂商 oss 存储用的 LSM Tree 方式实现,在小文件突发增加时无法及时分裂,导致我们访问量大时出现两次 oss 访问故障。后来我们自己多申请了几个 bucket 来从代码层分散文件存储请求。
实战效果
经过前后一个月开发、压测和开学前演练,我们的系统基本满足开学需求了,接下来就是接受实战检验了。

开学第一天,我们遇到的第一个问题部分服务供应商无法承载流量压力,虽然我们之前盘算过,也充分交流过,但还是未能预料到洪峰流量的凶猛,服务商紧急增加资源得以解决。

然后我们消息分类服务的 ElasticSearch 集群压力过大,扩容的同时,发现调用代码未加熔断保护,直接把 ElasticSearch 集群压死了,里面加上熔断保护,几行代码就好了,自适应熔断保护工具包见 这里。

经过第一周的密集爆发式流量的考验,我们总体很稳定。为此还得到了有关部门的感谢信,相比友商,我们的服务稳定性还是相当不错的。后续服务稳定性上基本可以用波澜不惊来形容。至此,go-zero (虽然此时还不叫 go-zero)算是经受了充分的实战检验 💪

走向开源
7月份在跟集团技术通道老师的交流过程中得到了充分的肯定,集团开源通道推动和帮助我把底层微服务支撑框架对外开源。

在8.7日深夜,我完成了 github 代码的第一次提交,此时文档仅有我临时写出来的一页 readme,为啥只有一页 readme 就选择开源了呢?我觉得万事开头难,如果决定把文档都写完再开源出来的话,可能这事就搁置了,所以还是先让球滚起来吧!

一经开源,社区立马给了我们比较热烈的反馈,更推动了我们去快速完成文档。我们在一个周末就补充了大量的使用文档,提供了比较完整的示例 shorturl 和 bookstore。后面大部分开发者都通过这两个例子感受到了 go-zero 的便捷和工程效率。感谢大家给了我们很多对示例的改进意见。

8月16日,go夜读的分享 系统的讲述了 go-zero 背后的故事和设计思考,获得了很多观众的留言认可。至今依然有不少人针对这个视频给我积极的反馈。感谢大家的认可!

8月24日,gocn 的 报道,让 gopherchina 社区第一次大规模的了解了 go-zero。社区开始有大量gopher的加入,微信群人数迅速增长。

9月开始,go-zero 多次出现在 github Go 语言日榜月榜顶部,如图:

日榜 月榜
day month
同时不少家公司将 go-zero 用于生产,并跟我反馈上线后一直平稳运行,其中不乏日活过百万的平台。

10月获得了 gitee 最有价值项目(GVP),并接着获得了开源中国年度 最佳人气项目奖项。

11月22日,我在 gopherchina 大会做了『云原生go-zero微服务框架的设计思考』的主题分享,现场气氛非常热烈,据说门口堵满了进不来了,获得了很多资深开发者的认可,知乎评论见 这里,其中提到的我的年龄不对哈👀,部分现场图如下:

分享 观众
talking audience
12月20日,应邀参加腾讯云开发者大会,做了『转型之后 - 面对流量洪峰,微服务架构如何进行弹性设计?』的分享,如下:

开始 大纲
talking audience
在掘金发了 20+ 篇 go-zero 系列文章,跟用户详细分享了微服务框架设计的原理和实现,详见 这里。

社区的认可
近 3000 人的微信社区,每天热烈的技术讨论和用户之间的相互帮助,已经形成了良好的社区氛围。我们也从中获得很多的用户反馈,为我们进一步加强 go-zero 指明了方向!👏

github star 正常每月增长 1000 左右,平均每天 33+ stars,现在 4700+,增长曲线如下:

trends

再次复盘
用户到底想要什么样的框架?
首先,能够写更少代码解决业务需求。更少的代码意味着更快的产出,更少的bug。
其次,框架是否稳定,有没经过实战检验。毕竟很少人愿意当小白鼠的。
再次,社区是否活跃,遇到问题是否能够快速得到解决。
用户为什么喜欢 go-zero?
全面的微服务治理能力
内置 goctl 工具帮助用户尽可能只关注业务代码
go-zero 经过了我们线上海量并发实战检验
活跃的社区,用户的互相解答,go-zero 团队的及时跟进
2021年技术展望
研发团队工程效率带上新台阶,期望让大家产出更高的同时也能有更好的能力提升
期望进一步加强 go-zero 的工程效率提升,让开发者编写更少的代码(业务代码)就能拥有稳定的微服务系统
一个小目标:一年一万星 💪
项目地址
https://github.com/tal-tech/go-zero

欢迎大家使用 go-zero 并 star 支持我们!👏

致谢
真心感谢一直支持我们的大佬们,以及众多使用 go-zero 的 gopher 们,之所以不列名单,实在是帮助过我们的人太多了,生怕一不小心就遗漏了某位大佬 🤝

项目地址:
https://github.com/tal-tech/go-zero

好文要顶 关注我 收藏该文
Kevin Wan
关注 - 1
粉丝 - 52
+加关注
6 0
« 上一篇: 我用 go-zero 一周实现了一个中台系统,已开源!
posted on 2020-12-28 09:16 Kevin Wan 阅读(447) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
登录后才能发表评论,立即 登录 或 注册, 访问 网站首页
写给园友们的一封求助信
【推荐】News: 大型组态、工控、仿真、CADGIS 50万行VC++源码免费下载
【推荐】有你助力,更好为你——博客园用户消费观调查,附带小惊喜!
【推荐】博客园x丝芙兰-圣诞特别活动:圣诞选礼,美力送递
【推荐】了不起的开发者,挡不住的华为,园子里的品牌专区
【福利】AWS携手博客园为开发者送免费套餐+50元京东E卡
【推荐】未知数的距离,毫秒间的传递,声网与你实时互动
【推荐】新一代 NoSQL 数据库,Aerospike专区新鲜入驻

相关博文:
· 我的2019年,20岁之年
· 2019年总结及2020年规划
· 2019年总结与2020年展望
· 2019年12月20日反思
· SPSS 2019年10月20日 作业
» 更多推荐…

最新 IT 新闻:
· 年度游戏《塞尔达:旷野之息》前传来了!以一当万、华丽连招,带你回到 100 年前
· 微软悄然更新支持文档 Windows 10X确认支持Modern Standby
· 小米长江产业基金入股芯片设计公司“泰凌微电子”
· 新款Mac也能安装Windows了!还干掉了Surface?
· 游族:年终奖金等将如期发放,明年照常晋升调薪
» 更多新闻…
历史上的今天:
2006-12-28 我的fgen放到sourceforge上了
昵称: Kevin Wan
园龄: 14年8个月
粉丝: 52
关注: 1
+加关注
< 2020年12月 >
日 一 二 三 四 五 六
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

搜索

找找看

谷歌搜索
常用链接

我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
exception(1)
java(1)
随笔分类

.NET(10)
C++(9)
eXtreme Programming(2)
Interview questions(7)
IT(9)
Java(1)
Linux(2)
Living(3)
Management(2)
Misc(17)
OO(2)
Python(4)
Working in Microsoft(4)
随笔档案

2020年12月(8)
2020年11月(6)
2020年10月(10)
2013年6月(2)
2008年4月(1)
2008年1月(1)
2007年12月(1)
2007年8月(1)
2007年5月(2)
2007年4月(1)
2007年1月(3)
2006年12月(3)
2006年11月(4)
2006年10月(4)
2006年9月(1)
更多
Microsofter

Dflying’s Night
Jeffrey Zhao
My Company

Flash Chat
My Projects

cppgen
Cpp Delegate
相关链接

与本blog的读者交流

最新评论

  1. Re:我用 go-zero 一周实现了一个中台系统,已开源!
    你为何这么牛!

–民工也Coding
2. Re:Go微服务实践之增删改查
@tky753 我们不只是orm,是为了crud+cache一起生成,避免高并发带来的数据库压力,也防止程序员手抖写错…
–Kevin Wan
3. Re:Go微服务实践之增删改查
Go没有企业级的Orm,导致很多应用框架都喜欢自己造一套,也不知道是好是坏。

–tky753
4. Re:Go微服务实践之增删改查
干货不错,支持一下:)

–gowk
5. Re:go-zero 如何扛住流量冲击(一)
老师您好,我是开源中国的内容志愿者李艳,想跟您聊聊内容合作,能否加下您的微信或qq给您详细说明下

–爱吃甜品的女孩
阅读排行榜

  1. C#中Dispose和Close的区别!(71935)

  2. 汇编总结(7876)

  3. C#中不需要用锁的线程安全的Singleton设计模式!(6085)

  4. Google新玩法(转载)(5339)

  5. c++头文件,cpp文件,makefile,unit test自动生成器(4668)
    评论排行榜

  6. C#中不需要用锁的线程安全的Singleton设计模式!(54)

  7. 谁要windows live messenger(msn8.0)的邀请?(26)

  8. C#中Dispose和Close的区别!(25)

  9. 有大量gmail+google Calendar的邀请(92个),需要的请留下email(15)

  10. extreme programming之what’s Scrum?(12)
    推荐排行榜

  11. 企业级RPC框架zRPC(5)

  12. C#中Dispose和Close的区别!(5)

  13. 一个20年技术老兵的 2020 年度技术总结(4)

  14. C#中不需要用锁的线程安全的Singleton设计模式!(4)

  15. Go微服务实践之增删改查(3)
    Powered by: 博客园 Copyright © 2020 Kevin Wan
    Powered by .NET 5.0 on Kubernetes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值