发表于: 2020-08-08 18:17:36

1 2258


任务九深度思考

1. Dubbo提供了哪几种注册中心的方式?Redis和Zookeeper应该用哪一种?  

http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html

在 dubbo 的文档中可以查询到支持了 5 种注册中心:Multicast、Zookeeper、Nacos、Redis 和 Simple

dubbo 推荐使用 Zookeeper 2.3.3 以上的版本做注册中心。

Redis 与 Zookeeper 二选一的话应该选用 Redis。Zookeeper 优先保障所有的节点数据是一致的,这就导致了在 Zookeeper 进行选举的时候无法返回任何数据,Zookeeper 进行选举的时间也比较长。

在微服务中应该是可以容忍注册中心返回的数据不是最新的(消费端可以做负载均衡,剔除无效节点),但是必须要有数据,否则就无法访问任何服务,这个是无法忍受的。


2. 微服务里,什么是注册中心,注册中心最常见的有Zookeeper,Eureka,还有我们自己的Scallop,他们之间的区别是什么?  

给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。

Zookeeper 优先保障注册中心集群数据的一致性,如果需要进行 leader 的选举,那么服务就会处于不可用的状态。

Eureka 节点掉线那么其他的节点会剔除它,继续维持服务状态,上线后又会添加回来,节点之间会同步信息。

Eureka 提供了心跳服务,当一些实例没有心跳信息之后会被剔除,考虑到网络波动可能会导致大量的服务心跳包丢失,Eureka 发现大量的心跳包丢失之后会冻结当前服务状态,不再剔除。

Eureka 还有客户端缓存功能,极端的时所有的 Eureka 服务端都无法访问,消费者任然可以通过 Eureka 客户端来获取服务信息,进行消费。

Scallop 没用过,只在老大的视频里见到他提过,听起来是一个像 Redis 一样的数据库,里面存的都是[服务名]:[实例id],消费者获取到的都是实例id,这个无法直接访问生产者的,

需要再去配置一下 hosts,把实例id指向实例的 ip。


3. Dubbo和Spring Cloud的区别是什么?如果让你来做架构选型,你会选择哪一个微服务体系,原因是什么?  

Spring Cloud 使用 Rest 接口通讯。dubbo 使用rmi、dubbo 等应用层协议通讯。

dubbo 的服务治理没有 Spring Cloud 完善。

选择 Spring Cloud,方案更加完善。


4. 什么是微服务,微服务有哪几种实现方案,包含哪几个模块,Spring Cloud分别是怎么实现的?  

将一个独立的系统拆分成若干小的服务,每个小服务运行在不同的进程中,服务与服务之间采用http 轻量协议(比如流行的RESTful)传输数据。

微服务实现方案:

Spring Boot & Spring Cloud Netfilx

Spring Boot & Dubbo & Zookeeper

Spring Boot & Spring Cloud Alibaba

Spring & Tuscany

微服务的主要模块及 Spring Cloud 实现:

服务注册发现(Eureka、zookeeper)

负载均衡(ribbon)

容错(Hystrix)

网关(zuul)

配置统一管理(Spring Cloud Config、Spring Cloud Bus)

链路追踪(Spring Cloud Sleuth、zipkin)

实时日志

Spring Cloud 也是使用了现有的微服务模块,使用 Spring Boot 的框架来集成。


5. 什么是SOA,什么是SCA,什么是微服务?  

SOA:按照实际的业务,把系统拆分为若干个独立部署的模块,每个模块之间相互独立。

SCA 是为实现 SOA 而产生的一种规范。这个架构屏蔽了组件之间通讯的细节,也与实现服务的语言无关。Tuscany 就是一个 SCA 规范的实现。

微服务即有效的拆分应用,使得各个模块可以实现敏捷开发、独立部署。微服务吸纳了 SOA 的思想,在传统的 SOA 中侧重于服务的治理,

时间久了之后 SOA 会变得越来越重,维护起来十分复杂。微服务主张的是去中心化、自动化运维与容错。这些特性不在传统的 SOA 考虑范围内。


6. Spring RMI,Spring Cloud,Tuscany,Dubbo分别是什么,互相之间有哪些不同?  

Spring RMI:是 Spring 对 RMI 的封装。

Spring Cloud 提供了一整套微服务的解决方案,整合了一些开源的微服务组件。

Tucsany 是 SCA 规范的实现,它解除了应用程序对底层技术的依赖与耦合,应用程序不用再去关心数据的传输和对方的实现使用的什么语言。

dubbo 是一个开源的 RPC 实现。可以自定义应用层传输的协议,dubbo、rmi···


7. 怎么实现WEB调用Service的负载均衡,怎么实现可以动态添加服务?  

Service 上线之后会像注册中心注册来实现动态添加服务,WEB 定时向注册中心拉去服务列表之后可以根据一些自定义的策略来实现负载均衡,在Spring Cloud Netfilx 中通常使用 ribbon 在实现负载均衡。


8. 公司内部项目里使用的Scallop是什么,和资源中心是怎么结合在一起使用实现动态增加服务的?  

不清楚,没找到资料。



返回列表 返回列表
评论

    分享到