文章目录
- 一、微服务
- 二、SpringCloud总说
-
-
- 2.什么是 Spring Cloud?
- 2.请谈谈对SpringBoot 和SpringCloud的理解
- 2.使用Spring Cloud有什么优势?它解决了SpringBoot的哪些问题?
- 2.Spring Cloud由哪些组件组成?
- 2.你所知道的微服务技术栈有哪些?
- 2.springcloud核心组件及其作用
- 2.Spring Cloud Netflix
- 2.Spring Cloud 和dubbo的区别?
- 为什么需要服务注册与发现?
- 服务注册和发现是什么意思?/ 服务注册与发现的基本流程是怎样的?
- 为什么要用配置中心?
- 分布式事务基础理论
- 如何设计一个高可用系统?
- 灰度发布是什么?
- 蓝绿发布
- 分布式幂等性如何设计?
- 分布式ID生成有几种方案?
- 如何提高系统的并发能力?
-
- 三、Eureka
- 四、服务调用
- 五、服务网关
- 六、服务总线
- 七、Hystrix
- 八、还有很多
一、微服务
1.什么是微服务?
微服务化的核心就是将传统的一站式应用,根据业务拆分成
一个一个的服务,一个服务做一件事
,服务之间互相协调、互相配合,拥有自己独立的数据库,并且能够被独立地部署到生产环境。
1.分布式、集群、微服务的区别
去饭店吃饭就是一个完整的业务,饭店的厨师、配菜师、传菜员、服务员就是分布式;厨师、配菜师、传菜员和服务员都不止一个人,这就是集群;
分布式:一个大业务分拆多个子业务,部署在不同的服务器上。一个节点垮了,那这个大业务就不可访问了。
集群:同一个业务,部署在多个服务器上
好的设计应该是分布式和集群的结合,先分布式再集群
微服务:与分布式比较相似,微服务化的核心就是将传统的一站式应用,根据业务拆分成
一个一个的服务,一个服务做一件事
,服务之间互相协调、互相配合,拥有自己独立的数据库,并且能够被独立地部署到生产环境。
1.微服务有哪些优缺点?
优点:
- 服务被拆分了,所以每个微服务的代码均只专注于完成该单个业务范畴的事情,这样
代码的可读性好
;在系统中出现问题的时候仅仅只会影响单个微服务,故障隔离性好
;每个开发人员专心搞自己的东西,团队协作起来更易于沟通
缺点:
- 因为把服务拆解了,那么
服务之间的调用就变得复杂
了,而且可能还得引入分布式事务
,增加了系统复杂性
1.微服务有哪些特点?
优点:
- 每个微服务的代码均只专注于完成该单个业务范畴的事情,这样
代码的可读性好
;在系统中出现问题的时候仅仅只会影响单个微服务,故障隔离性好
;每个开发人员专心搞自己的东西,团队协作起来更易于沟通
缺点:
- 因为把服务拆解了,那么
服务之间的调用就变得复杂
了,而且可能还得引入分布式事务
,增加了系统复杂性
1.微服务之间是如何通讯的?
同步:远程过程调用(可以通过HTTP协议进行调用,接口使用restful风格的,数据格式采用json格式)。
缺点:只支持同步的方式,客户端和服务端在请求过程中必须都是可用的
异步:可以使用mq,kafka
优点:把客户端和服务端解耦,而且消息中间件可以缓存消息直到消费者可以消费,支持异步
缺点:消息中间件有额外的复杂性
二、SpringCloud总说
2.什么是 Spring Cloud?
spring cloud 是将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供服务注册中心–服务调用–服务网关—服务总线—服务配置—服务降级
2.请谈谈对SpringBoot 和SpringCloud的理解
SpringBoot专注于快速方便的开发单个个体微服务。
spring cloud 是将SpringBoot开发的一个个单体微服务整合并管理起来
,为各个微服务之间提供服务注册中心–服务调用–服务网关—服务总线—服务配置—服务降级
SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系。
2.使用Spring Cloud有什么优势?它解决了SpringBoot的哪些问题?
Spring Cloud解决了Spring Boot开发面临的以下问题:
小项目不需要考虑Spring Cloud。当你的Spring Boot应用越来越多,应用间关系越来越复杂时,引入SpringCloud就可以解决服务发现的一些问题、负载均衡的一些问题、服务配置的一些问题。
2.Spring Cloud由哪些组件组成?
服务注册中心--服务调用--服务网关---服务总线---服务配置---服务降级
服务注册中心和服务调用就不说了,服务网关就相当于站台,我们在站台等车bus,有了bus还想不起config吗?(这两个好搭档),最后就是车多了需要梳理交通(服务降级)
2.你所知道的微服务技术栈有哪些?
服务注册中心--服务调用--服务网关---服务总线---服务配置---服务降级
服务注册中心和服务调用就不说了,服务网关就相当于站台,我们在站台等车bus,有了bus还想不起config吗?(这两个好搭档),最后就是车多了需要梳理交通(服务降级)
2.springcloud核心组件及其作用
服务注册中心:Eureka
、Zookeeper
、Nacos
Eureka
:服务注册中心。每个服务都向Eureka Server登记自己提供服务的元数据,包括服务的ip地址、端口号、版本号、通信协议等。eureka server将各个服务维护在了一个服务清单中。Eureka的Client连接到 Eureka Server并维持心跳连接,这样系统的维护人员就可以通过 Eureka Server来监控系统中各个微服务是否正常运行。eureka注册的服务之间调用不需要指定服务地址
,而是通过服务名
向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务的请求访问。
Zookeeper
:说一下“Eureka和zookeeper都可以提供服务注册与发现的功能,两者的区别”
服务调用:Ribbon
、Feign
Ribbon
:Ribbon客户端的负载均衡,将负载均衡逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
Feign
:Ribbon+RestTemplate是自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤比较繁琐。Feign则是在Ribbon的基础上进行了一次改进,采用接口调用的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求,不过要注意的是抽象方法的注解、方法签名要和提供方的完全一致。
服务网关:Zuul
、Gateway
Zuul
:zuul是对SpringCloud提供的成熟的路由方案,他会根据请求的路径不同,代理请求到不同的微服务接口,他对外隐蔽了微服务的真正接口地址。
服务总线:Bus
Spring Cloud Bus一般是配合Spring Cloud Config做配置中心的
Spring Cloud config实时刷新也必须采用 SpringCloud Bus消息总线
服务配置:config