发表于: 2020-05-08 23:02:39

0 1337


今天做了什么:

深度思考:

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

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


 注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。


Dubbo目前支持4种注册中心,(multicast,zookeeper,redis,simple) 推荐使用Zookeeper注册中心。

redis是通过发布订阅模式完成消息的通知 但是存在几个问题:

服务的非自然下线需要监护中心来维护
redis做注册中心服务器时间必需同步,否则出现时间不对被强制过期(删除key)!
zookeeper支持监听,redis不支持,因此需要客户端启动多个线程进行订阅监听,对服务器有一定压力!


Zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zk将全量数据存储在内存中,可谓是高性能,而且支持集群,可谓高可用,另外支持事件监听。这些特点决定了zk特别适合作为注册中心(数据发布/订阅)。

 

zookeeper的优势:

当提供程序意外停止时,注册表服务器可以自动删除其信息

注册表服务器重新启动时,可以自动恢复所有注册数据和订阅请求。
会话过期后,可以自动恢复所有注册数据和订阅请求。





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

Dubbo 的定位始终是一款 RPC 框架,而 Spring Cloud 的目标是微服务架构下的一站式解决方案

Dubbo 可以类比到 Netflix OSS 技术栈,而 Spring Cloud 集成了 Netflix OSS 作为分布式服务治理解决方案,但除此之外 Spring Cloud 还提供了配置、消息、安全、调用链跟踪等分布式问题解决方案


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

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构


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

SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式


SOA架构中有两个主要角色:服务提供者(Provider)和服务使用者(Consumer)。而软件代理则可以扮演这两个角色。该Consumer层是用户(人、应用程序或第三方的其它组件)与SOA交互的点,和Provider层则由SOA架构内的所有服务所构成。


SCA全称Service Component Architecture,中文叫服务组件化架构。SCA是基于SOA开发的一个模型规范,由IBM领头提出的标准。

SCA中,最重要的一个概念是Service----服务,它的内涵式独立于具体的技术。因此,SCA不会称之为Java组件架构,或Web Service 组件架构。所谓的具体技术,主要有两层含义:一是程序语言,而是传输协议。

基于组件编程有很多不同的模型,为了给不同的接口提供统一的调用方式,IBM提出了WSIF,但WSIF没有一个基于组件的架构模型,所以IBM在此基础上提出了SCA。

服务组件是SCA最基本的功能单元,可以把service的实现方法,pojo等包装为SCA的服务组件。SCA服务组件的主要接口规范是基于WSDL的,另外为了给Java提供一个比较直接的接口,也提供了Java接口。


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

RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

tuscany是Apache组织关于SOA实现的一个开放源码的工程项目 Apache组织关于SOA实现的一个开放源码的工程项目.该项目主要基于SCA,SDO,DAS等标准上实现的。

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。


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

使用 dubbo,调用 service 时候 dubbo 可以指定负载均衡策略


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

没用过 Scallop


明天要做什么:

准备复盘评审ppt



返回列表 返回列表
评论

    分享到