分布式应用

在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,

Spring Boot+Spring Cloud。

分布式系统:

Zookeeper和Dubbo

ZooKeeper
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。
它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、
域名服务、分布式同步、组服务等。
Dubbo 
Dubbo是Alibaba开源的分布
式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个
层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo
采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,
所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

dockers安装zookeeper

官方运行的解释命令:

启动:

整合dubbo的依赖

测试代码的使用:

服务提供者:

引入依赖:

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.</version>
</dependency>

提供服务的接口类:

这个类在服务消费者中也要进行使用
所以此时需要保证该类的所在包位置相同
在开发中可以将该类与实体类提取出来,然后再引入到工程中进行使用
如使用maven工程进行打包成jar
package com.cr.provider.service;
public interface TicketService {
public String getTicket();
}

服务接口类的实现:

package com.cr.provider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.cr.provider.service.TicketService;
import org.springframework.stereotype.Component; @Component
//import com.alibaba.dubbo.config.annotation.Service;
@Service//暴露服务

public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "战狼2";
}
}
此时的@Service是将服务的实现暴露出去,该注解中还有许多的配置,如超时等
@Component是将该类加入到spring容器中

配置文件:

#名字
dubbo.application.name=provider
#
dubbo.registry.address=zookeeper://192.168.43.157:2181
#
dubbo.registry.protocol=zookeeper
#
dubbo.protocol.name=dubbo
dubbo.protocol.port=
#
dubbo.monitor.protocol=registry
#
dubbo.scan.base-packages=com.cr.provider.service

主程序:

package com.cr.provider;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@EnableDubbo
public class ProviderApplication { public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
} }
@EnableDubbo用于开启关于dubbo的注解

服务消费者

引入依赖:

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.</version>
</dependency>
服务消费者调用的服务提供者实现的接口类
此时的两个工程中的报名必须一致
开发中使用工程引入依赖
package com.cr.provider.service;

public interface TicketService {
public String getTicket();
}

用于调用TicketService实现的方法

package com.cr.consumer.service;

public interface UserService {
public void hello();
}

实现类

package com.cr.consumer.service.impl;

import com.alibaba.dubbo.config.annotation.Reference;
import com.cr.consumer.service.UserService;
import com.cr.provider.service.TicketService;
import org.springframework.stereotype.Service; @Service
public class UserServiceImpl implements UserService {

@Reference
TicketService ticketService;
public void hello(){
System.out.println("ticketService:" + ticketService);
String ticket = ticketService.getTicket();
System.out.println("buy:" + ticket);
}
}
@Reference用于自动注入dubbo容器中的服务
 
配置:
dubbo.application.name=consumer
dubbo.registry.address=zookeeper://192.168.43.157:2181

主类中:

@EnableDubbo
@SpringBootApplication
public class ConsumerApplication { public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}

用于开发Dubbo的注解@EnableDubbo

测试时:服务提供者必须处于工作的状态

@Autowired
UserService userService;
@Test
public void tt(){
userService.hello();
}

测试结果:

@Reference

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
public @interface Reference { Class<?> interfaceClass() default void.class; String interfaceName() default ""; String version() default ""; String group() default ""; String url() default ""; String client() default ""; boolean generic() default false; boolean injvm() default false; boolean check() default true; boolean init() default false; boolean lazy() default false; boolean stubevent() default false; String reconnect() default ""; boolean sticky() default false; String proxy() default ""; String stub() default ""; String cluster() default ""; int connections() default 0; int callbacks() default 0; String onconnect() default ""; String ondisconnect() default ""; String owner() default ""; String layer() default ""; int retries() default 0; String loadbalance() default ""; boolean async() default false; int actives() default 0; boolean sent() default false; String mock() default ""; String validation() default ""; int timeout() default 0; String cache() default ""; String[] filter() default {}; String[] listener() default {}; String[] parameters() default {}; String application() default ""; String module() default ""; String consumer() default ""; String monitor() default ""; String[] registry() default {}; }

  

