Dubbo

Spring Cloud理论知识点

两盒软妹~` 提交于 2020-01-04 17:26:14
概述 什么是微服务? 通常而言,微服务架构指的是一种架构模式或者说一种架构风格; 它提倡的是将单一应用程序划分成一组小的服务,每个微服务提供单个业务功能,一个服务做一件事。 每个服务独立运行于自己的进程,服务之间互相协调、互相配合; 服务之间采用轻量级的通信机制(通常是HTTP资源的API); 每个服务都围绕具体的业务进行构建,并且能够被独立地部署到生成环境; 每个服务独立管理,可使用不同的语言进行编写服务,也可以采用不同的数据存储方式。 微服务的优缺点 优点 符合高内聚、低耦合的程序设计思想,代码容易聚焦在一个指定的业务功能上; 有利于团队管理、协助,微服务可被2-5人小团队独立开发,独立管理,再进行团队与团队之间的协作; 缺点 分布式系统的技术性、复杂性要求较高; 部署、运维、管理难度随着服务的数量增加而增大; 服务间的通讯成本、数据的查询与一致性 微服务的技术栈有哪些? 服务开发 —— SpringBoot、SpringMVC、Spring 服务配置与管理 —— Netflix公司的Archaius、阿里的Diamond 服务注册与发现 —— Eureka、Zookeeper 服务调用 —— Rest、RPC、gRPC 服务熔断器 —— Hystrix、Envoy 负载均衡 —— Ribbon、Nginx 消息队列 —— Kafka、RabbitMQ、ActiveMQ

SpringBoot+Nacos+Seata实现Dubbo分布式事务管理

随声附和 提交于 2020-01-04 09:12:23
1.简介 本文主要介绍SpringBoot2.1.5 + Dubbo 2.7.3 + Mybatis 3.4.2 + Nacos 1.1.3 +Seata 0.8.0整合来实现Dubbo分布式事务管理,使用Nacos 作为 Dubbo和Seata的注册中心和配置中心,使用 MySQL 数据库和 MyBatis来操作数据。 如果你还对SpringBoot、Dubbo、Nacos、Seata、Mybatis 不是很了解的话,这里我为大家整理个它们的官网网站,如下 SpringBoot:https://spring.io/projects/spring-boot Dubbo:http://dubbo.apache.org/en-us/ Nacos:https://nacos.io/zh-cn/docs/quick-start.html Seata:https://github.com/seata/seata/wiki/Home_Chinese MyBatis:http://www.mybatis.org/mybatis-3/zh/index.html 在这里我们就不一个一个介绍它们是怎么使用和原理,详细请学习官方文档,在这里我将开始对它们进行整合,完成一个简单的案例,来让大家了解Seata来实现Dubbo分布式事务管理的基本流程。 2.环境准备 2.1 下载nacos并安装启动

07.Dubbo 源码解析之服务调用

回眸只為那壹抹淺笑 提交于 2020-01-02 08:11:48
1. 环境搭建 代码已经上传至 https://github.com/masteryourself/dubbo ,分支名称是 masteryourself-2.7.3-release provider 是 dubbo-demo-xml-provider 工程,启动类是 Application consumer 是 dubbo-demo-xml-consumer 工程,启动类是 Application 2. 源码解析 2.1 流程预览 2.1.1 consumer 端 // 1. 由于是动态代理,所以任何方法都会被 InvokerInvocationHandler 的 【invoke】 方法拦截 org . apache . dubbo . rpc . proxy . InvokerInvocationHandler#invoke // 1.1(*) 执行 mock 逻辑 org . apache . dubbo . rpc . cluster . support . wrapper . MockClusterInvoker#invoke // 1.1.1(*) 隐式传参,路由 invokers,初始化负载均衡策略,调用 doInvoke org . apache . dubbo . rpc . cluster . support . AbstractClusterInvoker

Spring Boot整合Dubbo

岁酱吖の 提交于 2019-12-31 13:31:15
Dubbo服务提供者 添加依赖 <!--spring-boot-starter-dubbo--> <dependency> <groupId>com.gitee.reger</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.1.1</version> </dependency> <!-- 引入zookeeper,去除其中的log4j,否则会因为日志原因导致堆栈溢出 --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> 修改application.yml server: port: 8081 spring: dubbo: application: name: service-provider //应用名称 registry: address: 192

Dubbo集成步骤

谁说我不能喝 提交于 2019-12-31 01:07:35
dubbo协议实现与webservice一样的效果,用于服务调用之间的接口。dubbo可在中间实现真正意义上的中间调用管理,是一个中间管理系统。 demo:http://www.devnote.cn/download/182 同步服务端集成 同步服务端统一试用dubbo服务端集成到业务系统。目前的场景试用的是dubbo协议。 1、加入dubbo jar包(附件2.4.10-jar.zip) 2、在spring配置文件中加入dubbo provider配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework

SpringBoot整合Dubbo

喜夏-厌秋 提交于 2019-12-31 01:07:08
通过三个工程演示整合过程 工程一:API工程:服务端与客户端共同需要引入的工程 pom:无特殊依赖,下边内容供服务端与客户端引用此工程使用 <groupId>com.boot.dubbo.demo</groupId> <artifactId>dubbo-api</artifactId> <version>1.0-SNAPSHOT</version> 实体类: package com.boot.dubbo.demo.domain; import java.io.Serializable; /** * 用户信息类 */ public class UserInfo implements Serializable { private String account; private String password; public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } API:

Dubbo简介

那年仲夏 提交于 2019-12-29 22:54:57
Dubbo简介 Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Dubbo是阿里巴巴公司开源的一个高性能优秀的 服务框架 ,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。Dubbo框架,是基于容器运行的.。容器是Spring。 官方网站 : http://dubbo.apache.org/ 阿里巴巴已经将dubbo框架捐献给了Apache软件基金会 Dubbo框架结构 角色 registry 注册中心. 是用于发布和订阅服务的一个平台.用于替代SOA结构体系框架中的ESB服务总线的。 发布 开发服务端代码完毕后, 将服务信息发布出去. 实现一个服务的公开. 订阅 客户端程序,从注册中心下载服务内容 这个过程是订阅. 订阅服务的时候, 会将发布的服务所有信息,一次性下载到客户端. 客户端也可以自定义, 修改部分服务配置信息. 如: 超时的时长, 调用的重试次数等. consumer 服务的消费者, 就是服务的客户端. 消费者必须使用Dubbo技术开发部分代码. 基本上都是配置文件定义. provider 服务的提供者, 就是服务端. 服务端必须使用Dubbo技术开发部分代码. 以配置文件为主.

dubbo开发

好久不见. 提交于 2019-12-29 21:57:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 解压后,放在tomcat/webapp/目录下直接运行。 这里tomcat是9090端口,访问http://127.0.0.1:9090/dubbo-admin-2.5.6/,会出现身份验证登录窗口。在WEB-INF目录下,查看dubbo.properties文件,可看到用户名密码配置以及zookeeper注册地址信息 dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest 使用root/root登陆。 ------------------------------------ dubbo-provider 1. pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version

dubbo源码解析(服务暴露+服务引用)

余生颓废 提交于 2019-12-29 18:57:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、服务暴露 1.xml解析 <dubbo:service> 标签会被解析成 ServiceBean,ServiceBean 实现了 InitializingBean,所以在类加载完成之后会调用 afterPropertiesSet() 方法。暴露就是从这里开始的。 public void onApplicationEvent(ApplicationEvent event) { if (ContextRefreshedEvent.class.getName().equals(event.getClass().getName())) { if (isDelay() && ! isExported() && ! isUnexported()) { if (logger.isInfoEnabled()) { logger.info("The service ready on spring started. service: " + getInterface()); } export(); } } } 2.开始暴露 org.apache.dubbo.config.ServiceConfig#doExportUrls开始 多协议暴露 org.apache.dubbo.config.ServiceConfig

dubbo源码分析-Directory 和 LoadBalance-笔记

家住魔仙堡 提交于 2019-12-29 16:06:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Directory 订阅节点的变化, 当zookeeper上指定节点发生变化以后,会通知到RegistryDirectory的notify方法 将url转化为invoker对象 调用过程中invokers的使用 StaticDirectory: 静态目录服务, 它的所有Invoker通过构造函数传入, 服务消费方引用服务的时候, 服务对多注册中心的引用,将Invokers集合直接传入 StaticDirectory构造器,再由Cluster伪装成一个Invoker StaticDirectory的list方法直接返回所有invoker集合; RegistryDirectory: 注册目录服务, 它的Invoker集合是从注册中心获取的, 它实现了NotifyListener接口实现了回调接口notify(List<Url>) Directory 目录服务的更新过程 RegistryProtocol.doRefer 方法,也就是消费端在初始化的时候,这里涉及到了RegistryDirectory这个类。然后执行cluster.join(directory)方法。 这些代码在上节课有分析过。 cluster.join 其实就是将Directory中的多个Invoker伪装成一个Invoker, 对上层透明