springcloud组建介绍
1.eureka组建介绍
Eureka是服务架构的注册中心专门负责服务的注册的发现,eruekaf分为eurekaserver服务端和eurekaclient客户端.
- eurekaserver:里面有个注册中心,注册中心保存的各个服务所在的机器和端口号.
- eurekaclient:负责将服务注册到eurekaserver中并且发现服务
工作原理:在启动应用之后,eureka客户端会向服务端注册自己的服务,同时服务端的信息会缓存到本地,客户端会向服务端周期性的心跳交互更新服务信息.
2.ribbon组建介绍
ribbon在springcloud中主要做负载均衡的作用.它是基于http协议和tcp协议的客户端负载均衡,使得面向REST请求时变成客户端的负载均衡调用.
3.feign组建介绍
feign 组建其实是整合和ribbon的.feign主要是进行远程调用,它通过@FeginClient的注解,进行动态代理(要是某个接口上面标注有这个注解,那么feign会对这个接口进行动态代理) - feign的动态代理,会根据你请求的@RequestMapping 和参数,来动态构造你要请求的服务地址,然后根据地址发送请求.
- 如果服务部署了多台机器,那么feign会通过负载均衡ribbon的轮询机制确实服务机器(ribbon默认采用轮询机制).
4.Hystrix组建
在微服务架构中,一个系统会有多个服务,服务之间的相互调用如果不做任何保护就会导致服务器雪崩问题.那么Hystrix就是用来解决这些问题的.Hystrix是隔离,熔断以及降级的一个框架,
- 在某个服务挂掉之后,Hystrix会熔断这个服务,直接返回.(降级:在这个服务熔断之后,记录这期间服务请求的信息,以便后期维护).
5.zuul网关
zuul:微服务网关,主要是负责网络路由的.
在微服务的架构中,可能后台会部署几百个服务,所有的服务名称前端不可能全部记住.那么现在就需要网关,前端通过浏览器发送请求,进入到网关zuul,网关会根据请求的一些特征,将请求转发到后端的服务.
- 网关还可以做统一的服务降级,限流,认证权限安全等等.
springcloud 常见面试问题
1.springcloud 与dubbo的区别
- 服务调用方式不同,dubbo是采用rpc远程调用,srpingcloud是采用rest api远程调用.
- 注册中心:dubbo是采用zookeeper,springcloud是采用eureka
- 服务网关不同:dubbo本身是没有实现的,只是整合了第三方的技术.而springcloud是有一个组建zuul作为路由网关,springcloud还支持断路器,与git完美集成分布式配置文件支持版本控制.
2.微服务之间是如何独立通信的?
- feign远程调用.优点:没有中间代理件,简单常见.缺点:可用性低,在请求过程中服务端和客户端都必须是可用的.
- 消息中间件.优点:解耦,提高可用性,可以支持多种相应模式(如:发布/订阅,请求/异步响应等等).缺点:增加系统的复杂度,万一消息中间件挂了,整个服务就挂了.
3.微服务的优缺点?
优点:
- 每个服务都是高内聚,低耦合,代码通俗易懂
- 容易与第三方集成
- 微服务只是业务逻辑的代码,不会和html,css界面组合在一起,一般采用前后端分离的方法开发
- 可以灵活开发,连接公共数据库/连接独立数据库
缺点: - 运维成本高
- 数据一致性
- 性能监控
- 难度高
4.springcloud如何实现服务注册?
- 服务发布时,指定对应的服务名,将服务注册到注册中心
- 注册中心加上@EnableEurekaServer,服务用@EnableEurekaClient标记这个服务,然后通过ribbon和feign进行远程调用和发现.
5.eureka和zookeeper的区别
- eureka取用cap的ap,而zookeeper选用cp注重一致性(C:一致性.A:可用性.P:分区容错性.)
- 在服务崩溃时,eureka有自我保护机制,各个节点都是平等关系,在一个节点崩溃时,微服务并不会盲目删除这个节点,而是进入保护状态,此时可以正常注册,也可以提供查询服务,但是不与其他节点同步信息,其他节点可以正常使用.zookeeper分为leader和follower两种角色,采用半数存活的原则,超过一般的节点挂机就会使整个服务崩溃 而且在leader崩溃之后需要重新选举,在此期间服务是不可用的.
更多推荐
springcloud五大组建及面试题
发布评论