微服务的功能
Spring Cloud
常见组件
- 服务注册和发现组件Eureka
Eureka组件提供了服务的健康监测,以及友好的UI。Eureka组件可以让开发人员随时了解服务单元的运行情况。Spring Cloud也支持Consul和Zookeeper,用于服务注册和发现。
- 熔断组件Hystrix
除了有一些基本的熔断器功能外还能够实现服务降级、服务限流的功能,也提供了熔断器的健康检测,以及熔断器健康数据的api接口。Hystrix Dashboard提供了单个服务熔断器的健康数据的界面展示。Hystrix Turbine组件提供了多个服务的容电器的健康状态数据的界面展示。
- 负载均衡组件Ribbon
通常和Eureka、Zuul、RestTemplate、Feign配合使用。Ribbon和Zuul配合,很容易做到负载均衡,将请求根据负载均衡策略分配到不同的服务实力。Ribbon和RestTemplate、Feign配合,在消费服务时能够做到负载均衡。
- 路由网关Zuul
智能路由和过滤的功能。内部服务的api接口通过Zuul网关统一对外暴露,内部服务的api接口不能直接暴露,防止内部信息对外暴露。
- Spring Cloud config
提供了仓库配置文件统一管理功能。Spring Cloud Config包括Server端和Client端,Server端读取本地仓库或者远程仓库的配置文件,所有的Client向Server读取配置信息,从而达到配置文件统一管理的目的。通常情况下,Spring Cloud Config和Spring Cloud Bus相互配合刷新指定的Client或所有Client的配置文件。
- Spring Cloud Security
对Spring Security组件的封装,向服务单元提供了用户验证和权限验证。
- Spring Cloud Sleuth
分布式链路追踪组件,封装了Dapper、Zipkin和Kibana等组件,通过它可以知道服务之间的相互依赖关系,并实时观察链路的调用情况。
- Spring Cloud Stream
数据流操作包,可以封装RabbitMq、ActiveMq、Kafka、Redis等消息组件,利用Spring Cloud Stream可以实现消息接口和发送。
项目一览
- Spring Cloud Config:服务配置中心组件。
- Spring Cloud Netflix:通过包装Nerflix公司的微服务组件实现的,也是Spring Cloud核心的核心组件,包括Eureka、Hystrix、Zuul、Archaius等。
- Eureka:服务注册和发现组件。
- Hystrix:熔断器组件。
- Zuul:智能路由网关组件。
- Feign:声明式远程调度组件。
- Ribbon:负载均衡组件。
- Archaius:配置管理Api组件,一个机遇Java的配置管理库,用于多配置的动态获取。
- Spring Cloud Bus:消息总线组件,用于动态刷新服务的配置。
- Spring Cloud Sleuth:服务链路追踪组件,封装了Dapper、Zipkin、Kibina等组件,可以实时监控服务的链路调用情况。
- Spring Cloud Data Flow:大数据操作组件。Spring XD替代品。
- Spring Cloud Security:安全模块组件,通常配合OAuth2使用来保护微服务系统的安全。
- Spring Cloud Consul:对Consul的封装,和Eureka类似,服务注册和发现组件。
- Spring Cloud Zookeeper:对Zookeeper的封装,服务注册和发现组件。
- Spring Cloud Stream:数据流操作组件,实时发送和接收消息。
- Spring Cloud CLI:对Spring Boot CLI的封装,可以让用户以命令行方式快速运行和搭建容器。
- Spring Cloud Task:基于Spring Task,提供了任务调用和任务管理功能。
- Spring Cloud Connectors:用于Paas云平台连接到后端。
Dubbo
阿里巴巴开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
Dubbo核心内容:
- RPC远程调用:封装了长连接NIO框架,如Netty、Mina等,采用多线程模式。
- 集群容错:提供了基于接口方法的远程调用的功能,并实现了负载均衡策略、失败容错等功能。
- 服务发现:集成了Apache的Zookeeper组件,用于服务注册和发现。
Kubernetes
容器集群管理系统,为容器化的应用程序提供部署运行、维护、扩展、资源调度、服务发现等功能。
主要特点如下:
- Planet Scale(大容量)
- Never Outgrow(永不过时)
- Run Anywhere(随时随地的运行)
主要功能:
- Autumatic Binpacking(自动包装)
根据程序自身的资源需求和一些其它方面的需求自动配置容器。能够最大化的利用机器的工作负载,提高资源的利用率。
- Self-healing(自我修复)
容器失败自动重启,当节点处于“死机”状态时,它会替代并重新编排;当容器达到用户设定的无响应阀值时,它会被剔除,并且不让其他容器调用它,知道它恢复服务。
- Horizontal Scaling(横向扩展)
可以根据机器的CPU的使用率来调整容器的数量,只需要开发人员在命令行输入几个命令。-
- Automated Rollouts and Rollbacks(自动部署或回滚)
- Secret and Configuration management(配置管理)
部署和更新应用程序的配置,不需要重新打镜像,并且不需要在堆栈中暴露配置。
- Storage Orchestration(存储编排)
- Batch execution(批量处理)