让腾讯、字节跳动放弃 Python 的 Go 微服务,凭什么?
Go语言中文网
· · 4171 次点击 ·
·
开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
月初看到斗鱼开源了基于 Go 语言的微服务框架 Jupiter,我就开始关注微服务架构的逐渐 “Go 化”,这已经是互联网应用开发模式的不知道多少次变革了。
从低效的单体应用开发时代,到一切皆云上的云原生时代,如同一股巨浪滚滚而来。微服务架构作为云原生落地实践的代表,凭借“分而治之”的手段,把臃肿的单体应用拆分为可以各自为战的微服务,成为各家大厂的首选。
- 而 Go 这个高性能的编译型编程语言,其简明的语法、丰富的内置类型和极高的并发性能,让开发者发现这是落地微服务架构实践的绝佳利器。
微服务架构已经成为服务端开发的主流,而主流的微服务架构包括 Spring Cloud、Dubbo 等,都推出了 Go 版,以发挥 Go 在微服务中的高并发优势。Go 语言又凭借简单易上手、静态编译、性能优越等优点,让腾讯、字节跳动这些互联网巨头纷纷在原有的 Python / C / C++ 实现的系统往 Go 上迁移,或者完全采用 Go 去开发新的系统。(目前今日头条后端服务超过 80%的流量是跑在 Go 构建的服务上。微服务数量超过 100 个,高峰 QPS 超过 700 万,日处理请求量超过 3000 亿,是业内最大规模的 Go 应用。)用 Go 落地践行微服务架构绝对是一种趋势。技术也是有风口的,选择一个有未来的知识去学习,一来求职的时候薪资高,因为供需不平衡;二来是你的技术眼界是超前的,再去学习别的知识也都会很快。刚好最近我的一位老朋友,在拉勾教育推出了一门「 Go 微服务实战 38 讲 」的专栏,原价¥98,老规矩:上线 24 小时内,只卖 1 元。虽说微服务和 Go 的学习资料在网上一抓一大把,但我还是推荐你看看这个「 Go 微服务实战 38 讲 」,不仅是1元白给这么简单:
- 没有实战开发经验,掌握了微服务相关的知识,却没有真正实践过;
- 只零散的看过讲解微服务组件的应用,没有通过完整的案例来了解微服务架构;
- 对 Go 微服务没有很了解,大多数实践还是 Java 为主;
- 没有云上开发的经验,很多时候都是在本地机器上运行应用。
那这个专栏你真的要好好学,内容的价值远超你的想象。专栏会先介绍云原生的相关背景知识,描述应用如何在云计算平台上开发、部署和运行,接着详细介绍微服务架构中各个基础组件的设计和原理,并使用 Go 来落地微服务架构的实践。并以一个货运平台的业务案例为主线,阐述一个业务需求从划分、设计为微服务到 Go 开发、再到在技术平台上部署、上线、运行的全流程。介绍云原生诞生的背景及其概念、微服务的组成和发展趋势,并讲解如何使用 DDD(领域驱动设计)来划分微服务,以及介绍下一代微服务架构 Service Mesh。
这部分知识能够帮助你充分理解云原生和微服务的基础概念,以及云原生应用开发的流程和方法论,为你接下来学习各微服务组件的原理和应用打下坚实的理论基础。
主要介绍 Go 开发的基础知识,包括 Go 语法和流程控制、Go 并发和 Go Web 应用开发等,并阐述如何采用 DDD 对货运平台的业务进行划分,以及相关案例应用实战(微服务部署、容器编排、持续集成和自动化测试等)。
这部分主要是补充 Go 语言开发基础,帮助没有了解过 Go 的朋友快速掌握 Go 开发的基本要领,也方便接下来讲解如何使用 Go 搭建微服务应用。
主要讲解微服务架构中基础组件的原理和 Go 业务案例的实战,包括服务注册与发现、RPC 调用、网关、容错处理、负载均衡、统一认证与授权,以及分布式链路追踪等。
我们会重点关注各个组件背后的实现原理和使用 Go 开源或者自实现的方式为案例微服务添加组件能力。最后,我还会介绍如何通过 Service Mesh 来整合这些组件提供的能力。
主要分享 Go 微服务开发中的相关经验和要点,包括日志采集、Go 错误处理、并发陷阱和系统监控等。结合讲师多年在 Go 微服务开发中积累的相关实践经验,进而避免你在未来的开发中“踩坑”。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889