精华内容
参与话题
问答
  • 分布式应用

    2019-09-24 06:40:56
    分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。通常来说,对于复杂而耗时的任务,非分布式应用(运行在单个系统中)需要几个小时才能完成,而分布式应用...

    分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。通常来说,对于复杂而耗时的任务,非分布式应用(运行在单个系统中)需要几个小时才能完成,而分布式应用通过使用所有系统涉及的计算能力可以在几分钟内完成。

    通过将分布式应用配置为在更多系统上运行,可以进一步减少完成任务的时间。分布式应用正在运行的一组系统称为集群,而在集群中运行的每台机器被称为节点

    分布式应用有两部分, Server(服务器)  Client(客户端) 应用程序。服务器应用程序实际上是分布式的,并具有通用接口,以便客户端可以连接到集群中的任何服务器并获得相同的结果。 客户端应用程序是与分布式应用进行交互的工具。

    Zookeeper 概述

    分布式应用的优点

    • 可靠性 - 单个或几个系统的故障不会使整个系统出现故障。

    • 可扩展性 - 可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。

    • 透明性 - 隐藏系统的复杂性,并将其显示为单个实体/应用程序。

    分布式应用的挑战

    • 竞争条件 - 两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。

    • 死锁 - 两个或多个操作等待彼此无限期完成。

    • 不一致 - 数据的部分失败。

    转载于:https://www.cnblogs.com/borter/p/9570280.html

    展开全文
  • 搭建第一个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
    本人能力有限,上述有什么不足之处还望不吝赐教。


    展开全文
  • 分布式应用进军

    2017-02-11 13:30:41
    1. 分布式应用的思想的建立和了解。常见的分布式应用的架构的了解。 2. 常用的分布式架构的熟悉和使用。 3.集群建设 涉及内容: spring , spring cloud ,spring boot , lua脚本rpc 框架: dubbo , spring ...

    今年目标:
    1. 分布式应用的思想的建立和了解。常见的分布式应用的架构的了解。
    2. 常用的分布式架构的熟悉和使用。
    3.集群建设

    涉及内容:
    spring , spring cloud ,spring boot , lua脚本

    rpc 框架:
    dubbo , spring cloud ,Netflix

    数据库,文件系统:
    myCat (分库分表中间件)
    FastDFS (文件系统集群)

    缓存:
    redis , redis cluster

    消息队列 MQ:
    kafka , RabbitMQ 等

    注册中心:
    zookeeper ,eureka

    容器化:
    docker

    展开全文
  • 什么是企业级分布式应用服务 企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)以阿里巴巴中间件团队多款成熟的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式...

    什么是企业级分布式应用服务

    企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)以阿里巴巴中间件团队多款成熟的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。

    EDAS 充分利用阿里云的资源管理和服务体系,引入阿里巴巴中间件整套成熟的分布式产品,全面兼容 Apache Tomcat 的 Java 容器,提供高性能的分布式服务框架以及秒级推送的分布式配置管理服务。此外,EDAS 还创新性的提供了分布式系统链路追踪、容量规划、数据化运营和多款经过阿里电商平台长期考验的高可用稳定性组件,帮助企业级客户轻松构建大型分布式应用服务系统。

    企业级分布式应用服务功能

    EDAS 作为应用托管和微服务管理的 PaaS 平台,支持多样的服务框架,提供全应用生命周期管理、服务治理、微服务管理、应用监控诊断等功能。(EDAS 提供的主要功能都可以通过控制台完成。建议您使用 Chrome 浏览器进行控制台操作)

    1. 应用托管

    您的应用可以部署到 EDAS 的集群(主要为 ECS 集群和容器服务 Kubernetes 集群)及无服务器的 EDAS Serverless 中。如果您有多套环境,还可以使用命名空间进行隔离。

    3. 应用生命周期管理

    应用部署完成后,可以通过 EDAS 控制台进行其它应用生命周期管理操作。
    说明:因部署的集群类型不同,生命周期管理操作有些差异。

    4. 服务治理

    EDAS 集成了众多服务治理组件,以便应对突发的流量洪峰和服务依赖所引发的雪崩问题,提高平台的稳定性。

    • 弹性伸缩:弹性伸缩能够感知应用内各个实例的状态,并根据状态动态实现应用扩容、缩容。在保证服务质量的同时,提升应用的可用率。
    • 限流降级:限流降级用于解决后端核心服务因压力过大造成系统反应过慢或者崩溃问题,通常用于例如商品秒杀、抢购、大促、防刷单等大流量场景。
    • 健康检查:健康检查对容器与应用进行定时检查和汇报,然后将结果上报到控制台,从而帮助您了解集群环境下整个应用的运行状态,排查和定位问题。
    • 灰度发布:灰度发布包括对单个应用的灰度发布和全链路灰度发布。您可以通过灰度发布实现应用新、旧版本的平滑过渡。

    5. 应用开发

    EDAS 支持基于原生 Spring Cloud、原生 Dubbo 以及 HSF 开发的应用托管到 EDAS 中。

    • Spring Cloud:Spring Cloud 框架下开发的应用只需添加依赖、修改很少的配置,即可托管到 EDAS。无需搭建 Eureka 和 Consul,节省部署、运维成本,并能够获取 EDAS 企业级的应用托管、服务治理、监控报警和应用诊断等能力。
    • Dubbo:Dubbo 框架下开发的应用只需添加依赖、修改很少的配置,即可托管到 EDAS。无需搭建 ZooKeeper 和 Redis,节省部署、运维成本,并能够获取 EDAS 企业级的应用托管、服务治理、监控报警和应用诊断等能力。
    • HSF:HSF 是在阿里巴巴内部广泛使用的分布式 RPC 服务框架。连通不同的业务系统,解耦系统间的实现依赖;统一了分布式应用中服务的发布/调用方式,从而帮助您方便、快速的开发分布式应用;提供或使用公共功能模块,并屏蔽了分布式领域中的各种复杂技术细节。

    6. 微服务管理

    EDAS 提供服务和服务间调用链的查询功能,帮助您管理分布式系统的中的每一个组件和服务。

    • 服务拓扑:通过拓扑图的形式直观的了解不同服务间的相互调用关系及相关性能数据。
    • 服务查询:在具体地域及命名空间下,查看应用中的 HSF、Spring Cloud 和 Service Mesh 服务。
    • 服务报表:以租户维度展示当前租户内所有应用的所有服务在近 24 小时内的运行时情况,包括服务调用量、调用耗时和调用出错次数。您在这个报表上可以一目了然的看到整体系统的服务之间的对比情况。
    • 调用链查询:通过设置查询条件,可以准确找出哪些业务性能较差,甚至异常。
    • 调用链详情:基于调用链查询的结果,查看慢业务或出错业务的调用链的详细信息,进行依赖梳理,包括识别易故障点、性能瓶颈、强依赖等问题;也可以根据链路调用比例、峰值 QPS 评估容量。

    7. 配置管理

    配置管理:EDAS 已经集成了应用配置管理 ACM。您可以在 EDAS 中使用 ACM 对应用配置进行集中管理和推送,还可以基于命名空间在不同环境间进行配置的隔离和同步。

    8. 应用监控

    • 应用监控:实时监控应用的 IaaS 层资源和服务的健康状态,帮助您快速发现、定位问题。同时支持开通高级监控(业务实时监控 ARMS)。
    • 日志管理:无需登录实例就可以查看实例上所部属的应用运行日志。当应用出现异常情况的时候,您可以通过查看日志来排查问题。
    • 实时日志:当应用出现异常情况的时候,您可以通过查看实时日志来排查 Pod 相关问题。
    • 通知报警:当某些资源使用过度时,通过短信与邮件的方式通知给相应的联系人及时处理线上问题。

    9. 应用诊断

    基于 HSF 框架开发的应用部署并运行在容器(EDAS-Container)中。EDAS 提供了基于容器的诊断功能,为您提供相应数据来诊断应用运行问题。

    • GC 诊断:包含 GC 和内存诊断两部分。
    1. GC:监控当前选择的应用实例发生 GC 的一些性能指标,同时还可以基于所选时间区间来分析当前实例的 GC 情况。帮助您初步判断应用中的某个实例的健康状态,即应用是不存在内存泄漏或者大对象、应用存在大对象、应用可能存在内存泄漏。
    2. 内存:提供应用实例中 Tomcat 容器所在 JVM 进程的堆 (heap)与非堆(non heap)的统计信息。
    • 类加载:提供实时的 JAR 包的加载情况。开发者有时会碰到应用中存在 JAR 包版本冲突的问题,此功能可以很直观的体现出相应的 JAR 加载的路径,从而简化此类问题排查的成本。
    • 连接器: Tomcat 连接器指的是 Tomcat 的 XML 配置中的<Connector />。可理解为每一个<Connector />的配置为一行拉取出来的信息。该视图提供最近十分钟之内对应连接器的运行情况。
    • 对象内存分布:选择系统类、Java 基本对象类和类加载相关。然后会基于选择的 3 个大类,以饼状图和列表的形式展示具体类的对象个数、占用空间,以及在占系统总内存的百分比。
    • 方法追踪:方法追踪采用 JVM 字节码增强的技术,对选中方法的所有方法调用增加必要的耗时与调用序列记录的增强,从而达到观看执行过程中的具体执行序列的目的。帮助您在应用运行时出现问题时,进行快速的问题排查。
    • 线程热点:线程热点包括获取线程快照和分析调用统计两个功能。
    • 获取线程快照
    • 向目标实例获取当前所有线程的栈帧,类似于 jstack 命令;获取到线程栈后,将过滤已经识别出的空闲的线程,如:HSF、Tomcat、GC 等;剩下的线程中,为避免过大的开销,默认只为您取回了30 个线程的数据。
    • 分析调用统计
    • 统计分析一段时间内应用中的方法调用,同时给出方法调用和调用关系(调用栈), 最终结果提供两种维度的视图(树状与火焰图状),同时自动高亮显示您的业务方法,让您迅速定位到耗时占比最多的业务方法的调用源头。
    • Druid 连接池监控:当应用的数据连接池采用 Druid 数据库的时候,EDAS 将提供数据连接池和 SQL 执行行为的监控。
    • Commons Pool:当应用或应用的类库中采用 Commons Pool2(2.0 版本)的时候(如 Redis 客户端 Jedis、Commons DBCP2 连接池),EDAS Commons Pool 监控组件将监控池的配置及使用情况。

    10. 组件中心

    组件中心围绕分布式、微服务体系,重点建设服务集成和整合能力,进而实现 PaaS 平台开放的生态体系。您需要借助组件,完成相关功能。

    微服务组件

    • 云服务总线 CSB:在 EDAS 控制台创建 CSB 专享实例,用来管理和控制目标环境内应用对外的服务开放,也可以引入外部服务并进行管理控制;开放 VPC 内的 EDAS 应用,用于在自有开发环境通过公网来测试联调阿里云 VPC 内的 EDAS 应用。
    • 业务实时监控服务 ARMS:业务实时监控服务 ARMS(Application Real-Time Monitoring Service)是一款阿里云应用性能管理(APM)类监控产品。借助 ARMS 可以迅速便捷地为企业构建秒级响应的应用监控能力。
    • 分布式任务管理 SchedulerX:SchedulerX 是一款分布式任务调度产品。它为您提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

    应用诊断组件

    目前 EDAS 提供的诊断组件包括方法跟踪、日志模块、性能分析模块、Druid 数据库连接池监控和 Apache Commons Pool 监控。这 5 个模块均提供对应用容器的在线诊断能力。

    11. 系统管理

    • 主子账号体系: 通过主子账号体系。您能够根据自己企业的部门划分、团队划分和项目划分在 EDAS 平台上建立对应的主子账号关系;同时,ECS 资源也以主子账号关系进行划分,便于用户进行资源的分配。
    • 角色与权限控制:应用的生命周期管理通常涉及研发、运维和机器资源等角色,不同的角色对于应用的管理操作各不一致。因此 EDAS 提供了角色和权限控制机制,方便用户为不同的账号定义各自的角色,并分配相应的权限。
    • 服务鉴权:为保证您每一次分布式调用的稳定与安全。在服务注册、服务订阅以及服务调用等每一个环节,都进行严格的服务鉴权。

    企业级分布式应用服务的产品优势

    EDAS 支撑了整个阿里巴巴99%以上的大规模应用系统,其中涵盖了包括会员、交易、商品、店铺、物流和评价在内的所有在线核心系统,在稳定性、可靠性等多个维度具有独特的优势。

    1. 更可靠

    • 阿里巴巴近10年使用与沉淀的核心技术产品
    • 支持阿里巴巴所有核心应用稳定运行
    • 历次双十一大促考验
    • 完善的鉴权体系保证每一次服务调用的安全可靠

    2. 更全面

    • 完善的 PaaS 平台支持应用生命周期的管理
    • 完整的服务治理解决方案管理分布式服务
    • 全面的应用诊断排查系统轻松定位故障根源
    • 线上压测,容量规划轻松获取线上机器运行性能指标和实时运行水位
    • 自动弹性伸缩从容应对突发流量高峰

    3. 更深入

    • 深入业务指标,实现全盘报表
    • 立体化多维度监控,实现全息排查
    • 链路跟踪洞察每一次分布式调用
    • 依赖分析剖析每一处系统瓶颈

    4. 更开放

    • 多款互联网中间件已经开源
    • 捐献 Apache 顶级项目,极佳的业界口碑
    • 无捆绑,可以轻松使用开源软件替换

    企业级分布式应用服务应用

    • 应用发布与管理

    在云环境中,应用发布与管理会变得十分复杂。本地开发完成的应用需要登录到每一台服务器进行发布和部署;后续还会有应用的重启,扩容等。服务器的不断增加对于运维人员将是一个极大的挑战。

    针对这个场景,EDAS 提供了一个可视化的控制台,无论集群规模多大,都可以在控制台上轻松地进行应用生命周期管理。

    • 构建分布式系统

    当集中式应用转变成分布式系统后,系统之间的相互可靠调用一直以来都是分布式架构的难题,比如网络通信,序列化协议设计等很多技术细节需要确定。

    EDAS 提供了一个高性能的 RPC 框架,能够构建高可用的分布式系统,系统地考虑各个应用之间的分布式服务发现、服务路由、服务调用以及服务安全等细节。

    • 透过数字来剖析系统运行状态

    应用开发完毕部署到生产环境之后,通常需要对应用运行状态进行一些监控,比如 CPU 使用率、机器负载、内存使用率和网路流量等。但此类基础监控通常满足不了业务需求,比如系统运行变慢却无法定位瓶颈所在,或者页面打开出错但是无法排查具体调用错误等。

    对此,EDAS 提供了一系列系统数据化运营组件,针对分布式系统的每一个组件和每一个服务进行精细化的监控和跟踪,建立数字化剖析系统,帮助用户精准的找到系统瓶颈所在。

    • 专有云开发运维系统

    随着互联网+的不断兴起,“科技+行业”的融合创新已经成为行业转型的核心策略。比如金融+科技造就了众安保险、天弘基金、网商银行等创新金融企业,塑造了行业转型的标杆。为了能够更好地支撑业务的创新,如何塑造企业的共享业务中台,如何支撑互联网架构下研发工程效率的提升,将会是企业遇到的核心挑战。面对这些挑战,阿里巴巴旗下一站式研发提效平台云效和阿里巴巴集团中间件EDAS联合推出了一整套研发平台支撑解决方案,初步实现DevOps闭环。

    EDAS DevOps 版是业内领先的面向企业的一站式研发效能平台,通过项目管理流程和专项提效自动化工具,真正实现24小时持续集成持续交付。

    相关名词解释

    • Ali-Tomcat:Ali-Tomcat 是 EDAS 中的服务运行时必须依赖的一个容器,主要集成了服务的发布、订阅、调用链追踪等一系列的核心功能,无论是开发环境还是运行时,均必须将应用程序发布在该容器中。
    • Dubbo:Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
    • EDAS:企业级分布式应用服务(Enterprise Distributed Application Service)。以阿里巴巴中间件团队多款久经沙场的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。EDAS 充分利用阿里云的资源管理和服务体系,引入阿里巴巴中间件整套成熟的分布式产品,帮助企业级客户轻松构建大型分布式应用服务系统。
    • EDAS Agent:EDAS Agent是 EDAS 中安装在用户 ECS 上,主要用于 EDAS 服务集群与部署在相应的 ECS 上的应用程序之间进行通信的 Daemon 程序,在运行的过程中主要承担应用管理、状态回报、信息获取等功能;同时也是 EDAS 控制台与用户应用程序之间信息沟通的主要桥梁。
    • EDAS RPC 服务:EDAS RPC 服务提供对 Dubbo 框架的支持。一个使用 Dubbo 框架开发的,并以 WAR 为部署方式的应用,可以无缝在 EDAS 平台进行应用的发布和管理,并使用所有 EDAS 所提供的服务治理和数据化运营功能。
    • EDAS 应用生命周期:应用是 EDAS 管理的基本单位,一个应用下面通常包含了多台机器。EDAS 提供了完整的应用生命周期管理机制,可以完成应用从发布到运行过程的全面管理,包括应用创建、部署、启动、回滚,扩容缩容和停止下线等操作。
    • EDAS 鹰眼监控系统:EDAS鹰眼监控系统用于分析分布式系统的系统调用、消息发送和数据库访问,从而精准发现系统的瓶颈和隐患。
    • EDAS 应用实例数限额:表示主账号及其名下的子账号所拥有的所有应用下面的实例数上限。付费账号在给主账号分配此限额的时候,其下的所有主账号的限额之和不能大于付费账号的总应用实例数限额。
    • IaaS 基础监控:EDAS 的监控功能之一,能够针对应用的运行状态,对机器的 CPU、内存、负载、网络和磁盘等基础指标进行详细的监控。
    • SchedulerX:SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品。用户在应用中依赖 SchedulerX-Client,并在 SchedulerX 控制台创建定时任务,进行相应的参数配置后,启动该应用就可以接收到定时任务的周期调度。SchedulerX-Server 集群为调度触发提供高可用性和高稳定性的保证,并且可以实现对用户客户端机器集群进行分布式调度。
    • 分布式链路跟踪:EDAS 鹰眼监控系统能够分析分布式系统的每一次系统调用、消息发送和数据库访问,从而精准发现系统的瓶颈和隐患。
    • 分布式配置管理:EDAS 提供的功能,将分布式系统的配置信息在 EDAS 控制台上进行集中管理,可以实时增加、修改、删除配置,并将配置更新在全局范围或者应用内部进行推送。
    • 分布式任务调度:任务调度服务允许用户配置任意周期性调度的单机或者分布式任务,并能对任务运行周期进行管理,同时提供对任务的历史执行记录进行查询。适用于诸如每天凌晨2点定时迁移历史数据,每隔5分钟进行任务触发,每个月的第一天发送系统月报等任务调度场景。
    • 服务鉴权:HSF 服务框架致力于保证用户每一次分布式调用的稳定与安全。在服务注册、服务订阅以及服务调用等每一个环节,都进行严格的服务鉴权。
    • 服务降级:与服务限流相反,每一个应用会调用许多外部服务,对于这些服务配置降级规则可以实现对劣质服务的精准屏蔽,确保应用自身能够稳定运行,防止劣质的服务依赖影响应用自身的服务能力。EDAS 从响应时间维度对降级规则进行配置,帮助用户在应对流量高峰时合理地屏蔽劣质依赖。
    • 服务调用监控:EDAS 的监控功能之一,能够针对应用的服务调用情况,对服务的 QPS、响应时间和出错率进行全方面的监控。
    • 服务限流:EDAS 可以对每一个应用提供的众多服务配置限流规则,以实现对服务的流控,确保服务能够稳定运行。限流规则可以从 QPS 和线程两个维度进行配置,帮助用户在应对流量高峰时,确保系统能以最大的支撑能力平稳运行。
    • 容量规划:将性能压测工作日常化之后,应用的负责人能够非常方便的看到应用的性能指标,并根据这些性能指标,结合当前系统运行水位,实现对应用精准的容量规划。
    • 容器诊室:即容器监控,包含对 Tomcat 容器的各项监控。
    • 自动化压测:独创的自动化压测工具模型,能够帮助客户将性能压测融入到日常生活中。值得一提的是,所有自动化压测的流量,全是生产环境真实流量,通过对服务权重的控制,在保证稳定的前提下,真正意义上做到线上压测。

    关于企业级分布式应用服务EDAS的指南:企业级分布式应用服务EDAS使用攻略

    (课程内容主要讲解企业级分布式应用服务EDAS相关技术和使用方法,能帮助学员快速掌握企业级分布式应用服务EDAS的使用,适合云计算开发者学习)

    阿里云开发者社区全面升级,一站式体验,用得更爽:(阿里云开发者社区首页

    展开全文
  • 阿里云大学:【分布式架构】企业级分布式应用服务EDAS使用攻略 本课程主要讲解企业级分布式应用服务EDAS相关技术和使用方法。 企业级分布式应用服务(EDAS,Enterprise Distributed Application Service)是企业级...
  • 分布式应用协调服务ZooKeeper

    千次阅读 2020-07-06 13:01:22
    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目 Zookeeper=文件系统+通知机制 Zookeeper从设计模式上来看是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数 ...
  • 关于企业级分布式应用服务EDAS的指南:企业级分布式应用服务EDAS使用攻略 (内容主要讲解企业级分布式应用服务EDAS相关技术和使用方法。) 基本介绍: 企业级分布式应用服务(Enterprise Distributed Application...
  • 分布式应用限流实现 题记 众所周知,现今分布式限流工具有许多,对于不同应用框架的支持也不尽相同,选择适合当前项目架构的限流技术才是最合适的。 分布式 什么是分布式 分布式系统(distributed system)是建立在...
  • 本文讲的是现代化的分布式应用正成为主流,【编者的话】本文作者是Docker市场营销副总裁 David Messina,他在本文中介绍了分布式应用的概念以及优势,正如David所说,我们正处在一个分布式应用的时代,2015年将会是...
  • zookeeper分布式应用程序协调服务

    千次阅读 2019-01-04 23:29:29
    ZooKeeper为分布式应用提供一致性服务,它的功能包括:配置维护/域名服务/分布式同步/组服务和分布式锁的服务等. ZooKeeper角色图 各服务器和Leader发生数据交换,Leader保证集群的数据同步 Follower...
  • 阿里云 JAVA 应用脚手架,快速搭建springboot基础应用、分层架构应用、分布式应用 start.aliyun.com 是基于 Spring-initializr 实现的工程脚手架生成平台,开发者们只需要添加一些注解和少量配置,就可以快速搭建...
  • ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、...
  • 分布式应用程序协调服务Zookeeper

    千次阅读 2017-08-30 10:42:16
    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、...
  • akka构建简单分布式应用

    万次阅读 2015-03-26 18:06:37
    http://www.cnblogs.com/hequn/articles/3764630.html当程序的要求...akka提供了remote actor用来构建分布式应用。一、remote actor1.Actor path actor的路径设计采用了类似URL的形式,即scheme://domain:port/path。
  • 而中小规模的分布式应用也已广泛出现在各个领域。未来,随着云计算向社会生活的方方面面去渗透,分布式应用将更加地普及。所以,任何一个要从事服务器端应用开发的人员,都有具备对分布式应用的基本认识。 本文将...
  • 一、作为一名工程师,在满足目前的工作的同事,需要做一些自我提升的工作。 在知乎上发现了一篇较好的分布式讲解的文章,再次转载分享一下。...Java分布式应用如何入门以及有哪些资料? 三、祝大家工作顺利...
  •  本课程主要讲解企业级分布式应用服务EDAS相关技术和使用方法。  企业级分布式应用服务(EDAS,Enterprise Distributed Application Service)是企业级互联网架构解决方案的核心产品,充分利用阿里云现有资源管理...
  • 第十章 分布式应用程序   使用网络的应用程序,叫分布式应用程序(distributedapplications),今天,已越来越重要。幸运的是,.NET BCL(Base Class Library,是 .NetFramework 下所有语言使用的类库) 和其他...
  • 第二部分 大型分布式Java应用与SOA SOA是一种服务集成的架构思想,超越具体的技术和架构,又涵盖具体的技术和架构。SOA的最常见的解决方案是SCA、ESB。 Apache Tuscany 是SCA的具体实现技术,Apache Tuscany 提供...
  • 利用RMI实现JAVA分布式应用

    千次阅读 2014-05-07 09:51:04
    利用RMI实现JAVA分布式应用 Java RMI (Remote Method Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在...
  • 第十一章 分布式应用程序

    千次阅读 2014-05-19 15:12:42
    第十一章分布式应用程序   使用网络的应用程序,称为分布式应用程序(distributed applications),现在,已经越来越重要。幸运的是,.NETBCL 和其他的库提供了许多结构,使得通过网络通信变得容易,进而,用 F# ...
  • 第四部分 分布式Java应用与Sun JDK类库 集合包 CollectionList接口: List(有序、可重复):的实现类有ArrayList、Vector、LinkList ArrayList、Vector底层是通过数组实现的,LinkList是通过双向链表实现的。Vector...
  • Shiro笔记八:分布式应用下的鉴权方式 文章目录Shiro笔记八:分布式应用下的鉴权方式单体应用下的鉴权方式shiro整合SpringBoot下自定义SessionId 单体应用下的鉴权方式 使用tomcat的广播方式,但是会引起广播风暴。...
  • 大型Java分布式应用纵横谈 2010-07-20 08:30 Alois Reitbauer dynatrace.com 字号:T | T 每个大型应用都在追求高可扩展性和高可用性驱动的,而且云计算的发展必将使分布式平台将来会更加流行。但对于...

空空如也

1 2 3 4 5 ... 20
收藏数 89,605
精华内容 35,842
关键字:

分布式应用