精华内容
下载资源
问答
  • 分布式应用

    2014-06-02 18:24:45
    分布式应用
  • 分布式应用分布式应用分布式应用分布式应用分布式应用分布式应用分布式应用分布式应用
  • Java分布式应用

    2016-08-24 16:19:40
    本书章节包括分布式java应用,大型分布式java应用与SOA,深入理解jvm,分布式应用与sun jdk类库,性能调优,构件高可用的系统等,同时也适合面试考察的知识点。
  • 主要介绍了Docker实现分布式应用功能,涉及docker分布式应用、负载均衡相关实现技巧与操作注意事项,需要的朋友可以参考下
  • ice分布式应用开发

    2014-02-09 17:42:59
    ice分布式应用开发
  • 分布式应用程序

    2012-12-14 18:41:02
    分布式应用程序是指:应用程序分布在不同计算机上,通过网络来共同完成一项任务。
  • Java分布式应用学习笔记01分布式Java应用和SOA
  • Java分布式应用学习笔记
  • 随着通信网络建设规模的加大,分布式应用系统关联程度也日益加深。如何通过安全策略管理,提高系统安全整体管理能力是信息安全建设中的重要任务之一。本文提出了一种分布式安全策略集中化管理的实现方法,从体系框架...
  • 资源名称:使用.NET Remoting 建立分布式应用程序视频教程资源目录:【】7a541feba03b93376377e76e561c5c75【】f037c18f05fb8b08213aaf289f7e594c【】使用.NETRemoting建立分布式应用程序(一)【】使用.NETRemoting...
  • DEV408: 使用.Net Remoting 开发分布式应用 沈嵘 高级顾问 微软(中国)公司;内容安排;当前的分布式应用;当前的分布式应用.NET Remoting的架构与概念.NET Remoting的架构与概念.NET Remoting的架构与概念.NET Remoting...
  • 企业级分布式应用服务 EDAS 开发者指南 企业级分布式应用服务 EDAS/开发者指南 开发者指南 EDAS配置中心安装与使用文档 一EDAS配置中心能帮您做什么 EDAS为您提供两种方式来配置服务
  • zookeeper zookeeper 分布式应用服务协调服务学习 分布式应用服务协调服务学习
  • 扫描完整版带书签 Akka应用模式.分布式应用程序设计实践指南
  • 文档是关于基于WCF的分布式应用开发,能够帮助想要做分布式应用的开发者
  • 大型电商分布式系统应用实践+性能优化+分布式应用架构+负载均衡+高并发设计+持久化存储视频教程
  • 使用Remoting开发分布式应用使用Remoting开发分布式应用
  • 深入探讨了基于MSMQ(消息队列)的分布式应用开发,同时结合东方人寿业务系统给出了一个.NET平台下基于MSMQ的分布式应用解决方案,说明了基于消息的松耦合技术在分布式应用开发中的可行性与优势。
  • 搭建第一个Dubbo分布式应用程序

    千次阅读 2018-03-16 17:06:32
    一、了解分布式应用 什么是分布式应用?在谈谈这个之前我们先说一下与它对立的就是集中式应用,集中式应用就是在一个应用中包含了所有的应用资源,这样做有很大的坏处,项目会变得更繁重,维护麻烦,而且不便于二次...

    一、了解分布式应用

    什么是分布式应用?在谈谈这个之前我们先说一下与它对立的就是集中式应用,集中式应用就是在一个应用中包含了所有的应用资源,这样做有很大的坏处,项目会变得更繁重,维护麻烦,而且不便于二次开发。为了解决这些问题,就出现了分布式应用。

    1.分布式应用程序:
    分布式应用程序是指应用程序分布在不同计算机上,通过网络来共同完成一项任务。通常为服务器/客户端模式。
    服务器/客户端又分为二端(server/client)、三端(server/middleware/client)、N端(multiple server/multiple minddle/multiple client),看看下面几张图会更加清楚的认识:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    RPC的原理:
    RPC技术的底层原理:就是对象的序列化、反序列化以及序列化后数据的传输,dubbo(使用二进制文件,TCP)。

    二、什么是Dubbo

    dubbo是什么:
    dubbo是一个阿里巴巴开发的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴集团的各成员站点的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持。

    为什么要用dubbo:
    应用场景:
    当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等。

    当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。

    当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。

    接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?等等……

    在遇到这些问题时,都可以用Dubbo来解决。

    dubbo的优势:
    1、使用简单
    2、部署轻盈
    3、方便二次开发

    当当网:dubboX
    京东:jd-hydra

    dubbo核心组成部分分析:
    其核心部分包含:
    1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
    2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
    3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

    三、注册中心概述

    注册中心的作用:
    1、服务端服务的注册和客户端服务的调用
    2、提高系统的可用性
    3、提高系统的可伸缩性
    4、集中管理服务

    注册中心有什么:
    multicast:
    组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。
    (ps:我们的计算机除了组播还有什么呢:单播和广播)

    224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;

    zookeeper:
    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    四、搭建第一个分布式应用程序【HelloWorld】

    hello world开发步骤:
    1,创建三个项目
    一个用于服务端,一个用于客户端,一个用于接口
    服务端:dubbo-demo-server
    客户端:dubbo-demo-client
    接口:dubbo-demo-api

    三个项目的关系图如下:

    这里写图片描述

    首先在主项目中导入pom依赖:

    <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.5.3</version>
            </dependency>

    2.编写接口代码
    接口:dubbo-demo-api代码:

    HelloWorldService.java

    package cn.just.service;
    
    import org.dubbo.demo.api.HelloWorld;
    
    public interface HelloWorldService {
        public HelloWorld helloworld(HelloWorld helloWorld);
    }
    

    HelloWorld.java

    package org.dubbo.demo.api;
    
    import java.io.Serializable;
    
    public class HelloWorld implements Serializable{    //注意rpc是通过socket对消息进行序列化和反序列化的发送和接受处理的,所以必须实现Serializable,否则会报错
        public String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    3.导入依赖包
    将接口(dubbo-demo-api)打成jar包,然后导入服务端和客户端程序中

    4.编写服务端程序
    HelloWorldServiceImpl.java:

    package cn.just.service.impl;
    
    import org.dubbo.demo.api.HelloWorld;
    
    import cn.just.service.HelloWorldService;
    
    public class HelloWorldServiceImpl implements HelloWorldService{
        //业务处理
        @Override
        public HelloWorld helloworld(HelloWorld hello) {
            hello.setName("shinelon");
            return hello;
        }
    }
    

    主程序APP.java:

    package org.dubbo.demo.server;
    
    import java.io.IOException;
    
    import com.alibaba.dubbo.config.ApplicationConfig;
    import com.alibaba.dubbo.config.ProtocolConfig;
    import com.alibaba.dubbo.config.RegistryConfig;
    import com.alibaba.dubbo.config.ServiceConfig;
    
    import cn.just.service.HelloWorldService;
    import cn.just.service.impl.HelloWorldServiceImpl;
    
    /**
     * Hello world!
     *
     */
    public class App {
        HelloWorldServiceImpl helloWorldService=new HelloWorldServiceImpl();
        private void helloworld() {
            //当前应用配置
            ApplicationConfig applicationConfig = new ApplicationConfig();
            //当前应用名(不能用空格)
            applicationConfig.setName("helloWorld");
    
            //注册中心配置
            RegistryConfig registryConfig = new RegistryConfig();
            //设置注册中心地址
            registryConfig.setAddress("multicast://224.5.6.7:1234");
            //registryConfig.set
    
            //服务提供者协议配置
            ProtocolConfig protocolConfig = new ProtocolConfig();
            //协议名
            protocolConfig.setName("dubbo");
            //协议端口
            protocolConfig.setPort(20880);
    
            //服务配置
            ServiceConfig<HelloWorldService> serviceConfig = new ServiceConfig<HelloWorldService>();
            //设置当前应用配置
            serviceConfig.setApplication(applicationConfig);
            //设置注册中心
            serviceConfig.setRegistry(registryConfig);
            //设置协议配置
            serviceConfig.setProtocol(protocolConfig);
            //添加服务的接口字节码
            serviceConfig.setInterface("cn.just.service.HelloWorldService");
            //添加服务接口的具体实现类
            serviceConfig.setRef(helloWorldService);
    
            //把服务发布出去
            serviceConfig.export();
            System.out.println("服务启动");
            try { 
                System.in.read();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
        }
    
        public static void main( String[] args )
        {
    //        System.out.println( "Hello World!" );
            new App().helloworld();
        }
    }
    

    5,发布服务
    启动服务端程序

    6,编写客户端调用程序
    App.java:

    package org.dubbo.demo.client;
    import org.dubbo.demo.api.HelloWorld;
    
    import com.alibaba.dubbo.config.ApplicationConfig;
    import com.alibaba.dubbo.config.ReferenceConfig;
    import com.alibaba.dubbo.config.RegistryConfig;
    
    import cn.just.service.HelloWorldService;
    
    /**
     * Hello world!
     *
     */
    public class App {
        private void helloworld() {
             //应用配置
            ApplicationConfig applicationConfig = new ApplicationConfig();
            applicationConfig.setName("helloWorldConsumer");
    
            //连接注册中心
            RegistryConfig registryConfig = new RegistryConfig();
            //设置注册中心地址
            registryConfig.setAddress("multicast://224.5.6.7:1234");
            //引用远程服务地址
            ReferenceConfig<HelloWorldService> referenceConfig = new ReferenceConfig<HelloWorldService>();
            referenceConfig.setApplication(applicationConfig);
            referenceConfig.setRegistry(registryConfig);
            referenceConfig.setInterface("cn.just.service.HelloWorldService");
    
            //和本地一样调用服务
            HelloWorldService helloWorldService = referenceConfig.get();
            HelloWorld helloWorld=new HelloWorld();
            helloWorld=helloWorldService.helloworld(helloWorld);
            System.out.println("=======================");
            System.out.println(helloWorld.getName());
        }
        public static void main( String[] args )
        {
            new App().helloworld();
        }
    }
    

    7.启动客户端进行调用
    此时我们会发现应用调用成功。至此我们已经搭建好我么第一次dubbo分布式应用程序,下面是整个项目的目录结构截图:
    这里写图片描述

    需要源码的朋友可前往下载:
    https://github.com/ljcan/Dubbo
    本人能力有限,上述有什么不足之处还望不吝赐教。


    展开全文
  • 基于dubbo分布式应用集群,日志跟踪变得比以往困难。基于spi的调用拦截,可以将traceid通过rpc context保存下来,并通过MDC输出到日志中去,解决调用跟踪难的问题。
  • Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
  • Akka应用模式+分布式应用程序设计实践指南。学习Akka入门书籍!
  • 用 RMI 开发基于 Java 的企业分布式应用 摘 要 由于 Java 具有跨平台代码可移植性安全高效等广泛而强大的功能因 而在开发网络分布式应用的时候可以用它自身的机制实现分布式计算一种基于 Java 的远程方法调用(RMI)为...
  • Java分布式应用学习笔记07线程池应用
  • 互联网分布式应用之分布式事务
  • 区块链分布式应用账本研究报告(31页),资源名称:区块链分布式应用账本研究报告(31页)分布式应用账本白皮书-2017.12.pdf.zip...
  • 行业分类-物理装置-分布式应用的部署方法及装置.zip
  • 本篇文章主要介绍了基于 Redis 实现分布式应用限流的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 爸爸 分布式应用程序开发-DAD 安全的分布式和并行应用程序开发@ 和
  • ICE 专题使用 C# 编写 ICE 分布式应用程序 ICE 专题 :使用 C# 编写 ICE 分布式应用程序 原文来自 blogCentaur 随笔录的 使用 C# 编写 Ice 应用程序原文程序中没有注释 我参照马维达翻译的 ICE 分布式程序设计 Ice-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 770,393
精华内容 308,157
关键字:

分布式应用