什么是微服务
微服务实际是一种 软件架构,本质就是把一个大型复杂的单个服务拆分为很多的支持服务。
Java 相关微服务开发框架
1、Spring Boot
简化新Spring应用的初始搭建以及开发过程,内嵌Web容器,方便部署,约定大于配置。
场景:快速开发Java Web项目。
2、Spring Cloud
Spring Cloud 是一系列分布式(微服务)应用开发框架的集合,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,它可以利用Spring Boot的开发风格做到一键启动和部署。
场景:功能全,耦合性低,适合开发Java分布式(微服务)应用。
3、Dubbo
Dubbo 基于 Java 的高性能分布式服务框架。它使用RPC/Rest进行通讯,核心功能:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
场景:功能局限,通信效率高,适合开发Java/Nodejs/Python分布式(微服务)应用。
Golang 相关微服务开发框架
1、go-micro
一个插件化的Go基础框架,基于此可以构建微服务,通过protobuf和json进行编解码。主要功能:服务注册与发现、负载均衡、基于RPC的请求/响应、事件通知、消息编解码和可插拔接口等。
场景:基于RPC/Rest,通信效率高,适合开发Golang分布式(微服务)应用。
2、go-kit
严格来说它不是一个框架,而是一套Golang微服务工具集,或称为Go微服务标准库,可以将其作为项目的底层,进行微服务/分布式应用开发。它包含端点(供客户端访问)、熔断器、限流器、传输(编解码)、度量/仪表盘、请求跟踪、日志、服务注册与发现、负载均衡等组件(工具)。
场景:扩展性强,代码实现繁琐,功能全,适合开发Golang分布式(微服务)应用。
运维微服务组件
Istio
它是运维层级的微服务治理工具, 主要解决了开发人员和运维人员所面临的从单个应用向分布式微服务架构转变的挑战。详细介绍,请参考本博客Istio相关理论知识的文档。
当开发微服务框架遇到运维微服务组件,如 Spring Cloud 和 Istio
Spring Cloud
- 特点:
- Java微服务治理全套解决方案
- 对开发人员友好
- 缺点:
- 只针对Java技术栈
- 代码入侵强
Isito
- 特点
- 运维层面微服务治理全套解决方案
- 可以治理任何语言的微服务
- 和Kubernetes结合性比较好
- 对代码无侵入性
- 对开发人员和运维人员友好
- 缺点:
- 每个服务都需要额外的CPU和内存资源
- 每个接口的请求和响应略微有所延迟
- 运维和开发人员都要对微服务知识有一定的储备