java面试题之spring-cloud篇

1、微服务的特点 >按照业务来划分服务,单个服务代码量小,业务单一,易于维护。
>每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中。
>微服务之间的通信是通过HTTP 协议或者消息组件,且具有容错能力。
>微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务。
>单个微服务能够集群化部署,并且有负载均衡的能力。
>整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等。
>整个微服务系统有链路追踪的能力。
>有一套完整的实时日志系统。
2、微服务的主要功能体现
>服务的注册和发现。
>服务的负载均衡。
>服务的容错(熔断机制)。
>服务网关。
>服务配置的统一管理。
>链路追踪。
>实时日志。
3、熔断机制的作用
1、将资源进行隔离,如果某个服务里的某个API 接口出现了故障,只会隔离该API 接
口。不会影响到其他API 接口。被隔离的API 接口会执行快速失败的逻辑,不会等
待,请求不会阻塞。如果不进行这种隔离, 请求会一直处于阻塞状态, 直到超时。若
有大量的请求同时涌入,都处于阻塞的状态,服务器的线程资源, 迅速被消耗完。
2、服务降级的功能。当服务处于正常的状态时,大量的请求在短时间内同时涌入,超过
了服务的处理能力,这时熔断器会被打开,将服务降级,以免服务器因负载过高而出
现故障。
3、自我修复能力。当因某个微小的故障,例如网络服务商的问题,导致网络在短时间内
不可用, 熔断器被打开。如果不能自我监控、自我检测和自我修复, 那么需要开发人
【java面试题之spring-cloud篇】员手动地去关闭熔断器,无疑会增加开发人员的工作量。
4、网关层的意义
1、网关将所有服务的API 接口资源统一聚合,对外统一暴露,外界系统调用的API 接
口都是网关对外暴露的API 接口。外界系统不需要知道微服务架构中各服务相互调
用的复杂性,微服务系统也保护了其内部微服务单元的API 接口,防止被外界直接
调用以及服务的敏感信息对外暴露。
2、网关可以做一些用户身份认证、权限认证,防止非法请求操作API 接口,对内部服
务起到保护作用。
3、网关可以实现监控功能,实时日志输出,对请求进行记录。
4、网关可以用来做流量监控,在高流量的情况下,对服务进行降级。
5、API 接口从内部服务分离出来,方便做测试。
5、服务配置的统一管理
1、首先, Config Server (配置服务〉读取配置文件仓库的配置信息,其中配置文件仓库可以
存放在配置服务的本地仓库,也可以放在远程的Git 仓库(例如GitHub 、Coding 等〉。
2、配置服务启动后,读取配置文件信息,读取完成的配置信息存放在配置服务的内存中。
3、当启动服务A、B 时,由于服务A 、B 指定了向配置服务读取配置信息,服务A 、B
向配置服务读取配置信息。
4、当服务的配置信息需要修改且修改完成后,向配置服务发送Post 请求进行刷新,这
时服务A 、B 会向配置服务重写读取配置文件。
6、服务链路追踪的功能
微服务系统是一个分布式架构的系统,微服务系统按业务划分服务单元, 一个微服务系统往往有很多个服务单元。由于服务单元数量很多且业务复杂,服务与服务之间的调用有可能非常复杂, 一旦出现了异常和错误,就会很难去定位。所以在微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而使每个请求链路清晰可见,出了问题很快就能定位。
链路追踪开源组件:Google 的Dapper、Twitter 的Zipkin,以及阿里的Eagleeye


    推荐阅读