微服务框架(golang)
框架是什么?
框架,英文名称framework,可以看作一种脚手架或者是一种标准化模版
框架中该有的组件都已经设定好,方便干活,减少重复工作,同时项目的风格和目录一致,看起来也更加方便
在公司中使用统一的框架,接手起来更加方便,维护起来也更加方便,如果使用同一个框架,发现了漏洞,更新一个框架即可。同时很多业务中存在重复代码,像是日志、监控系统,使用统一框架,负责开发的程序员不需要考虑其他,只管自己业务代码的开发,这样自己写的代码量减少,不容易出现问题。
在开发的主流语言中,Java应用是最广泛的,它有一个统一的框架Spring,全世界都在用,很多问题前辈可能都遇到过,相应的技术博客也比较完善,这是它独特的优势。
golang开发常用的框架
golang是一门比较新的语言,2009年正式发布,作为一门新兴的语言,没有像Java一样形成一个大一统的框架,很多大厂都有自己的框架,还有一些开源团队维护自己的框架。
这样在大厂中会有一些岗位是做基础架构的,专门为公司开发新的适用于公司业务的框架,开发框架也并不简单,需要根据自己公司的业务需求进行开发,还要考虑跟公司其他业务的连通性,公司内部私有协议的适配性,还有框架的使用友好性、稳定性、安全性等等。
我们在学习的时候更多的是要学习框架实现的思想,不要只单纯学怎么使用,要学会自己造轮子->造汽车。
微服务框架基本组件
日志(一个框架能支持不同的日志配置)
配置中心(在配置中心进行微服务配置的设定,不用一个个单独设置)
数据库(支持数据库的交互)
消息队列(各种消息队列,Kafka、RabbitMQ等)
metrics(指标监控)
tracing(链路追踪,单个请求完整的生命周期,找出性能瓶颈之类的)
服务注册发现
依赖注入
RPC框架(远程过程调用,微服务之间数据的交互处理)
熔断和限流(维持微服务的运行,防止崩溃)
……
开源社区常用的框架
-
- go微服务套件库,简单的组件库,能用来实现微服务项目
Go-micro
- 比较早的go微服务框架,可能不兼容新的更新
Go-kratos
- B站开源的框架,可以自己选择组件,也可以使用自己的
Kitex
- 字节开源,自定义netpoll,对使用者要求比较高,性能高
Go-zero
- 好未来开源的,一站式微服务框架(之前吃饭路过好未来,下班好像挺早的)