Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
一、SOA与微服务的关系
SOA(Dubbo):面向服务的架构,他是一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列功能,一个服务通常以独立的形式存在,各个服务间通过网络调用。
微服务架构:类似SOA,是在SOA上做的升华。微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
二、分布式核心知识
2.1,远程调用技术
2.1.1,RPC协议
RPC是一种进程间的通信方式。允许像调用本地服务一样调用远程服务。RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化和通信细节。开发人员只需要了解提供了什么样的远程服务接口即可。
2.1.2,Http协议(RESTful风格接口)
区别与联系:
2.2,分布式中的CAP原则
一致性(C):多节点数据时刻一致。(物理数据库)
可用性(A):保持服务可用(采用多节点)。(Nosql数据库,允许数据短暂不一致)
分区容错性(P):是否可以将数据存到多个地方。(zookeeper集群。如果同步数据时间比较长,这时候节点是不可用的)
CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
三、RestTemplate介绍
Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
3.1,RestTemplate方法介绍
四、注册中心介绍
4.1,微服务的注册中心
注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,
当服务需要调用其它服务时,就这里找到服务的地址,进行调用。
4.1.1,注册中心主要作用
1. 服务发现:
服务注册/反注册:保存服务提供者和服务调用者的信息
服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
服务路由(可选):具有筛选整合服务提供者的能力。
2. 服务配置:
配置订阅:服务提供者和服务调用者订阅微服务相关的配置
配置下发:主动将配置推送给服务提供者和服务调用者
3. 服务健康检测
检测服务提供者的健康情况
4.1.2,常见的注册中心
Zookeeper:
zookeeper它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说zookeeper=文件系统+监听通知机制。
Eureka:
Eureka是在Java语言上,基于Restful Api开发的服务注册与发现组件,Springcloud Netflix中的重要组件
Consul:
Consul是由HashiCorp基于Go语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,采用Raft算法保证服务的一致性,且支持健康检查。
Nacos:
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简单来说 Nacos 就是注册中心 + 配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。Nacos 还是 Spring Cloud Alibaba 组件之一,负责服务注册与发现。