@Service

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Inherited
public @interface Service { Class<?> interfaceClass() default void.class; String interfaceName() default ""; String version() default ""; String group() default ""; String path() default ""; boolean export() default false; String token() default ""; boolean deprecated() default false; boolean dynamic() default false; String accesslog() default ""; int executes() default ; boolean register() default false; int weight() default ; String document() default ""; int delay() default ; String local() default ""; String stub() default ""; String cluster() default ""; String proxy() default ""; int connections() default ; int callbacks() default ; String onconnect() default ""; String ondisconnect() default ""; String owner() default ""; String layer() default ""; int retries() default ; String loadbalance() default ""; boolean async() default false; int actives() default ; boolean sent() default false; String mock() default ""; String validation() default ""; int timeout() default ; String cache() default ""; String[] filter() default {}; String[] listener() default {}; String[] parameters() default {}; String application() default ""; String module() default ""; String provider() default ""; String[] protocol() default {}; String monitor() default ""; String[] registry() default {}; }

32、SpringBoot-整合Dubbo的更多相关文章

  1. Springboot整合Dubbo和Zookeeper

    Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...

  2. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  3. 【转】SpringBoot学习笔记(7) SpringBoot整合Dubbo(使用yml配置)

    http://blog.csdn.net/a67474506/article/details/61640548 Dubbo是什么东西我这里就不详细介绍了,自己可以去谷歌 SpringBoot整合Dub ...

  4. SpringBoot整合dubbo(yml格式配置)

    yml文件 如果只作为服务的消费者不用暴露端口号,扫描的包名根据自己service改 dubbo: application: name: springboot-dubbo-demo #应用名 regi ...

  5. dubbo学习实践(4)之Springboot整合Dubbo及Hystrix服务熔断降级

    1. springboot整合dubbo 在provider端,添加maven引入,修改pom.xml文件 引入springboot,版本:2.3.2.RELEASE,dubbo(org.apache ...

  6. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!   “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...

  7. SpringBoot整合dubbo

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成. 以上介绍来源于百度百科,具体dubbo相关可以自行查 ...

  8. spring-boot整合dubbo启动demo

    参考资料: https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/ https://github.com/apach ...

  9. springboot整合dubbo+zookeeper最新详细

    引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...

  10. springboot整合dubbo的简单案例

    使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目 ...

随机推荐

  1. SQL Server 2008各版本介绍区别(包含企业版 开发者版 标准版 Web版 工作组版 Express版 Compact版)

    SQL Server 2008分为SQL Server 2008企业版.标准版.工作组版.Web版.开发者版.Express版.Compact 3.5版,其功能和作用也各不相同,其中SQL Serve ...

  2. 关于mysql的 sql_mode=only_full_group_by 报错

    在mysql中执行 : SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 官网:https://dev ...

  3. How to block a specific IP Address using UFW

    How to block a specific IP Address using UFW The key to blocking a specific IP address with UFW is t ...

  4. 在 ubuntu 上运行 php 脚本

    在 ubuntu 上运行 php 脚本 一.配置运行环境 1.要在 ubuntu 上运行 php 脚本,需要安装 Apache2 和 PHP 具体步骤,请参考:Ubuntu 搭建Web服务器(MySQ ...

  5. 实用爬虫-01-检测爬虫的 IP

    实用爬虫-01-检测爬虫的 IP 本篇介绍一个识别爬虫 ip 的小实例(教你一招识破无效的 ip 代理) [注意事项]: 1.url 可能会失效(个人感觉,因为它带了一个2018,下面附上链接获取方法 ...

  6. 使用@Value进行静态常量的值注入

    @Component public class ExpressConstant { public static String URL; @Value("${express.url}" ...

  7. [翻译] FLAnimatedImage

    FLAnimatedImage FLAnimatedImage is a performant animated GIF engine for iOS: FLAnimatedImage是一个播放gif ...

  8. [翻译] JHChainableAnimations

    JHChainableAnimations - (void)animationType_01 { /* * 缩放到0.8倍(执行spring动画效果的缩放)持续时间0.5s,完成了之后移动100的距离 ...

  9. Exchange 2010 服务器邮件传输配额设置详解

    在企业的邮件系统管理中,传输邮件的大小配额关系到邮件队列.邮件传输速度以及关系到该附件是否能正常发送,直接关系到用户体验.为此,传输邮件大小的设置,也经常是企业邮件管理员比较迷惑的地方.如下: 1)  ...

  10. 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用

    目录 一,安装宝塔面板(V 6.8) 二,使用宝塔安装 Docker,配置阿里云容器服务 三,安装 Rancher (Server) 四,管理 Rancher.添加集群 五,添加 Rancher 应用 ...