微服务框架的学习与使用 | 青训营

61 阅读2分钟

为了开发大项目做了很多技术的了解和学习,其中微服务框架应该是占比最多的。特此做一手学习笔记。

什么是微服务?

系统可以被拆分为多个功能,这些被拆分出来的功能,可提供独立的服务,被称为微服务。就像一个抖音APP,需要用户登录,视频发布等等功能,本来我们写程序一般就一个单体服务程序就解决了,而现在呢就把单体服务拆分,涉及到视频的作为一个服务,涉及到用户的做一个服务,每个服务都是独立运行的(也可能存在调用关系),组成了一整个应用。 20230828173737.png

一般来说内部服务用RPC互相调用,外部服务则用Restful形式的API调用。

解决问题

解决了传统单体应用中的问题,如复杂性难以管理、团队协作不灵活、可扩展性受限等。通过使服务独立开发、测试、部署,微服务实现了快速开发、持续交付和技术多样性。然而,它也引入了分布式系统的挑战,需要权衡其优势和复杂性来确定是否适合特定项目。

常见的微服务框架结构

├── 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就能构建出简单的微服务应用,这种分治的思想我觉得才是更重要的。

阅读资料

维基百科-微服务