互联网行业框架分类及各自代表

        在互联网行业中,开发框架可以根据其用途和设计目标分为几大类。每一类框架都有其特定的应用场景和代表工具。为此有必要梳理下框架的分类以及他们之间的关系。

1、常见疑问

1.1、web框架与rpc框架的关系

通常情况下 web框架 和 rpc框架之间的关系大概如下。

客户端(HTTP) -> Web 框架(Gin) -> RPC 框架(gRPC) -> 微服务

(1)web框架作为网关。

  • Web 框架(如 Gin、Echo)可以作为 API 网关,接收客户端的 HTTP 请求。

  • 网关将请求转换为 RPC 调用,转发给后端的微服务。

  • 后端微服务使用 RPC 框架(如 gRPC)进行通信。

(2)RPC框架接受网关请求

1.2、诸如trpc-go框架也可以用于构建http服务,为什么还会需要web框架呢?

一句话:trpc-go对http能力只是做了基本的支持,很多场景不专业。

(1)trpc-go框架虽然也支持http协议,但是其核心功能仍然是RPC调用。其对http的支持更多是为了兼容性和网关场景。主流场景依然是微服务架构中的服务间通信。

(2)trpc-go的http能力更大程度是简单接口的暴露,对于很多梗专业的事情web框架不可替代。

  • 深度的http协议控制
  • 涉及浏览器字节交互(SSR、表单提交)
  • 追求极致的http性能
  • 需要模板引擎(用于渲染html)等等。

实际使用场景。

实际使用项目中进场出现两者共存的情况。

例如, 用Gin提供对外API接口,同时用trpc-go实现服务间通信。

这种混合架构技能发挥rpc的高性能,又能利用web框架的协议完整性。

2、常用框架

2.1、web开发框架

用于构建 Web 应用程序或 RESTful API,处理 HTTP 请求和响应。

代表框架:
  • Go: Gin、Echo、Beego、Fiber

  • Python: Django、Flask、FastAPI

  • Java: Spring MVC、Play Framework

  • Node.js: Express、Koa、NestJS

  • Ruby: Ruby on Rails

  • PHP: Laravel、Symfony

特点:
  • 提供路由、中间件、模板引擎等功能。

  • 适合构建面向客户端的 Web 应用或 API 服务。

2.2、rpc框架(微服务框架)

用于实现服务间通信,支持远程过程调用(RPC)。

代表框架:
  • Go: gRPC-Go、tRPC-Go、Go-kit

  • Java: gRPC-Java、Dubbo、Thrift

  • Python: gRPC-Python、Pyro

  • C++: gRPC-C++、Thrift

特点:
  • 支持高性能、低延迟的服务间通信。

  • 通常使用二进制协议(如 Protobuf、Thrift)进行数据传输。

  • 适合微服务架构中的服务调用。

2.3、数据库框架/ORM框架

用于简化数据库操作,提供对象关系映射(ORM)功能。

代表框架:
  • Go: GORM、XORM

  • Python: SQLAlchemy、Django ORM

  • Java: Hibernate、MyBatis

  • Node.js: Sequelize、TypeORM

  • PHP: Eloquent(Laravel 内置)

特点:
  • 提供数据库操作的抽象层,支持多种数据库(如 MySQL、PostgreSQL)。

  • 适合需要与数据库交互的应用。

2.4、前端框架

用于构建用户界面(UI),通常运行在浏览器中。

代表框架:
  • JavaScript: React、Vue.js、Angular

  • TypeScript: Next.js、Nuxt.js

  • CSS: Bootstrap、Tailwind CSS

特点:
  • 提供组件化开发、状态管理、路由等功能。

  • 适合构建单页应用(SPA)或动态 Web 界面。

2.5、测试框架

用于编写和运行自动化测试。

代表框架:
  • Go: Go test、Testify

  • Python: pytest、unittest

  • Java: JUnit、TestNG

  • JavaScript: Jest、Mocha

特点:
  • 提供单元测试、集成测试、性能测试等功能。

  • 适合确保代码质量和功能的正确性。

2.6、配置管理框架

用于管理应用程序的配置。

代表框架:
  • Go: Viper

  • Java: Spring Cloud Config

  • Python: Dynaconf

  • Node.js: node-config

特点:
  • 支持多种配置格式(如 JSON、YAML、环境变量)。

  • 适合需要动态加载和管理配置的应用。

2.7、日志框架

用于记录应用程序的运行日志。

代表框架:
  • Go: Zap、Logrus

  • Java: Log4j、SLF4J

  • Python: Logging(标准库)、Loguru

  • Node.js: Winston、Bunyan

特点:
  • 提供日志级别、格式化、输出目标等功能。

  • 适合监控和调试应用程序。

2.8、任务式调度框架

用于实现定时任务和任务调度。

代表框架:
  • Java: Quartz、Spring Scheduler

  • Python: Celery(结合定时任务)、APScheduler

  • Go: Cron

  • Node.js: Agenda、Node-schedule

特点:
  • 支持定时任务、周期性任务、任务队列等功能。

  • 适合需要定时执行任务的场景。

2.9、容器与编排框架

用于实现应用的容器化和集群管理。

代表框架:
  • Docker: 容器化工具。

  • Kubernetes: 容器编排工具。

  • Helm: Kubernetes 包管理工具。

特点:
  • 提供应用的打包、部署、扩展和管理功能。

  • 适合构建云原生应用。

2.10、机器学习框架

用于构建和训练机器学习模型。

代表框架:
  • Python: TensorFlow、PyTorch、Scikit-learn

  • Java: Deeplearning4j

  • JavaScript: TensorFlow.js

特点:
  • 提供模型训练、推理、数据处理等功能。

  • 适合人工智能和数据科学领域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值