使用springCould来搭建微服务项目我们需要了解哪些组件

微服务是什么?
微服务是一种架构思想,重点在于将服务颗粒化,分而治之。
各个服务之间通过restful API之类的轻量级通讯机制来进行交互。

微服务遵循的原则是什么?

1.高内聚,低耦合:根据业务建模,把每个功能拆分成各个稳定的服务,各个服务之间只有输入输出关系,没有依赖关系
2.最少知识原则:服务暴露的接口完全是服务于业务的,并且不需要调用方了解任何接口内部的实现逻辑
3.把外部调用服务所需要的入参,出参,消息体都定义到jar包中作为公共模型,供调用方引用

通过SpringCloud来搭建微服务项目我们需要使用它的哪些功能模块?

1.eureka服务注册中心:用于服务注册以及服务发现
2.config配置中心:结合rabbitMQ实现动态刷新服务配置
3.ribbon负债均衡器:用做服务调用时的负债均衡
4.zuul网关路由:用于管理API网管以及动态路由
5.hystrix熔断机制:通过服务监控,服务降级以及服务熔断用来处理高并发情况下可能出现的问题

eureka服务发现有哪几种方式呢?
eureka服务发现有两种方式。
第一种是服务端发现,需要接入zookeeper之类的代理,对于客户端来说,直接调用就好了,代理来控制究竟调用注册中心的哪台服务。
第二种是客户端发现,客户端可以从注册中心拿到所有可用服务的地址,然后自己实现一套逻辑去选择具体调用哪个服务。

Ribbon是如何做负债均衡的呢?

分为两步,第一步是选择Eureka Server,ribbon会优先选择在同一个Zone下面负载较少的Server
第二部是根据用户指定的策略(轮询,随机,根据时间加权等),然后从服务注册列表中选择一个服务。
在代码层次有两种实现方式:RestTemplate和Fegin

SpringCloud的配置中心是怎么实现的?

可以通过关联git来实现的。
在pom.xml里面引入配置中心相关依赖,然后在application.yml里面加入git仓库的地址和账号信息,然后就可以在git网站上更新服务相关配置了
也可以通过整合Spring Cloud Bus来实现,结合rabbitMQ

Zuul网关路由的功能是什么?
首先是动态路由,app和web网站通过zuul来访问不同的服务方,结合ribbon,还可以访问同一服务的不同实例。
其次是安全认证,一些token校验,非法访问都可以在zuul网关中校验拦截
还有限流以及静态相应处理,限流值得是限制每一个接口的一些相应频率,静态响应处理指的是一些静态资源的获取可以由zuul直接处理,不会穿透到微服务内部。
zuul的核心就是一系列的过滤器。

zuul和ribbon是什么关系?
zuul是用来处理请求在不同服务之间的分发,ribbon是用来做同一服务不同实例之间的负债均衡的。

Hystrix服务容错指的是什么?是怎么实现的?

Hystrix主要通过命令模式将所有对其他服务的调用放在一个命令对象(hystrixCommend)中,由单独的线程执行。
针对每一个服务,都有一个单独的线程池,如果线程池耗尽,则拒绝请求(不是排队,是直接拒绝)。
从而保证在高并发,下一层服务处理不过来的情况下,不让请求穿透给下一层服务,造成服务异常。
同时hystrix还会记录每次请求的状态,成功,失败,超时,还是线程拒绝。
如果调用某个服务错误百分比超过阈值,就认为这个服务异常,则熔断器开关自动打开,在一段时间内停止对该服务的所有请求,避免发送大量无效请求影响系统吞吐量,并且断路器有自我检测以及恢复的功能。
hystrix还可以进行服务监控

服务降级和服务熔断有什么区别?

服务降级指的是在服务器压力剧增的情况下,根据实际业务以及流量,关闭一些非核心业务的接口或者页面,以释放服务器资源来保证核心业务的正常运行。
服务熔断指的是因为某些原因,导致服务调用过程中某一个环节服务A过载了,为了防止大量无效请求穿透到这一服务A,所以将该服务A异常时要调用该服务的所有请求都拦截,直接返回一个结果,从而达到快速释放资源,等服务A恢复之后重新调用的目的。

你可能感兴趣的:(springCloud,java)