发表于: 2020-02-29 17:52:33

4 1214


啥也不说就是干!!

今天完成的事情:

在任务8的工程中进行 dubbo 改造

1、notifymodule 为服务提供方,进行 dubbo 依赖并暴露服务

<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo</artifactId>
   <version>2.7.4.1</version>
</dependency>
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>2.7.4.1</version>
</dependency>

<!-- 使用 Zookeeper 作为注册中心 -->
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-framework</artifactId>
   <version>2.13.0</version>
</dependency>
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-recipes</artifactId>
   <version>2.13.0</version>
</dependency>

dubbo.xml

<!-- 服务提供者暴露服务配置 -->
<dubbo:service ref="smsCodeSendService" interface="com.jnshu.common.service.SmsCodeSendService"
              version="${dubbo.provider.UserRpcService.version}"
              validation="true" />

application.yml

dubbo:
application:
name: service-provider
registry:
address: zookeeper://your zookeeper ip:2181
protocol:
port: -1
   name: dubbo
provider:
timeout: 1000
   UserRpcService:
version: 1.0.0

引用 dubbo.xml 配置文件

2、taskmodule 作为服务消费方

相关依赖

<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo</artifactId>
   <version>2.7.4.1</version>
</dependency>
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>2.7.4.1</version>
</dependency>

<!-- 使用 Zookeeper 作为注册中心 -->
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-framework</artifactId>
   <version>2.13.0</version>
</dependency>
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-recipes</artifactId>
   <version>2.13.0</version>
</dependency>

dubbo.xml 及 application.yml 配置文件,在 Applicaion 中引入 dubbo.xml 配置

<!-- 服务消费者引用服务配置 -->
<dubbo:reference id="smsCodeSendService" interface="com.jnshu.common.service.SmsCodeSendService"
                version="${dubbo.consumer.UserRpcService.version}"
                validation="true" />

dubbo:
application:
name: service-consumer
registry:
address: zookeeper://your zookeeper ip:2181
consumer:
timeout: 1000
   UserRpcService:
version: 1.0.0

引用服务,调用相关方法

@Resource
private SmsCodeSendService smsCodeSendService;

@Override
public SmsInfo sendSMSCode(String phone) {
   return smsCodeSendService.sendSMSLoginCode(phone);
}

3、分别启动服务提供者,服务消费者,进行测试

postman 测试调用接口

服务消费方,调用接口成功

看到服务提供方接收到 消息队列的消息进行消息处理


深度思考部分:

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

之前日志有写过

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

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


明天计划的事情:

开始着手复盘项目

遇到的问题:

暂无


返回列表 返回列表
评论

    分享到