前言
微服务的介绍,需要使用大篇文章来介绍,包括架构演进、微服务基础组成、SOA架构特点、基于什么原因从SOA进化到微服务等等,该专栏对此不做介绍,想写了再说,这块只是写个笔记;想详细了解的可以去读一下周志明的凤凰架构,写的特别好
一句话
- 从SOA(Service Oriented Architecture 面向服务的架构)变种而来,拆分粒度更细,从而没有微内核服务。
微服务基础功能
- 基础设施方面
- 进程间通讯机制
- 服务发现、服务注册、服务路由
- 服务容错
- 分布式事务
- 服务分流
- 开发效率提升
- 网关
- 测试、运维效率提升
- 配置中心
- 服务监控、服务跟踪、服务安全
当然,我们也可以在单体服务之间,使用微服务单个组件,比如在我们实际项目中,会使用OpenFeign,对上位机相关接口进行远程调用,同时使用Hytrix进行调用保底。
SpringCloud介绍
- Spring Cloud 是通用微服务组件的容器
- 一是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过将其Spring Boot化,进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
- 二是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色
SpringCloud组件介绍
组件名称 | 简介 |
---|---|
Spring Cloud Netflix | 包含Netflix Eureka(服务注册、发现等)、Hystrix(熔断器)、Zuul(动态路由、监控、弹性、安全等)、Archaius(配置管理API) |
Spring Cloud Alibaba | 包含Sentinel(流量控制和服务降级)、Nacos(服务注册和发现、分布式配置)、Seata(分布式事务)、Dubbo(远程通信)等等 |
Spring Cloud Bus | 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。 |
Spring Cloud Circuit Breaker | 包含 Resilience4J(响应式/非响应式) 和 Spring Retry(断路器) 的实现 |
Spring Cloud CLI | 可以通过编写 Groovy 脚本来运行 Spring Cloud 组件应用程序 |
Spring Cloud Commons | Spring Cloud Commons 以两个库的形式提供功能:Spring Cloud Context 和 Spring Cloud Commons。Spring Cloud Context 为 Spring Cloud 应用程序的ApplicationContext(引导上下文、加密、刷新范围和环境端点)提供实用程序和特殊服务。Spring Cloud Commons 是一组用于不同 Spring Cloud 实现的抽象和通用类(例如。Spring Cloud Netflix 与 Spring Cloud Consul) |
Spring Cloud Config | 俗称的配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion |
Spring Cloud Consul | Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. |
Spring Cloud Cluster | Spring Cloud Cluster将取代Spring Integration。提供在分布式系统中的集群所需要的基础功能支持,如:选举、集群的状态一致性、全局锁、tokens等常见状态模式的抽象和实现。 |
Spring Cloud Gateway | 旨在提供一种简单而有效的方法来路由到 API,并为(安全性、监控/指标)提供切面支持 |
Spring Cloud OpenFeign | 声明式 REST 客户端 |
Spring Cloud Security | 一个声明性模型,以最少的逻辑构建安全的应用程序和服务,可以在外部(或集中)进行大量配置,使其自身能够实现协作远程组件的大型系统, 通常使用中央标识管理服务 |
Spring Cloud Sleuth | Sleuth 配置了开始使用所需的一切。这包括将跟踪数据报告到何处 (span)、要保留多少个跟踪 (采样)、是否发送远程字段 (baggage) 以及跟踪哪些库。 |
Spring Cloud Stream | 用于构建与共享消息传递系统连接的高度可扩展的事件驱动微服务 |
Spring Cloud Task | Spring Cloud Task 允许用户使用 Spring Cloud 开发和运行短期微服务,并在本地、云中甚至在 Spring Cloud Data Flow 上运行它们 |
主流架构技术栈及替代方案
组件功能 | 组件 |
---|---|
配置中心 | Config 、Consul、 Alibaba Nacos |
服务发现 | Netflix Eureka、Consul、ZooKeeper |
网关 | Netflix Zuul、Gateway |
服务治理 | Netflix Hsytrix、Sentinel |
进程内负载均衡 | Netflix Ribbon、 Loadbalancer |
声明式 HTTP 客户端 | OpenFeign |
安全控制 | Security、Oauth2.0 |
链路追踪 | Sleuth、Zipkin |
容器化 | Docker、Kubernetes |