为了开发大项目做了很多技术的了解和学习,其中微服务框架应该是占比最多的。特此做一手学习笔记。
什么是微服务?
系统可以被拆分为多个功能,这些被拆分出来的功能,可提供独立的服务,被称为微服务。就像一个抖音APP,需要用户登录,视频发布等等功能,本来我们写程序一般就一个单体服务程序就解决了,而现在呢就把单体服务拆分,涉及到视频的作为一个服务,涉及到用户的做一个服务,每个服务都是独立运行的(也可能存在调用关系),组成了一整个应用。

一般来说内部服务用RPC互相调用,外部服务则用Restful形式的API调用。
解决问题
解决了传统单体应用中的问题,如复杂性难以管理、团队协作不灵活、可扩展性受限等。通过使服务独立开发、测试、部署,微服务实现了快速开发、持续交付和技术多样性。然而,它也引入了分布式系统的挑战,需要权衡其优势和复杂性来确定是否适合特定项目。
常见的微服务框架结构
- hertz
生成代码的结构 - go-zero
项目结构参考:go-zero实战:让微服务Go起来——3 服务拆分
├── common # 通用库
├── service # 服务
│ ├── order
│ │ ├── api # order api 服务
│ │ ├── model # order 数据模型
│ │ └── rpc # order rpc 服务
│ ├── pay
│ │ ├── api # pay api 服务
│ │ ├── model # pay 数据模型
│ │ └── rpc # pay rpc 服务
│ ├── product
│ │ ├── api # product api 服务
│ │ ├── model # product 数据模型
│ │ └── rpc # product rpc 服务
│ └── user
│ ├── api # user api 服务
│ ├── model # user 数据模型
│ └── rpc # user rpc 服务
└── go.mod
这些框架通常包括服务发现、负载均衡、通信机制、容错处理、配置管理、监控日志、安全性、部署扩展、服务网关等特性。
在实战过程中这些特性的使用很方便,只用修改简单的配置文件就好了。
总结
微服务框架目前我感觉最大的好处就是方便,很多代码不用自己写,可以直接框架生成,让我专注于研究编写业务代码。其实不用微服务框架也能写微服务,用gin+grpc就能构建出简单的微服务应用,这种分治的思想我觉得才是更重要的。