文章目录
前言
Spring Cloud 学习笔记(根据课程进行整理)
1.微服务基础知识
一、分布式核心知识
1.1分布式中的远程调用
流行的调用技术:RPC,HTTP
RPC:
RPC(Remote Procedure Call)协议:一种进程间通信方式。允许像调用本地服务一样调用远程服务。RPC框架的主要目标是让远程服务调用更简单、透明、RPC框架负责屏蔽底层的传输方式(TCP或UDP)、序列化方式(XML、JSON、二进制)和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关系底层通信细节和调用过程。
RESTful接口:一种基于http协议的远程调用接口。
- Http相对来说更规范、更标准、更通用,无论使用哪种语言都支持HTTP协议,如果是对外开放API,例如开放平台,外部的编程语言各种各样,无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含RESTful。
- RPC框架作为架构微服务化的基础组件,他能大大降低架构微服务的成本,提高调用方法和服务提供方的研发效率,屏蔽进程调用函数(服务)的各类复杂细节。让调用放感觉像调用本地函数一样调用远端函数,让服务提供方感觉像实现本地函数一样的实现服务。
1.2分布式中的CAP原理
CAP原理:
- C(一致性):多节点数据一致
- A(可用性):保持服务可用,多节点
- P(分区容忍性):是否可以将数据存到多个地方
注:不可能同时满足C、A、P
AC:放弃分区容忍性,物理数据库
AP:可以短暂允许数据不一致,Nosql数据库
CP:放弃可用性
二、常见微服务框架
2.1SpringCloud
SpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟,经得起考验的服务框架组合起来,通过SpringBoot的风格再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和维护的分布式系统开发工具包。
2.2SpringCloud中的核心组件
SpringCloud的本质是在SpringBoot的基础上,增加了一堆微服务相关的规范,并对应用上下文(Application Context)进行了功能增强,既然Spring Cloud是规范,那么就需要去实现,目前Spring Cloud规范已有Spring官方,Spring Cloud Netflix,Spring Cloud Alibaba等实现。通过组件化的方式,Spring Cloud将这些实现整合到一起构成全家桶式的微服务技术栈。
Spring Cloud Netflix组件:
- Eureka:服务注册中心
- Ribbon:客户端负载均衡
- Feign:声明式函数调用
- Hystrix:客户端容错保护
- Zuul:API服务网关
Spring Cloud Alibaba组件
- Nacos:服务注册中心
- Sentinel:客户端容错保护
Spring Cloud原生及其组件
- Consul:服务注册中心
- Config:分布式配置中心
- Gateway:API服务网关
- Sleuth/Zipkin:分布式链路追踪
底层架构原理:
总结一下上面几个核心组件,在微服务架构中,分别扮演的角色:
- Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka注册到Eureka Sever,并且Eureka Client还可以反过来从Eureka Sever拉取注册列表,从而知道其他服务在哪里
- Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台服务器选择一台
- Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
- Hystrix:发起请求的是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免发生服务雪崩的问题
- Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
2.3ServerComb
ServiceComb是华为云于2017年6月开源的微服务框架,并于2017年12月正式进入Apache软件基金会孵化。其包括一站式的服务注册、服务治理、动态配置功能,具备服务化契约增强、多语言SDK支持、多通信协议支持等优势特性, 并提供SAGA数据最终一致性方案解决微服务架构数据一致性难题。ServiceComb 兼容Spring Cloud等业界流行微服务框架,互通业界生态。ServiceComb的项目发起人和负责人姜宁为华为开源能力中心技术专家及华为PaaS领域开源专家,拥有多年参与Apache中间件项目的经验并指导多个Apache孵化项目,熟悉开源社区开发流程,对微服务及SOA均有较深入研究。ServiceComb作为华为微服务引擎CSE核心,已在华为流程IT、各产品线云化、消费者云等众多重大项目上成功稳定商用,,加速业务上云并帮助实现高效的运维管理…
2.4.ZeroC ICE
Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件。Ice是RPC通讯领域里最稳定、强大、高性能、跨平台、多语言支持的老牌开源中间件,特别适合于当前互联网领域中一个平台存在多种开发语言编程,以及网站和app应用并存的复杂大型项目。 RPC(Remote Procedure Call Protocol 远程过程调用协议),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC假定某些传输协议的存在,如TCP或UDP,为通讯程序之间携带信息数据;在OSI网络通讯模型中,RPC跨越了传输层和应用层。Ice通过与编程语言无关的中立语言Slice(Specification Language fro Ice)来描述服务的接口,从而达到对象接口与其实现想分离的目的…
@注:
本文主要为个人通过看视频、书籍、博客等方式对Spring Cloud进行学习和整理,欢迎交流学习~